//包管理器的核心程式碼
var myModule = (function(){
//總模組
var modules = {};
function define(name,deps,impl){
for(var i=0;i<deps.length;i++){
//將模組依賴的路徑轉為依賴的資料
deps[i] = modules[deps[i]];
}
//將模組的路徑key和返回值value繫結到總模組modules中。
modules.name = impl.apply(impl,deps);
}
function get(name){
return modules[name];
}
return {
get: get,
define: define
}
})()
複製程式碼
//相當於define
myModule.define(`components/common`,[],function(){
var a = 23;
return {
a: a
}
})
myModule.define(`components/info`,[`components/common`],function(common){
function foo(){
var a = common.a;
console.log(a);
}
return {
foo: foo
}
})
var info = myModule.get(`components/info`); //相當於require/import
複製程式碼