模块创建主要是用到了setupModuleLoader函数.
setupModuleLoader函数
angular的模块是在依赖注入时必不可少的一个功能单元,所以要弄懂它的依赖注入,那必须讲它的模块设计。
总的来说通过angular.module的实现源码我们可以看到js闭包的强大功能。
1 | /* |
invokeLater
1 |
|
invokeLaterAndSetModuleName
从名字看来 很像懒加载模式, 返回函数用来稍后调用
把provider放入invokeQueue队列中
调用的时候如果factoryFunction是函数 那么就设置它的moduleName为当前模块名称1
2
3
4
5
6
7
8
9//比如controller是'$controllerProvider', 'register'
function invokeLaterAndSetModuleName(provider, method) {
//调用controller 后
return function(recipeName, factoryFunction) {
if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
invokeQueue.push([provider, method, arguments]);
return moduleInstance;
};
}
当调用var myModule = angular.module('myModule', []);
的时候 就返回moduleInstance了。