发表于: 2017-02-19 01:55:26

1 1233


今天完成的事情:

  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);
}
}  


返回列表 返回列表
评论

    分享到