大多数模块依赖加载器/ 管理器本质上都是将这种模块定义封装进一个友好的API
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<script type="text/javascript">
var MyModules=(function Manager(){
var modules={};
function define(name,deps,impl){
for(var i=0;i<deps.length;i++){
deps[i]=modules[deps[i]];
}
console.log(deps);
modules[name]=impl.apply(impl,deps)
}
function get(name) {
return modules[name];
}
return {
define:define,
get:get
}
})()
MyModules.define("bar",[],function (words) {
function hello(who){
console.log(words);
return "Let me introduce:"+who;
}
return {
hello:hello
}
})
MyModules.define("foo",["bar"],function(words){
var hungry="hippo";
function awesome(){
console.log(words);
console.log(bar.hello(hungry).toUpperCase());
}
return {
awesome:awesome
}
})
var bar=MyModules.get("bar");
var foo=MyModules.get("foo");
console.log(bar.hello("hippo"));
foo.awesome();
</script>
<body>
</body>
</html>