私はindex.jsを持っています:
exports.index = function(req, res){
db.courses.find(function(err, currentCourses) {
res.render('index', {
currentCourses: currentCourses
});
});
};
そして私のヒスイのテンプレートで:
tr
td #{currentCourses[0].start}
「Sun Sep 29 2013 00:00:00 GMT + 0100(BST)」の形式の日付です。
「2013年9月29日」にフォーマットするにはどうすればよいですか?
編集(Ed Hinchliffeのコメントの後):
-function prettyDate(dateString){
-var d = date.getDate(dateString);
-var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
-var m = monthNames[date.getMonth()];
-var y = date.getFullYear();
-return d+' '+m+' '+y;
-}
for course in currentCourses
tr
td #{prettyDate(course.start)}
残念ながら特に簡単ではありません。テンプレートの内部または外部で文字列をフォーマットする(そしてきれいな文字列を渡す)関数が必要です。
こんな感じ(JADE)
-function prettyDate(dateString){
//if it's already a date object and not a string you don't need this line:
-var date = new Date(dateString);
-var d = date.getDate();
-var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
-var m = monthNames[date.getMonth()];
-var y = date.getFullYear();
-return d+' '+m+' '+y;
-}
tr
td #{prettyDate(currentCourses[0].start)}
私の解決策は:
次のように momentjs をExpressアプリケーションのローカルに追加します。app.locals.moment = require('moment');
次に、どのjadeファイルでもモーメントを使用できます。span='(Created at: ' + moment(obj.createTime).format("YYYY/MM/DD") + ')'
Zhifeng H からの上記の解決策は私に正しい方向を与えました。残念ながら、app.locals.momentは機能しませんでした。
ただし、require('moment')
をテンプレート属性のオブジェクトに直接渡すこともできます。
var data = {
title: 'some Nice title',
updateDate: new Date(),
....,
moment: require( 'moment' )
};
次に、通常どおりデータオブジェクトをテンプレート関数に渡します。
var template = pug.compile( source );
var html = template( data );
ソースファイルの例:
doctype html
html
head
title= title
body
div= moment(updateDate).format('YYYY-MM-DD')
私は@Zhifeng Huに似たアプローチを取るのが好きですが、すべてをローカルに要求する代わりに、「require」を要求するだけで、必要に応じてテンプレートに物事を取り込むことができます。
app.use((req, res, next) => { res.locals.require = require; next() })
そして、ジェイド/パグで
- const moment = require('moment')
div Created at: #{moment(data.createdAt).fromNow()}
基本的には同じですが、requireのコードを使用するテンプレートに保持できます。