簡體   English   中英

如何在Meteor中管理名稱空間?

[英]How do you manage namespace in Meteor?

所以這是我的問題:目前,我在模板js文件中有許多與WEBRTC相關的功能。 我的目標是將這些函數放在單獨的文件中,例如,稱為webRTCWrapper.js,並在模板中調用這些函數而無需使用全局變量。

我認為我必須使用名稱空間,對嗎? 如果是這樣,您如何使用它們?

編輯:對於任何有興趣的人,這正是我在尋找的東西:

http://themeteorchef.com/snippets/using-the-module-pattern-with-meteor/

您可以使用具有全局對象及其內部函數的通用模式。

Greetings = {
   hello: function(name) { return "Hello "+name+" how are you?"; }
}

然后您可以在模板助手中調用它:

Template.GreetingsTemplate.helpers({
   sayHello: function() { return Greetings.hello('Maxence'); }
})

請注意流星中文件的加載順序,首先會加載lib文件夾中的所有文件。 如果遇到未定義“問候語”對象的問題,則其原因是尚未加載該文件。

編輯:您可以重復使用相同的模式在不同的文件中添加更多功能(您可以使用App = App || {},但是在Chrome中會拋出錯誤)。

App = (typeof App === 'undefined')? {} : App;
App.someFunction = function(){};

甚至,如果您使用underscore.js:

App = (typeof App === 'undefined')? {} : App;
_.extend(App, {
  someFunction: function(){}
});

.meteor/目錄下創建一個名為packages/ .meteor/目錄。 您可以創建一個導出單個對象/功能的包。 在命令行上,使用meteor create --package <yourpackagename>meteor add <yourpackagename>您可以編輯js文件以添加名稱空間。

MyNamespace = {};
MyNamespace.myFunction = function () { };

然后,在package.js中,只需導出該名稱空間。

api.export('MyNamespace');

從現在開始,使用另一個文件中的代碼的常規方法是遍歷全局文件(服務器和客戶端)。 正如Joao所建議的那樣,您可以創建自己的全局App變量,以在其中存儲或更通用的全局MODULE變量(與Joao基本相同的解決方案,但有解釋)。

但是隨着ES2015支持的到來,我們很快就會有一個正式的模式來實現這一目標。 但是,由於1.2 還不支持導入/導出語法:

Note, The ES2015 module syntax (import/export) is not supported yet in Meteor 1.2.

如果您想更早地開始使用這些功能,我建議您使用此軟件包 ,這是一個臨時解決方案,可以填補當前的進出口空白,流星團隊的開發人員目前正在尋找一種優雅的解決方案來支持此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM