原生angular中的provider和$injector主要作用是:
- 注册组件(controller directive service)
- 解决组件间的依赖关系
- 初始化组件
接下来提供简单的实现
12345678910111213141516171819202122232425262728var Provider={//保存所有组件对应的工厂函数_providers:{},//注册组件_register: function(name,fn) {this._providers[name]=fn;},//要来注册serviceservice: function(name,fn) {return this._register(name+Provider.SERVICE_SUFFIX,fn);},//要来注册directivedirective: function(name,fn) {return this._register(name+Provider.DIRECTIVE_SUFFIX,fn);},//要来注册controller//初始化controller缓存里保存的是工厂函数,可以多次初始化同一个controllercontroller: function(name,fn) {return this._register(name,function() {return fn;})}}
上面实现了3种组件的注册过程,接下来实现组件初始化及解决依赖
|
|