模块机制

大多数模块依赖加载器/管理器本质上都是将这种模块定义封装进一个友好的API。

var MyModules = (function(){
var modules = {};
function define(name,deps,impl){
for(var i =0;i<deps.length;i++){
deps[i] = modules[deps[i]];
}
modules[name] = impl.apply(impl,deps);
}
function get(name){
return modules[name];
}
return {
define : define,
get : get
}
})();

 

MyModules.define('bar',[],function(){
function hello(who){
return 'Let me introduce: ' + who;
}
return {
hello : hello
}
});


MyModules.define('foo',['bar'],function(bar){
var hungry = 'hippo';
function awesome(){
console.log(bar.hello(hungry).toUpperCase());
}
return {
awesome : awesome
}
});

var foo = MyModules.get("foo");
foo.awesome();

 

这段代码的核心是modules[name] = impl.apply(impl,deps),为了模块的定义引入了包装函数(可以传入任何依赖),并且将返回值,也就是模块的API,储存在一个根据名字来管理的模块列表中。

转载于:https://www.cnblogs.com/jsmiao/p/4522969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值