50

views/custom.ejs で MomentJS を使用するには、正しい方法は何ですか?

  1. サーバ側

    ルート/インデックスなどは簡単に使用できrequire('moment');、正常に機能します。

  2. サーバー側 (EJS ビュー)

    views/custome.ejs のようなものが<% var m = require('moment'); %>機能しない

テンプレートエンジンとしてEJSでExpressJSを使用しています。

4

10 に答える 10

11

私は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()
}
于 2012-10-09T08:05:49.523 に答える
3

関数を作成して 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 ファイルにモーメントを追加することを忘れないでください

于 2013-04-02T15:53:20.753 に答える
0

また、必要に応じて、ユーザー、構成、瞬間など、テーマレイヤーに必要なものを追加できるミドルウェアを追加することもお勧めです。

// 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();
});
于 2016-03-08T12:25:13.753 に答える