大多数模块依赖加载器/ 管理器本质上都是将这种模块定义封装进一个友好的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>