2013-01-14 67 views
15

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

为了清楚起见,我希望日期格式化为服务器端,然后作为呈现字符串发送到客户端。

那么如何在Jade模板中提供JavaScript库?


我也许应该注意,我用这与快递:

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

有一些选项我必须通过在那里莫名其妙地告诉它的库中包括什么?


刚刚发生在我身上,这与传递本地变量绝对没有什么不同。例如,

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

但是我不想把它传递给每个视图;如果我忘记了它,我的应用会因为在主布局中使用而中断。那么我如何确保它始终可用?

回答

19

助手从快车3移除或4

请使用app.locals

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

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

因此,您可以在任何视图文件中使用app.localsJadeEJS;

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

This answer让我指出了正确的方向,尽管关于dynamicHelpers的文档似乎已经神秘地从Express文档中消失了。

此外,我并不需要一个动态助手,只是一个静态(无法访问请求/响应)。所以我把在黑暗中刺在什么将它称为:

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

就像一个魅力!我现在所有的视图都可以使用moment

+14

帮助者的概念已从Express 3中删除。“静态帮助程序”的含义是['app.locals'](http://expressjs.com/api.html#app.locals)(' app.locals.moment = require('moment');')。对于'.dynamicHelpers'使用中间件。 – elmigranto