Nodejs EJS帮助函数?
有没有办法将辅助函数注册到EJS模板,以便可以从任何EJS模板中调用它们? 所以,它应该像这样工作。
app.js
ejs.helpers.sayHi = function(name) { return 'Hello ' + name; });
index.ejs
<%= sayHi('Bob') %>
是的,在Express 3中,你可以添加助手到app.locals
。 例如:
app.locals.somevar = "hello world"; app.locals.someHelper = function(name) { return ("hello " + name); }
这些将在您的意见,如下所示:
<% somevar %> <% someHelper('world') %>
注意:Express 2.5的帮手不同。
我还有另一个解决scheme,我认为它有一些优点:
- 不要监视你的代码导出filter。
- 访问任何方法,而不需要全部导出。
- 更好的ejs使用(无|pipe道)。
在你的控制器上:
exports.index = function(req, res) { // send your function to ejs res.render('index', { sayHi: sayHi }); } function sayHi(name) { return 'Hello ' + name; };
现在你可以在你的ejs中使用sayHi函数:
<html> <h1><%= sayHi('Nice Monkey!') %></h1> </html>
您可以使用此方法将模块发送到ejs,例如,您可以发送“时刻”模块来格式化或parsingdate。
这里有一个示例filter…我不熟悉助手。
var ejs = require('ejs'); ejs.filters.pluralize = function(num, str){ return num == 1 ? str : str+'s'; }; <%=: items.length | pluralize:'Item' %>
如果它是1,将产生“Item”,或者如果0或> 1产生“Items”
app.js
ejs.filters.sayHi = function(name) { return 'Hello ' + name; });
index.ejs
<%=: 'Bob' | sayHi %>
我在用:
在helpers / helper.js中
var func = { sayhi: function(name) { return "Hello " + name; }, foo: function(date) { //do somethings } }; module.exports = func;
在路由器中:
router.get('/', function(req, res, next) { res.render('home/index', { helper: require('../helpers/helper'), title: 'Express' }); });
在模板中:
<%= helper.sayhi("Dung Vu") %>
祝你好运