簡體   English   中英

如何在流星中正確導入js文件

[英]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(){

}

定義一個變量/功能而不需要通過關鍵字varfunction是不是好的做法。 有哪些可能的選擇?

最好的選擇是使用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.

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