Here to bardzo dobry artykuł na temat różnych "Wzorów modułów" w JavaScript. Istnieje bardzo ładna sekcja, w której można rozszerzyć moduły lub przestrzenie nazw i zachować stan prywatny między plikami. Oznacza to, że kod w osobnych plikach będzie wykonywany sekwencyjnie i odpowiednio powiększy przestrzeń nazw po jej wykonaniu.
Nie badałem dokładnie tej techniki, więc nie ma obietnic ... ale tu jest podstawowa idea.
dashboard.js
(function(window){
var dashboard = (function() {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
window.Dashboard = dashboard;
})(window);
dashboard.ajax.js
var dashboard = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function() {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function() {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
my.ajax = function(){
// ...
}
return my;
}(dashboard || {}));
dashboard.retrieveContent.js
var dashboard = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function() {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function() {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
my.retrieveContent = function(){
// ...
}
return my;
}(dashboard || {}));
Nazwa przestrzeni nazw coś inaczej? –
Sądzę, że jest to jedna opcja, jednak miałem nadzieję, że uwzględnię wszystko pod jedną przestrzenią nazw, ponieważ myślałem, że będzie bardziej uporządkowana w ten sposób. –