在Meteor的模板上使用NPM包

时间:2013-11-25 02:20:25

标签: javascript node.js meteor npm momentjs

我使用moment添加了mrt add moment包来格式化Meteor模板中客户端的日期/时间。但是我似乎能够在服务器端使用它,但不能在模板助手中使用它。

如何在模板助手中使用momentjs

server / main.js(Works!)

var moment = Meteor.require('moment');
var t = moment( '2013-11-24 16:18:06' ).format('HH:mm:ss');
console.log(t);

client / main.js(不起作用)

Template.fruits.myTime = function() {
    var moment = Meteor.require('moment');
    var t = moment( '2013-11-24 16:18:06' ).format('HH:mm:ss');
    return t;
}

错误:

Uncaught ReferenceError: require is not defined 

我尝试使用Npm.require('moment'),但却出错:Uncaught ReferenceError: Npm is not defined

发送错误的

Meteor.require('momemt')Uncaught TypeError: Object #<Object> has no method 'require'

2 个答案:

答案 0 :(得分:2)

如果使用

添加时刻
mrt add moment

然后它可以直接作为函数使用:

moment()

通过查看其package.js文件,您始终可以了解如何使用特定包。看看package.js in moment package

...
if(api.export) {
  api.export('moment');
}
...

我注意到通过注册全局车把帮助来使用时刻非常方便:

Handlebars.registerHelper('nice-date', function(date){
    return moment(date).fromNow();
});

直接在模板中使用它:

<template name="test">
  {{nice-date createdAt}}  // 5 seconds ago
</template>

答案 1 :(得分:0)

如果添加Meteor包,则永远不需要使用require()。你是如何添加时刻的?使用命令mrt add moment

通过Atmosphere上的包(https://atmosphere.meteor.com/package/moment

根据该页面,一旦添加了包,您应该会看到一个moment全局变量,您只需调用它:

var oneMonentPlease = moment();

您无需在任何位置放置任何require语句。以上这条线应该可行。

由于Moment是一个客户端库,因此您不一定需要将其添加为Meteor包或Npm模块。您只需下载http://momentjs.com/downloads/moment.min.js并将其保存在/lib文件夹中即可。这样做,它将自动为客户端和服务器提供,并且上面的代码行将起作用。