newland.js的Ioc实现

concat( files ), function(){
         //取得放在前面的拦截器
         var intercepters = [].splice.call(arguments, 0, inter.length);
         //取得放在后面的控制器
         var controllers = arguments;
         //进行控制反转,构建我们所需要的控制器子类与它的实例
         files.forEach(function(el, i){
             //mac下的路径为     app/controllers/doc_controller.js
             //window下的路径为  app\\controllers\\doc_controller.js
             var match = el.replace(/\\/g,"/").match(rcname);
             var controller = controllers[i];
             controller.inherit =  $.base_controller
             var klass = $.factory(controller);
             $.controllers[ match[1] ] = new klass;
         });
         resource_ready( intercepters )
     });
 });

需要说明一下的是,newland.js分成两大块,app目录下的模块是用户自建的文件或系统指令下建立的模块(下称app模块),system目录下的模块则是辅助app模块运行用的。需要用户动手的app模块越简单就越好!任何复杂的类最好不要用,就算用都交由框架去处理,去new 实例;任何复杂的功能都做用钩子的形式,或通俗地说,是回调函数的形式,交由框架去调度;所有不确定的功能都做成自定义事件形式,由框架或框架的另外加载的模块去fire。诸如此类,所有耦合就松绑了,得以最大限度地适应需求的变化。

 
 
标签: javascript
原文地址:https://www.cnblogs.com/Leo_wl/p/2635519.html