it-swarm.com.de

Nodejs EJS-Hilfefunktionen?

Gibt es eine Möglichkeit, Hilfsfunktionen in EJS-Vorlagen zu registrieren, damit sie von jeder EJS-Vorlage aus aufgerufen werden können? Also sollte es ungefähr so ​​funktionieren.

app.js

ejs.helpers.sayHi = function(name) {
    return 'Hello ' + name;
});

index.ejs

<%= sayHi('Bob') %>
23
Farzher

Ja, in Express 3 können Sie app.locals Helfer hinzufügen. Ex:

app.locals.somevar = "hello world";

app.locals.someHelper = function(name) {
  return ("hello " + name);
}

Diese sind in Ihren Ansichten wie folgt zugänglich:

<% somevar %>

<% someHelper('world') %>

Hinweis: Express 2.5 hat anders geholfen.

29
dylanized

Ich habe eine andere Lösung, und ich denke, es hat einige Vorteile:

  • Polieren Sie nicht Ihren Code, der Filter exportiert.
  • Greifen Sie auf jede Methode zu, ohne sie alle exportieren zu müssen.
  • Bessere EJS-Nutzung (keine | Pipes).

Auf Ihrem Controller:

exports.index = function(req, res) {
// send your function to ejs
    res.render('index', { sayHi: sayHi });
}

function sayHi(name) {
    return 'Hello ' + name;
};

Jetzt können Sie die sayHi-Funktion in Ihren Ejs verwenden:

<html>
    <h1><%= sayHi('Nice Monkey!') %></h1>
</html>

Sie können diese Methode verwenden, um Module an ejs zu senden. Sie können beispielsweise das Modul "Moment" senden, um Datumsangaben zu formatieren oder zu analysieren.

20
robertomarin

Hier ist ein Beispielfilter ... Ich kenne keine Helfer.

var ejs = require('ejs');

ejs.filters.pluralize = function(num, str){
    return num == 1 ? str : str+'s';
};


 <%=: items.length | pluralize:'Item' %>

Erzeugt "Item", wenn es 1 ist, oder wenn 0 oder> 1, "Items" erzeugt

app.js

ejs.filters.sayHi = function(name) {
    return 'Hello ' + name;
});

index.ejs

<%=: 'Bob' |  sayHi %>
3
chovy

Ich benutze:

In helpers/helper.js

var func = {
    sayhi: function(name) {
        return "Hello " + name;
    }, 
    foo: function(date) {
        //do somethings
    }    
};
module.exports = func;

Im Router:

router.get('/', function(req, res, next) {
    res.render('home/index', {
        helper: require('../helpers/helper'),
        title: 'Express'
    });
});

In der Vorlage:

<%= helper.sayhi("Dung Vu") %>

viel Glück

1
Dung Vu