|
@@ -3,135 +3,177 @@
|
|
|
* 开发用
|
|
|
*/
|
|
|
|
|
|
-;(function(global) {
|
|
|
- var _modules = {},
|
|
|
- // 记录模块执行顺序的key列表
|
|
|
- keyList = [],
|
|
|
- loaded = {}
|
|
|
-
|
|
|
- global.inc = {
|
|
|
- base: './src',
|
|
|
-
|
|
|
- config: function(options) {
|
|
|
- this.base = options.base || ''
|
|
|
- },
|
|
|
-
|
|
|
- record: function(key) {
|
|
|
- keyList.push(key)
|
|
|
- },
|
|
|
-
|
|
|
- use: function(id) {
|
|
|
- return require(id)
|
|
|
- },
|
|
|
-
|
|
|
- remove: function(node) {
|
|
|
- node.parentNode.removeChild(node)
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- global.define = function(id, deps, f) {
|
|
|
- var argLen = arguments.length,
|
|
|
- module = null
|
|
|
-
|
|
|
- switch (argLen) {
|
|
|
- case 1:
|
|
|
- f = id
|
|
|
- id = keyList.shift()
|
|
|
- break
|
|
|
-
|
|
|
- case 2:
|
|
|
- if (typeof id === 'string') {
|
|
|
- f = deps
|
|
|
+( function ( global ) {
|
|
|
+
|
|
|
+ var _modules = {},
|
|
|
+ // 记录模块执行顺序的key列表
|
|
|
+ keyList = [],
|
|
|
+ loaded = {};
|
|
|
+
|
|
|
+ global.inc = {
|
|
|
+
|
|
|
+ base: '',
|
|
|
+
|
|
|
+ config: function ( options ) {
|
|
|
+
|
|
|
+ this.base = options.base || '';
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ record: function ( key ) {
|
|
|
+ keyList.push( key );
|
|
|
+ },
|
|
|
+
|
|
|
+ use: function ( id ) {
|
|
|
+
|
|
|
+ return require( id );
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ remove: function ( node ) {
|
|
|
+
|
|
|
+ node.parentNode.removeChild( node );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ global.define = function ( id, deps, f ) {
|
|
|
+
|
|
|
+ var argLen = arguments.length,
|
|
|
+ module = null;
|
|
|
+
|
|
|
+ switch ( argLen ) {
|
|
|
+
|
|
|
+ case 1:
|
|
|
+ f = id;
|
|
|
+ id = keyList.shift();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ if ( typeof id === 'string' ) {
|
|
|
+
|
|
|
+ f = deps;
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ f = deps;
|
|
|
+ id = keyList.shift();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ module = _modules[ id ] = {
|
|
|
+
|
|
|
+ exports: {},
|
|
|
+ value: null,
|
|
|
+ factory: null
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ loadDeps( f );
|
|
|
+
|
|
|
+ if ( typeof f === 'function' ) {
|
|
|
+
|
|
|
+ module.factory = f;
|
|
|
+
|
|
|
} else {
|
|
|
- f = deps
|
|
|
- id = keyList.shift()
|
|
|
+
|
|
|
+ module.value = f;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- break
|
|
|
}
|
|
|
|
|
|
- module = _modules[id] = {
|
|
|
- exports: {},
|
|
|
- value: null,
|
|
|
- factory: null,
|
|
|
- }
|
|
|
+ function require ( id ) {
|
|
|
|
|
|
- loadDeps(f)
|
|
|
+ var exports = {},
|
|
|
+ module = _modules[ id ];
|
|
|
|
|
|
- if (typeof f === 'function') {
|
|
|
- module.factory = f
|
|
|
- } else {
|
|
|
- module.value = f
|
|
|
- }
|
|
|
- }
|
|
|
+ if ( module.value ) {
|
|
|
|
|
|
- function require(id) {
|
|
|
- var exports = {},
|
|
|
- module = _modules[id]
|
|
|
+ return module.value;
|
|
|
|
|
|
- if (module.value) {
|
|
|
- return module.value
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- exports = module.factory(require, module.exports, module)
|
|
|
+ exports = module.factory( require, module.exports, module );
|
|
|
|
|
|
- if (exports) {
|
|
|
- module.exports = exports
|
|
|
- }
|
|
|
+ if ( exports ) {
|
|
|
|
|
|
- module.value = module.exports
|
|
|
- module.exports = null
|
|
|
- module.factory = null
|
|
|
+ module.exports = exports;
|
|
|
|
|
|
- return module.value
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- function loadDeps(factory) {
|
|
|
- var deps = null,
|
|
|
- pathname = location.pathname,
|
|
|
- uri = location.protocol + '//' + location.host
|
|
|
+ module.value = module.exports;
|
|
|
+ module.exports = null;
|
|
|
+ module.factory = null;
|
|
|
|
|
|
- pathname = pathname.split('/')
|
|
|
+ return module.value;
|
|
|
|
|
|
- if (pathname[pathname.length - 1] !== '') {
|
|
|
- pathname[pathname.length - 1] = ''
|
|
|
}
|
|
|
|
|
|
- uri += pathname.join('/')
|
|
|
+ function loadDeps ( factory ) {
|
|
|
|
|
|
- if (typeof factory === 'function') {
|
|
|
- deps = loadDepsByFunction(factory)
|
|
|
- } else {
|
|
|
- // 未处理object的情况
|
|
|
- return
|
|
|
- }
|
|
|
+ var deps = null,
|
|
|
+ pathname = location.pathname,
|
|
|
+ uri = location.protocol + '//' + location.host;
|
|
|
+
|
|
|
+ pathname = pathname.split( '/');
|
|
|
+
|
|
|
+ if ( pathname[ pathname.length - 1 ] !== '' ) {
|
|
|
+
|
|
|
+ pathname[ pathname.length - 1 ] = '';
|
|
|
|
|
|
- for (var i = 0, len = deps.length; i < len; i++) {
|
|
|
- var key = deps[i]
|
|
|
+ }
|
|
|
+
|
|
|
+ uri += pathname.join( '/' );
|
|
|
|
|
|
- if (loaded[key]) {
|
|
|
- continue
|
|
|
- }
|
|
|
+ if ( typeof factory === 'function' ) {
|
|
|
|
|
|
- loaded[key] = true
|
|
|
+ deps = loadDepsByFunction( factory );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ // 未处理object的情况
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ for ( var i = 0, len = deps.length; i < len; i++ ) {
|
|
|
+
|
|
|
+ var key = deps[ i ];
|
|
|
+
|
|
|
+ if ( loaded[ key ] ) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ loaded[ key ] = true;
|
|
|
+
|
|
|
+ document.write( '<script>inc.record("'+ key +'")</script>' );
|
|
|
+ document.write( '<script src="'+ uri + inc.base + '/' + key +'.js" onload="inc.remove(this)" data-id="'+ key +'"></script>' );
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- document.write('<script>inc.record("' + key + '")</script>')
|
|
|
- document.write(
|
|
|
- '<script src="' + uri + inc.base + '/' + key + '.js" onload="inc.remove(this)" data-id="' + key + '"></script>'
|
|
|
- )
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- function loadDepsByFunction(factory) {
|
|
|
- var content = factory.toString(),
|
|
|
- match = null,
|
|
|
- deps = [],
|
|
|
- pattern = /require\s*\(\s*([^)]+?)\s*\)/g
|
|
|
+ function loadDepsByFunction ( factory ) {
|
|
|
+
|
|
|
+ var content = factory.toString(),
|
|
|
+ match = null,
|
|
|
+ deps = [],
|
|
|
+ pattern = /require\s*\(\s*([^)]+?)\s*\)/g;
|
|
|
+
|
|
|
+ while ( match = pattern.exec( content ) ) {
|
|
|
+
|
|
|
+ deps.push( match[ 1 ].replace( /'|"/g, '' ) );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return deps;
|
|
|
|
|
|
- while ((match = pattern.exec(content))) {
|
|
|
- deps.push(match[1].replace(/'|"/g, ''))
|
|
|
}
|
|
|
|
|
|
- return deps
|
|
|
- }
|
|
|
-})(this)
|
|
|
+} )( this );
|