ヘルパー関数を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') %>
注:Express2.5ではヘルパーの動作が異なります。
これには別の解決策があり、いくつかの利点があると思います。
コントローラ上:
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に送信できます。たとえば、「moment」モジュールを送信して、日付をフォーマットまたは解析できます。
これがフィルターの例です...私はヘルパーに精通していません。
var ejs = require('ejs');
ejs.filters.pluralize = function(num, str){
return num == 1 ? str : str+'s';
};
<%=: items.length | pluralize:'Item' %>
1の場合は「アイテム」を生成し、0または>1の場合は「アイテム」を生成します
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") %>
幸運を