node.js - node - ejs<%
¿Funciones de ayuda Nodejs EJS? (4)
¿Hay una manera de registrar las funciones de ayuda en las plantillas EJS, para que puedan llamarse desde cualquier plantilla EJS? Por lo tanto, debería funcionar algo como esto.
app.js
ejs.helpers.sayHi = function(name) {
return ''Hello '' + name;
});
index.ejs
<%= sayHi(''Bob'') %>
Aquí hay un filtro de ejemplo ... No estoy familiarizado con los ayudantes.
var ejs = require(''ejs'');
ejs.filters.pluralize = function(num, str){
return num == 1 ? str : str+''s'';
};
<%=: items.length | pluralize:''Item'' %>
Producirá "Elemento" si es 1, o si 0 o> 1 produce "Elementos"
app.js
ejs.filters.sayHi = function(name) {
return ''Hello '' + name;
});
index.ejs
<%=: ''Bob'' | sayHi %>
Estoy usando:
En helpers / helper.js
var func = {
sayhi: function(name) {
return "Hello " + name;
},
foo: function(date) {
//do somethings
}
};
module.exports = func;
En el enrutador:
router.get(''/'', function(req, res, next) {
res.render(''home/index'', {
helper: require(''../helpers/helper''),
title: ''Express''
});
});
En plantilla:
<%= helper.sayhi("Dung Vu") %>
buena suerte
Sí, en Express 3 puedes agregar ayudantes a app.locals
. Ex:
app.locals.somevar = "hello world";
app.locals.someHelper = function(name) {
return ("hello " + name);
}
Estos serían accesibles dentro de sus puntos de vista de esta manera:
<% somevar %>
<% someHelper(''world'') %>
Nota: Express 2.5 hizo ayudantes de manera diferente.
Tengo otra solución para esto, y creo que tiene algunas ventajas:
- No contamine sus filtros de exportación de código.
- Accede a cualquier método sin necesidad de exportarlos a todos.
- Mejor uso de ejs (no | pipe).
En su controlador:
exports.index = function(req, res) {
// send your function to ejs
res.render(''index'', { sayHi: sayHi });
}
function sayHi(name) {
return ''Hello '' + name;
};
Ahora puedes usar la función sayHi dentro de tus ejs:
<html>
<h1><%= sayHi(''Nice Monkey!'') %></h1>
</html>
Puede usar este método para enviar módulos a ejs, por ejemplo, podría enviar un módulo de ''momento'' para dar formato o analizar fechas.