說我有以下模塊,跨多個文件分割既能夠延伸skillet
:是否有可能讓變量只顯示「模塊」及其擴展名?
File1.js:
(function(){
var privateVar1 = 0;
var privateFunction1 = function() {
//function definiton
};
skillet.fry() = function() {
//fry it
//matchbox.light();
};
})(window.skillet = window.skillet || {});
File2.js:
(function(){
var privateVar2 = 0;
var privateFunction2 = function() {
//some private function
};
skillet.grillIt = function() {
//grill It
//matchbox.strike(); <-- Shared with File1.js
};
})(window.skillet = window.skillet || {});
是否有可能共享變量/對象如matchbox
由兩個模塊共享沒有綁定到window.matchbox
或window.skillet.matchbox
?即知名度的matchbox
應該只適用於File1.js和File2.js,並且不能在其他地方訪問。我懷疑是否有可能,但有沒有辦法在JavaScript中實現這樣的行爲?如果不是,這方面的最佳做法是什麼?
(它更像具有共享事件總線一組相關模塊中,而不暴露全局該總線)
我還沒有使用requirejs之前。你能否詳細說明前兩行的含義?封裝是如何實現的? – PhD 2012-07-19 20:06:29
Require.js是一個JavaScript模塊加載器,它遵循[異步模塊定義(AMD)範例](http://requirejs.org/docs/whyamd.html)。通俗地說,這是一種在javascript的#include/import/using類型語法中定義模塊依賴關係的方法。 我包裝了File1.js的define()調用指定它取決於模塊的「火柴盒」,一旦它完成非同步加載,它將作爲參數「火柴盒」傳遞給函數。使用這種方法,不需要將您的火柴盒模塊註冊到全局名稱空間。 – GreatTall1 2012-07-20 16:16:21