我正在嘗試使用Require.js製作外部庫。感謝Require.js not compiling single js file correctly和Require.js (almond.js) Timing Off我已經想出瞭如何讓所有內容「編譯」到單個優化/構建的文件中,並且該單個文件起作用。只有一個問題:我無法弄清楚如何爲我的庫設置一個變量。如何從Require.js中導出全局變量?
假設我想讓我的圖書館創建window.Foo
。我試圖用一個main.js
文件有:
window.Foo = require([], function() {
window.Foo = {someValue: 1};
return {someValue: 2};
});
和一個包裝末端片段:
return require('main');
}));
正如你所看到的,我試圖從內明確設置window.Foo
暴露美孚全球空間都require調用,並通過結束片段的返回值從外部顯式設置它。但是沒有一個工作;如果我在加載構建文件後立即添加console.log(window.foo)
,它會告訴我window.Foo
未定義。
如果我做了一個window.setTimeout window.Foo
最終確實設置(到{someValue: 1}
),但我不能很好地期待我的用戶必須用超時來包裝他們所有的代碼。任何人都可以請解釋我如何可以得到window.Foo
一旦我的優化/構建文件加載被定義?
是在庫中使用RequireJS有什麼特別的原因嗎?支持RequireJS和CommonJS可能會更好,並且可以像現在大多數圖書館一樣支持全局設置。 – jgillich
我們的主代碼庫使用了Require,而這個外部庫使用了幾個代碼庫。爲了使外部庫充分利用我們主代碼庫中的現有代碼,它需要能夠「說出」需求......儘管一旦它獲得代碼,它就不需要任何要求,這就是爲什麼我要試圖讓用戶看起來像是一個完全獨立的庫。 – machineghost