mpe*_*pen 15 node.js express pug
我刚安装了moment.js ; 现在我想访问moment
我的Jade模板.例:
.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")
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我希望将日期格式化为服务器端,然后将其作为呈现的字符串发送到客户端.
那么如何在Jade模板中创建一个JavaScript库呢?
我应该注意到我正在使用Express:
var server = express.createServer();
server.configure(function () {
server.set('view engine', 'jade');
Run Code Online (Sandbox Code Playgroud)
是否有一些选项我必须以某种方式告诉它包含哪些库?
刚刚发现,这与传递局部变量完全没什么不同.例如,
server.get('/', function (req, res) {
res.render('index', {
locals: {
moment: require('moment')
}
});
});
Run Code Online (Sandbox Code Playgroud)
但我不想把它传递给每一个观点; 如果我忘了它,我的应用程序会破坏,因为它在主要布局中使用.那么如何确保它始终可用?
lij*_*nma 20
帮助从Express 3或4中删除.
请使用 app.locals
app.locals.moment = require('moment');
Run Code Online (Sandbox Code Playgroud)
该app.locals
对象是一个JavaScript对象.添加到其中的属性将作为应用程序中的局部变量公开.
所以你可以app.locals
在任何视图文件中使用,Jade
或者EJS
;
moment().format('YYYY-MM-DD h:mm:ss');
Run Code Online (Sandbox Code Playgroud)
这个答案让我指出了正确的方向,尽管文档dynamicHelpers
似乎从Express文档中神秘地消失了.
此外,我不需要动态助手,只需要一个静态助手(无法访问请求/响应).所以我在暗处捅了一下它的名字:
server.helpers({
moment: require('moment')
});
Run Code Online (Sandbox Code Playgroud)
奇迹般有效!moment
现在我的所有观点都可以使用.
归档时间: |
|
查看次数: |
4944 次 |
最近记录: |