2012-05-08 109 views
7

我對如何在Meteor客戶端代碼中使用npm模塊感到困惑。如何在流星客戶端使用npm模塊?

我理解像FS模塊只會工作的服務器端,但在這種情況下,我想用一個簡單的文本模塊,這樣的顯示非常日期:

https://github.com/ecto/node-timeago

我試着下/公共安裝模塊/ node_modules, 和它下面從SO這些指令的服務器端的偉大工程:( How do we or can we use node modules via npm with Meteor?

Meteor.startup(function() { 
    var require = __meteor_bootstrap__.require 
    var timeago = require('timeago') 
    console.log(timeago(new Date())) 
    ... 

Howev呃它不會在客戶端代碼工作:

if (Meteor.is_client) { 
    var require = __meteor_bootstrap__.require 
    var timeago = require('timeago') 
    console.log(timeago(new Date())) 
    ... 

Uncaught ReferenceError: __meteor_bootstrap__ is not defined" 

服務器端在這種情況下,對我來說有點無用的,因爲我想在客戶端呈現的文本。

+0

http://stackoverflow.com/q/17068813/586086中的方法適用於我。 –

回答

6

我不相信你需要使用服務器端版本。只有服務器端使用npm的東西,順便說一句,把它放在你的/ public /中。誰知道,也許你可以在你的/ public /中調用它,嘗試一下。或者試試這個。

使用類似的jQuery timeago.js

放入/客戶/或類似的東西/客戶/ JS

創建/client/helpers.js或一些這樣的。

使用把手幫手。

Handlebars.registerHelper('date', function(date) { 
    if(date) { 
    dateObj = new Date(date); 
    return $.timeago(dateObj); 
    } 
    return 'a long long time ago in a galaxy far away'; 
}); 

從模板調用'日期'句柄輔助函數的示例。

{{ date created }} 

哪裏日期是handebars助手,並創建是從流星/ mongo收集出來的日期。

請參閱github Britto項目。這就是我得到這段代碼片段並在我寫的聊天室應用程序中使用它的地方。工作正常。

有一些其他漂浮在那裏。轉到madewith.meteor.com並仔細閱讀一些項目的來源。

+0

謝謝隊友!所以問題的總結是: * npm模塊不是最佳的客戶端 *手把助手是你的朋友 * jQuery插件可以使用和引用自動,如果他們在應用程序目錄 – 7zark7

+0

更正「應用程序/客戶端目錄」 - 你會看到「ReferenceError:jQuery沒有定義」,否則。 – 7zark7

+0

是的,它是爲我工作的,我使用了JonathanKingston的代碼中的Britto示例...還有另一個項目也有一個很好的人類可讀的日期...搜索maddewith.meteor.com項目 –