
...<script src="jquery.js" type="text/javascript"></script><script src="jquery.plugin.js" type="text/javascript"></script><script src="view.js" type="text/javascript"></script><script src="widget.js" type="text/javascript"></script><script src="i18n.js" type="text/javascript"></script><script src="app.js" type="text/javascript"></script><script src="strings.js" type="text/javascript"></script>...

//define namesapcesvar App = {}; App.Views = {}; App.Views.Home = {}; App.Views.Home.Config = {}; //get some property of deep namespace var myColor = App.Views.Home.Config.backgroundColor;
if(App && App.HasThisProp && App.HasThisProp.AndThisProp && App.HasThisProp.AndThisProp.SomeWantedNamespace && App...........)var closer = App.HasThisProp.AndThisProp.SomeWantedNamespace;var myVar = closer.myVar;var myOtherVar = closer.myOtherVar;
Module is a piece of software that contains everything that is necessary to accomplish a particular task.
A module is a part of a program. Programs are composed of one or more independently developed modules that are not combined until the program is linked. A single module can contain one or several routines.

var counter = (function(){var count = 0; //privatereturn {get: function(){return count;},add: function(){return count++;},reset: function(){count = 0;}};}());
var counter = (function(){ var count = 0;function get(){ return count; }function add(){ return count++; }function reset(){ count = 0; }function add2(){return add(), add();}return { get: get,add: add,add2: add2,reset: reset };}());
The Asynchronous Module Definition API specifies a mechanism for defining modules such that the module and its dependencies can be asynchronously loaded.
This is particularly well suited for the browser environment where synchronous loading of modules incurs performance, usability, debugging, and cross-domain access problems.
define(id?, dependencies?, factory*); define('counterModule', function(){
var count = 0;
return {
add: function(){
return count++;
},
reset: function(){
count = 0;
},
get: function(){
return count;
}
}
});
module id is usually left empty
define('viewModule', ['counterModule'], function(counter){var views = {};return { register: function(viewName, viewData){ counter.add();views[viewName] = viewData;},count: function(){return counter.get();}.... }; });
define('counterModule', function(){var staticCount = 0;return function Counter() {var count = 0;return { add: function(){staticCount++;return count++; }, reset: function(){staticCount -= count;count = 0; }, get: function(){ return count; },getGlobalCount: function(){return staticCount;} };}});
define('otherModule', ['counterModule'], function(Counter){ var views = {}; var counter = new Counter();return {... register: function(viewName, viewData){ counter.add(); views[viewName] = viewData; }, count: function(){ return counter.get(); } ... }; });
Already in use in :
Node js
Titanium
And more
*there are ways to do it in the browser.
require('module.name');exports.someApi = {};module;
exports.add = function(a, b){return a + b;}exports.subtract = function(a, b){ return a - b; }
var Math = require('Math');Math.add(1, 2); // 3Math.subtract(1, 2); // -1
exports.myClass = function(){ this.startTime = Date.now(); }exports.myClass.prototype.elapsedTime = function(){ return Date.now() - this.startTime; }
var someObject = {someProperty: {}};var someVar = someObject.someProperty;someVar = function(){};console.log(someObject.someProperty); // {}
module.exports = function(){
this.startTime = Date.now();
}
module.exports.prototype.elapsedTime = function(){
return Date.now() - this.startTime;
}define(function(require, module, exports){var otherModule = require('otherModule');exports = {add:function(x, y){return x + y;}}});
(function (root, factory) {if (typeof define === 'function' && define.amd) { // AMD define('myModule', ['pkg/A', 'pkg/B'], function (A, B) { return factory(A, B); });} else if (typeof exports === 'object') { // Node.js module.exports = factory(require('pkg/A'), require('pkg/B'));} else { // Browser globals root.myModule = factory(root.A, root.B); }}(this, function (B, B) { var myModule = {}; return myModule; }));


<!doctype html>
<html>
<head>
<title>Sexy HTML</title>
<link rel="stylesheet" href="css/sexy.css"/>
</head>
<body>
<script data-main="main" src="require.js"></script>
</body>
</html>require(['app'], function (app) {app.start();}, function (err) {require(['logger'], function (logger) {logger.error('App Failed To Load Restarting!');location.reload();});});
// define a module that load content dynamically define(['require', 'login', 'text!template'], function (require, login, template) { login.open(template);login.onOK = function () {//load some scripts lazilyrequire(['app'], function (app) {login.resolve('success');app.start();});}//handle failed login here...return login.promise();} )
requirejs.config({enforceDefine : true,baseUrl:'js/myApp' paths : {handlebars:'lib/handlebars',someModule:'modules/someModule',jquery : ['http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min','lib/jquery']} });
requirejs.config({ shim: {'app.drawCirclePlugin': ['app']'drawSVGPlugin': {deps: ['app'],exports: 'drawSVG'} } });
requirejs.config({ map: { 'some/newmodule': {'dependency': 'dependency.version.2'},'some/oldmodule': {'dependency': 'dependency.version.1'} } });
var require1 = requirejs.config({context: "version1",baseUrl: "app/lib/version/1"});var require2 = requirejs.config({context: "version2",baseUrl: "app/lib/version/2"});
r.js -o path/to/build.js
define(['a', 'b'], function (a, b) {});
require(['a', 'b']);
var mods = someCondition ? ['a', 'b'] : ['c', 'd'];require(mods);
({
baseUrl: ".",
name: "main",
out: "main-built.js",
paths: {
jquery: "empty:"
}
})module 'math' {
export function sum(x, y) {
return x + y;
}
export var pi = 3.141593;
}import { sum, pi } from "math";sum(pi,pi);
import $ from "jquery";import { encrypt, decrypt } from "crypto";import { encrypt as enc } from "crypto";
System.baseURL = '/lib';//load modulesSystem.import(['js/test1', 'js/test2'], function(test1, test2) { console.log('test1.js loaded', test1); console.log('test2.js loaded', test2); }, function(err) { console.log('loading error'); });//load a script from urlSystem.load('js/libs/jquery-1.7.1.js', function() { var $ = System.global.jQuery; console.log('jQuery loaded', $); $('body').css({'background':'blue'}); });