Far*_*her 27 ejs node.js express
有没有办法将助手函数注册到EJS模板,以便可以从任何EJS模板调用它们?所以,它应该像这样工作.
app.js
ejs.helpers.sayHi = function(name) {
return 'Hello ' + name;
});
Run Code Online (Sandbox Code Playgroud)
index.ejs
<%= sayHi('Bob') %>
Run Code Online (Sandbox Code Playgroud)
dyl*_*zed 31
是的,在Express 3中你可以添加助手app.locals.例如:
app.locals.somevar = "hello world";
app.locals.someHelper = function(name) {
return ("hello " + name);
}
Run Code Online (Sandbox Code Playgroud)
这些可以在您的视图中访问,如下所示:
<% somevar %>
<% someHelper('world') %>
Run Code Online (Sandbox Code Playgroud)
注意:Express 2.5对帮助者的帮助不同.
小智 20
我有另一个解决方案,我认为它有一些优点:
在你的控制器上:
exports.index = function(req, res) {
// send your function to ejs
res.render('index', { sayHi: sayHi });
}
function sayHi(name) {
return 'Hello ' + name;
};
Run Code Online (Sandbox Code Playgroud)
现在你可以在你的ejs中使用sayHi函数:
<html>
<h1><%= sayHi('Nice Monkey!') %></h1>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以使用此方法将模块发送到ejs,例如,您可以发送'moment'模块来格式化或解析日期.
这是一个示例过滤器...我对助手不熟悉。
var ejs = require('ejs');
ejs.filters.pluralize = function(num, str){
return num == 1 ? str : str+'s';
};
<%=: items.length | pluralize:'Item' %>
Run Code Online (Sandbox Code Playgroud)
如果为 1,则生成“Item”;如果为 0 或 > 1,则生成“Items”
应用程序.js
ejs.filters.sayHi = function(name) {
return 'Hello ' + name;
});
Run Code Online (Sandbox Code Playgroud)
索引.ejs
<%=: 'Bob' | sayHi %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17298 次 |
| 最近记录: |