require.jsapp
var es = {}; es.each = function(arr, fn) { var i = 0; while(arr.length !== i) { fn(i, arr[i]); i++; } }; var count = 0; var cache = {}; var module = {}; module.exports = null; var arr = []; var require = function(m, cb) { while(m[0]) { var js = document.createElement('script'); js.src = m[0]; js.id = m[0]; js.charset = 'utf-8'; document.querySelectorAll('head')[0].appendChild(js); count++; js.onload = function() { count--; if (count === 0) { es.each(arr, function(i, cb) { cb(require, module.exports, module); arr[i] = module.exports; }); cb.apply(null, arr) } }; m.shift(); } } var define = function(cb) { var id = document.currentScript.id; cache[id] = { status: 'loading', callback: cb }; arr.push(cb); }; require(['a.js', 'b.js'], function(a, b) { console.log(a);// aaa console.log(b);// bbb });
a.jsui
define(function(require, exports, module) { module.exports = 'aaa'; });
b.jscode
define(function(require, exports, module) { module.exports = 'bbb'; });