(function(window, undefined){ // include ./js/YourNamespace.js var YourNamespace = (function () { // - return {}; }()); // include ./js/YourNamespace/SomeObject.js YourNamespace.SomeObject = (function () { // - return function () { }; }()); // Cleanup delete window.$; delete window.jQuery; }(window));
(function (window) { var ModuleA = {}; // Export window.ModuleA = ModuleA; }(window));
ModuleA module actively exported var ModuleC = (function (window) { var ModuleC = {}; // Export return ModuleC; }(window));
ModuleC module is passively exported (function (window, $) { console.log($); }(this, jQuery));
JQuery module actively imported (function (window) { console.log(ModuleC); }(this));
ModuleC module is passively imported // Uses ModuleC, $ (function (window) { var ModuleA = { a: 'ModuleA.a', b: 2, d: function () { console.log(ModuleC.c === 'ModuleC.c'); console.log(typeof $ === 'function'); } }; // Export window.ModuleA = ModuleA; }(window));
// Uses ModuleA var ModuleC = (function (window) { var ModuleC = { a: 1, b: 2, c: 'ModuleC.c', d: function () { console.log(ModuleA.a === 'ModuleA.a'); } }; // Export return ModuleC; }(window));
// Uses ModuleA, ModuleC ModuleA.c(); window.setTimeout(function () { ModuleC.d(); ModuleA.d(); }, 0);
// (function(window, undefined){ // var Medium = { wait: function (varName, callback) {/* - */}, ready: function (varName, varValue) {/* - */} }; // A, (function (ModuleC, $) { // .. ModuleC , Medium.wait('ModuleC', function (value) {ModuleC = value;}); (function (window) { var ModuleA = { a: 'ModuleA.a', b: 2, d: function () { console.log(ModuleC.c === 'ModuleC.c'); console.log(typeof $ === 'function'); } }; // Export window.ModuleA = ModuleA; }(window)); } (undefined, $)); // C, (function (ModuleA) { var ModuleC = (function (window) { var ModuleC = { a: 1, b: 2, c: 'ModuleC.c', d: function () { console.log(ModuleA.a === 'ModuleA.a'); } }; // Export return ModuleC; }(window)); // .. ModuleC , , window.ModuleC = ModuleC; // C - Medium.ready('ModuleC', ModuleC); } (ModuleA)); // , (function (ModuleA,Module) { // Uses ModuleA, ModuleC ModuleA.c(); window.setTimeout(function () { ModuleC.d(); ModuleA.d(); }, 0); } (ModuleA,Module)); // - try { delete window.$; delete window.jQuery; delete window.ModuleA; delete window.Module; } catch (e){ // IE window.$ = undefined; window.jQuery = undefined; window.ModuleA = undefined; window.Module = undefined; } // ! }(window));
// (function(window, undefined){ // __defineSetter__, ES5 set, watch window.unwatch && window.unwatch('ModuleA'); window.unwatch && window.unwatch('Module'); try { delete window.ModuleA; delete window.Module; } catch (e){ // IE window.ModuleA = undefined; window.Module = undefined; } // var maxIntervalId = window.setInterval(function (){}, 1e10); var maxTimeoutlId = window.setTimeout(function (){}, 1e10); while (maxIntervalId--) { window.clearInterval(maxIntervalId); } while (maxTimeoutlId--) { window.clearTimeout(maxTimeoutlId); } // // ... }(window));
var ninjs = new (require('../Ninjs.js').Ninjs); ninjs .add({ // ModuleA file: './files/ModuleA.js', // ModuleC ModuleB imports: ['ModuleC', 'ModuleB'], // ModuleA exports: 'ModuleA' }) .add({ // ModuleB file: './files/ModuleB.js', // ModuleA jQuery imports: 'ModuleA', // ModuleB exports: 'ModuleB' }) .add({ // ModuleD file: './files/ModuleD.js', // ModuleA, ModuleB and ModuleC imports: ['ModuleA', 'ModuleB', 'ModuleC'] // }) .add({ // ModuleC file: './files/ModuleC.js', // ModuleA, ModuleB imports: ['ModuleA', 'ModuleB'], // ModuleC exports: 'ModuleC', // ModuleC , forceExports: 'ModuleC' }) // .cleanup('ModuleA', 'ModuleB', 'ModuleC', '$', 'jQuery') // STDOUT .print(true); // , // .print(false);
Source: https://habr.com/ru/post/117229/
All Articles