如何在Jade模板中包含服务器端脚本?

我刚安装了moment.js ; 现在我想访问我的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") 

为了清楚起见,我希望将date格式化为服务器端,然后作为呈现的string发送给客户端。

那么如何在Jade模板中创build一个JavaScript库?


我可能应该注意到,我正在使用Express:

 var server = express.createServer(); server.configure(function () { server.set('view engine', 'jade'); 

是否有一些选项,我不得不通过它来告诉它包含哪些库?


刚刚发生在我身上,这是绝对没有比传入局部variables不同。 例如,

 server.get('/', function (req, res) { res.render('index', { locals: { moment: require('moment') } }); }); 

但是我不想把这个看成是每一个观点。 如果我忘了它,我的应用程序会因为在主布局中使用而中断。 那么如何确保它始终可用?

快递3或4中删除帮助者。

请使用app.locals

 app.locals.moment = require('moment'); 

app.locals对象是一个JavaScript对象。 添加到它的属性将在应用程序中作为局部variables显示。

所以你可以在任何视图文件, JadeEJS使用app.locals ;

 moment().format('YYYY-MM-DD h:mm:ss'); 

这个答案让我指出了正确的方向,尽pipedynamicHelpers的文档似乎已经神秘地从Express文档中消失了。

此外,我不需要一个dynamic的帮手,只是一个静态的(无法访问请求/响应)。 所以我在黑暗中刺了一刀:

 server.helpers({ moment: require('moment') }); 

奇迹般有效! 现在我的所有观点都可以得到。