我刚刚安装了moment.js;现在我想在我的Jade模板中访问moment
。例如:
.main-content
.container
.access-details.clearfix
.left
div Logged in: <b>#{user.name}</b>
div Access Lvl: #{user.accessLevel}
.right
div= moment().format("dddd, MMMM Do YYYY, h:mm:ss a")
要清楚,我希望将日期格式化为服务器端,然后将其作为呈现的字符串发送到客户端。
那么如何在Jade模板中创建一个JavaScript库?
我应该注意到我正在使用Express:
var server = express.createServer();
server.configure(function () {
server.set('view engine', 'jade');
是否有一些选项我必须以某种方式告诉它包含哪些库?
刚刚发现,这与传递局部变量完全没什么不同。如,
server.get('/', function (req, res) {
res.render('index', {
locals: {
moment: require('moment')
}
});
});
但我不想把它传递给每一个观点;如果我忘了它,我的应用程序会破坏,因为它在主要布局中使用。那么如何确保它始终可用?
答案 0 :(得分:20)
从Express 3或4中删除助手。
请使用app.locals
app.locals.moment = require('moment');
app.locals
对象是一个JavaScript对象。添加到其中的属性将作为应用程序中的局部变量公开。
因此,您可以在任何视图文件app.locals
或Jade
中使用EJS
;
moment().format('YYYY-MM-DD h:mm:ss');
答案 1 :(得分:8)
This answer让我指出了正确的方向,尽管dynamicHelpers
上的文档似乎从Express文档中神秘地消失了。
此外,我不需要动态帮助程序,只需要一个静态辅助程序(无法访问请求/响应)。所以我在暗处捅了一下它的名字:
server.helpers({
moment: require('moment')
});
像魅力一样! moment
现在可以在我的所有观看中使用。