[英]How to properly import js files in meteor
我喜歡保持我的javascript文件盡可能小並使用架構模式 。 這通常意味着在服務,控制器,模型,視圖等中拆分我的js文件。
Meteor自動加載所有js文件。 但是,任何js文件中定義的每個變量都將作為該文件的局部變量處理。 為了能夠訪問它們,我必須像這樣定義它們:
//global
my_global_function = function(){
}
//not global
var my_global_function = function(){
}
//not global
function my_global_function(){
}
定義一個變量/功能而不需要通過關鍵字var
或function
是不是好的做法。 有哪些可能的選擇?
最好的選擇是使用ES2015模塊。
Meteor本身不支持模塊,但有些軟件包可以提供這種支持。
例如, universe:modules 。
使用模塊,您可以導入和導出一些變量/函數/類/等:
// module1.import.js
import alertSomething from './module2'
Meteor.startup(() => {
alertSomething();
});
// module2.import.js
export default function alertSomething() {
alert('something');
}
universe:modules
不是唯一的解決方案,還有其他類似的項目。 我喜歡這個特別的https://github.com/thereactivestack/kickstart-simple 。 它用WebPack替換Meteor的構建系統,並在使用React時啟用熱重新加載。
更新:
Meteor現在支持ES6模塊
由於您似乎對正確的建築設計非常感興趣,我建議您查看Meteor包。 本質上,您必須在package.js
配置中聲明任何全局公開的變量,這是您想要的:盡可能少的“泄漏”。 在一個軟件包中,你可以稍微草率一些,但你仍然可以使用var
(並且沒有var
)來在包中進行更細粒度的控制。 這可以在Meteor中立即完成。
您可以在包文檔中找到大多數信息。 最簡單的入門方法是使用meteor create --package [package-name]
創建一個包。 這設置了一個基本結構。 api.export
函數控制公開的變量。 請參閱此處的 doc。
此外,請注意在內在的Meteor架構設計之上添加不必要的層。 模板是視圖,服務器端方法是服務等。只有一些你沒有開箱即用的東西,所以通常你會添加像天文或SimpleSchema這樣的東西。
添加太多自己的架構可能會以你與Meteor框架本身的戰斗結束......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.