Here es un artículo muy bueno sobre varios "Patrones de módulos" en JavaScript. Hay una pequeña sección muy agradable sobre cómo puede aumentar módulos o espacios de nombres y mantener un estado privado entre archivos. Es decir, el código en archivos separados se ejecutará secuencialmente y aumentará adecuadamente el espacio de nombres después de que se ejecute.
No he explorado esta técnica a fondo así que no hay promesas ... pero aquí está la idea básica.
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 || {}));
Nombre del espacio de nombres algo diferente? –
Supongo que es una opción, sin embargo, esperaba incluir todo en un espacio de nombres, ya que pensé que sería más ordenado de esa manera. –