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