您的位置:首页 > 移动开发

EXTJS4如何使用单个app程序来进行大型软件开发

2012-05-26 00:04 816 查看
大型软件模块众多,extjs4提供的MVC的设计模式可以叫程序员的设计更清晰.

但是问题来了,因为就一个app,那么他加载的时候会把所有controller加载进来,那么controller

会把用到的mode和view全加载进来,这样一来程序在初始化的时候就会加载整个系统的js文件

系统一旦规模变大必然会导致运行速度降低,系统使用臃肿.加载时间长等一系列问题.

例如:

Ext.application({

launch: function() {//当前页面已经完全载入调用

.........

},

controllers: [

'Users',

'ROLE'

'DD'

'JX'

'JMS'

等等........

]

});

那么如何做到用单个app来完成分布式加载呢?

先来看看MVC的原理:

在ExtJs4.0核心包中关于app就2个文件

controller是application的一部分,初始化application的时候连带这会把相应的controller初始化.

然后controller再连带初始化view和mode,store

那我们的思路就从这里开始,我们的想法是如果我们开始的时候就加载一个controller(也就是一套功能)

而这套功能的目的就是用来初始化别的controller把其动态加载到这个唯一的app中不就是ok了吗?

问题:如何才能把外面的controller加载到已经初始化好了的app中呢?

查看controller源码我发现他有一个属性可以通过controller找到他所在的app

在初始化事件的方法中源码调用了this.application 那么说我们可以通过controller找到他对用的application

我们再看看application的源码发现application中的controller是一个集合并且getController: function(name)

这个方法写的很微妙

不仅仅完成了通过名字返回controller的功能还完成了信controller穿件的功能,(这个有点想我们pcat教程中用的工厂和缓存)

这样一来我就只需要完成下面代码可以打工搞成了

var c = this.application.getController("Users2");

c.init();

好了接下来就可以使用这个controller加载进来的一切view和mode资源了

切记:init()方法一点要手动调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: