在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并将其保存在/lib
文件夹中。 这样做,它会自动提供给客户端和服务器,上面的代码行将工作。