views/custom.ejs で MomentJS を使用するには、正しい方法は何ですか?
サーバ側
ルート/インデックスなどは簡単に使用でき
require('moment');
、正常に機能します。サーバー側 (EJS ビュー)
views/custome.ejs のようなものが
<% var m = require('moment'); %>
機能しない
テンプレートエンジンとしてEJSでExpressJSを使用しています。
私はejsを使用してサーバー側で瞬間を使用しています。fromNow を返す ejs フィルター関数を作成しました。
npm install moment
./views/page.ejs
<span class="created_at"><%=: item.created_at | fromNow %></span>
./routes/page.js
var ejs = require('ejs')
, moment = require('moment');
ejs.filters.fromNow = function(date){
return moment(date).fromNow()
}
関数を作成して app.locals にアタッチできます。サーバー側の ejs テンプレートで使用します。
あなたのルートファイルであなたは
../routes/page.js
var ejs = require('ejs')
, moment = require('moment');
app.locals.fromNow = function(date){
return moment(date).fromNow();
}
../views/page.ejs
<span class="created_at"><%= fromNow(item.created_at) %></span>
package.json ファイルにモーメントを追加することを忘れないでください
また、必要に応じて、ユーザー、構成、瞬間など、テーマレイヤーに必要なものを追加できるミドルウェアを追加することもお勧めです。
// config, user, moment to the theme layer
app.use(function (req, res, next) {
// grab reference of render
var _render = res.render;
// override logic
res.render = function (view, options, fn) {
// extend config and continue with original render
options = options || {};
options.config = config;
options.moment = moment;
if (req.user && req.user.toJSON) {
options.user = req.user.toJSON();
}
_render.call(this, view, options, fn);
}
next();
});