发表于: 2017-02-19 01:55:26
1 1232
今天完成的事情:
1.修改了下萝卜多前台首页的布局
2.看了下依赖注入原理
明天计划的事情:
看一下闭包方面的知识
遇到的问题:
看了依赖注入原理,感觉理解的不深刻
收获:
依赖注入的优点:耦合度降低,可扩展性更强。
angular实现依赖注入的步骤:1.得到模块的依赖项 2.查找依赖项所对应的对象 3.执行时注入
1.得到模块的依赖项,js实现核心api是Function.protype.tostring,对一个函数执行toString,他会返回函数的源码字符串,这样我们就可以通过正则匹配的方式拿到这个函数的参数列表。
function extracArga(fn){
var arga=fn.toString().match(/^[^\(]*\(\s*([^\)]*)\)/m);
return args[1].split(',')
}
2.查找依赖项所对应的对象
function creatTnjector(cache){
this.cache=cache;
}
angular.module=function(){
module={};
injector=new creatInjector(modules);
return{
injector:injector,
factory:function{name,fn}{
modules [name.trim()]=this.injector.invoke(fn);
return this;
}
}
}
3.执行时注入
最后通过fn.apply方法执行上下文,和依赖列表传入函数并执行:
createInjector.protype={
invoke:funtion(fn,self){
args=[];
argsString.forEach(function(val){
args.push(this.cache[val.trim()]);
},this);
return fn.apply(self,args);
}
}
评论