在meteor的模板上使用NPM包

我已经在Meteor的模板中使用mrt add moment格式的date/时间来添加moment包。 不过,我似乎能够在服务器端使用它,但不能在模板助手中使用它。

我如何在模板助手中使用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); 

客户端/ 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' Meteor.require('momemt') Uncaught TypeError: Object #<Object> has no method 'require'

如果你添加时刻使用

 mrt add moment 

那么它可以直接作为函数使用:

 moment() 

你可以通过查看package.js文件来了解如何使用特定的包。 看看package.js中的时刻包 :

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

我注意到通过注册全局的handlebars helper来使用它非常方便:

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

并直接在模板中使用它:

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

如果你添加一个Meteor包,你永远不需要使用require() 。 你是怎么添加Moment的? 通过大气包( https://atmosphere.meteor.com/package/moment )使用命令mrt add moment

根据该页面,一旦添加了包,您应该看到一个全局variables,您可以简单地调用:

 var oneMonentPlease = moment(); 

您不需要在任何地方放置任何require声明。 上面的行应该只是工作。

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