废话不说,直接上代码:
//由于require依赖程序时要取模块依赖,所以所有的依赖应该有一个共同的载体,也就是对象,可以通过对象访问到这些依赖
let factories = {
}
function define(mod, dependences, factory){
factory.dependences = dependences;
factories[mod] = factory;
}
function require(mods, callback){
let result = mods.map(function(mod){
let factory = factories[mod];
let dependences = factory.dependences;
let exports;
//当依赖又有其他依赖时,递归调用require
require(dependences, function(){
exports = factory.apply(null, arguments)
})
return exports
})
callback.apply(null, result)
}
define('name', ['tel'], function(tel){
return '珠峰'+tel
})
define('age', [], function(){
return 9
})
define('tel', [], function(){
return '13698563957'
})
require(['name','age'], function(name, age){
console.log(name,age)
})