我想使用類似requireJS
到modularise我的JavaScript的應用程序,但是,有一個特別的要求,我想見見我還沒有想通了:封裝requireJS及其模塊
我足夠滿意require
和define
在全球空間,但是,我不希望模塊,我導入require
全球可訪問(即他們應該可以訪問我的應用程序,但不能在同一頁上運行的其他應用程序)。
在我看來,如果我打電話define('moduleA', function() { ... });
我可以通過require
函數訪問該模塊 - 全局 - 。它可能不會佔用全局空間本身的一個變量,或者附加到window
,但它仍然感覺不好,因爲其他應用程序確實不應該能夠看到我的內部模塊(更不用說潛在的命名衝突等) ,我可以使用contexts
來規避這種情況嗎?)。
這似乎是從命名空間模塊退後一步,並將它們全部包含在構建時的一個大型私有化函數中。
我可以有我自己的私人版本require
但我的模塊(在不同的文件中)將無法訪問define
。
我錯過了什麼,或者我只需要忍受這一點? (或者,也可以運行優化器將所有內容燒寫到一個文件中 - 感覺就像我只是命名空間模塊一樣,如果我這樣做的話,根本就不用打擾requireJS
)。
包裝require/define很容易,但然後我的模塊無法看到它們(從其他文件加載時)。 – Rhys
@Ryven看到我的編輯。 – idbehold