如何在哈巴狗模板中运行moment.js?

Ric*_* Xu 1 node.js momentjs pug

我有一个控件,它将呈现带有对象数组的哈巴狗模板。

res.render('template.pug', {objects: objects}); 
Run Code Online (Sandbox Code Playgroud)

在模板中,我将遍历数组,并将日期修改为local date/time.我想调用moment函数实现的日期。

是否可以在pug模板中调用moment函数?还是有更好的解决方案?

Dav*_*d R 5

您可以像这样moment.js在现有objects阵列中导入/传递库,

var objects= {
  someExitingKey1: 'Some value 1',
  someExitingKey2: 'Some value 2',
  ........,
  ........,
  ........,
  moment: require('moment')
};
Run Code Online (Sandbox Code Playgroud)

而且template.pug您可以利用当下的库函数,例如

doctype html
html
  head
    title= title
  body
    span= moment(someDateValue).format('YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 不,不是在每个对象中。您应该像这样通过`res.render('template.pug',{objects:objects,moment:require('moment')}))传递`moment`;最好使用CDN将“ moment”导入到您的pug / html文件中,然后简单地使用“ moment” (2认同)

Gra*_*ham 5

在您的app.js(或server.js或启动节点应用程序的任何版本)中,添加以下行:

app.locals.moment = require('moment');
Run Code Online (Sandbox Code Playgroud)

这将使所有的你的哈巴狗模板作为可用的时刻moment。当然,还要确保已运行npm install moment --save将其添加到package.json并下载了该软件包。