2013-11-25 185 views
1

我已經使用mrt add moment添加了moment軟件包來格式化Meteor模板中客戶端的日期/時間。不過,我似乎能夠在服務器端使用它,但不能在模板助手中使用它。在流星的模板上使用NPM軟件包

如何在模板助手中使用momentjs

服務器/ main.js(工程!)

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'

回答

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> 
0

,你永遠不應該需要使用require()。你是怎麼添加Moment的?通過Atmosphere(https://atmosphere.meteor.com/package/moment)上的軟件包,使用命令mrt add moment

每那個頁面,一旦包被添加你應該會看到一個moment全局變量,你可以簡單地調用:

var oneMonentPlease = moment(); 

你不需要把任何require陳述的任何地方。上面的行應該工作。

由於Moment是客戶端庫,您不一定需要將其添加爲Meteor包或Npm模塊。您可以下載http://momentjs.com/downloads/moment.min.js並將其保存在您的/lib文件夾中。這樣做,它會自動提供給客戶端和服務器,上面的代碼行將工作。