我們喜歡RequireJS和AMD在開發過程中,我們可以編輯模塊,在瀏覽器中重新加載,並立即看到結果。但是當需要將我們的模塊連接成單一文件進行生產部署時,顯然必須有AMD加載器,無論該加載器是RequireJS本身還是其較小的合作伙伴「杏仁」,如下所述:爲什麼級聯的RequireJS AMD模塊需要加載器?
http://requirejs.org/docs/faq-optimization.html#wrap
我的困惑是:爲什麼裝載機是必需的?除非你有非常特殊的情況使得你需要在你的模塊內部調用require()
調用,否則看起來一系列的AMD模塊可以在沒有加載器的情況下連接在一起。最簡單的例子可能是一對模塊,如下所示。
ModA.js:
define([], function() {
return {a: 1};
});
ModB.js:
define(['ModA'], function(A) {
return {b : 2};
});
鑑於這兩個模塊,似乎一個連接符可以簡單地產生下面的文本,而不是負擔生產服務器或瀏覽器帶有RequireJS或Almond所需的額外帶寬或計算。
我想,產生一個級聯器(和我使用字形引號«»以示出從兩個模塊的片段上面已插入):
此,到目前爲止我可以看,會正確地重現AMD的語義,至少有額外的粘連JavaScript。有沒有這樣的連接器?如果沒有,我是否會傻傻地想我應該寫一個 - 是否真的有很少的代碼庫由簡單和乾淨的模塊組成,用define()
編寫,並且在那之後不需要進一步調用require()
進行異步取代碼?
你是如何解決這個問題的?我發現使用杏仁,min文件大3k,然後連接文件(9K vs 6K)。 – Naor