Welcome

首页 / 脚本样式 / ExtJS / extjs中动态加载机制研究

extjs中动态加载机制研究2014-05-27昨天我们team对于extjs的动态加载机制做了些深入研究,这里先share下controller加载的结果。

以service registry portlet为例:

比如,在 liferay-portlet.xml中定义了:

所以我们的js的入口点是app.js,这其中创建了Ext.application并且声明了动态加载controller:

Ext.application({ name: "serviceRegistry", appFolder: "/serviceregistryportlet/js/app", controllers:["mainPanel"], launch:function(){...)
我们这里具体看extjs是如何实现动态加载controller的。

首先我们可以看到,当它在加载controller时候,所有这里声明的controller的都会以类全名的形式传递给classNames属性

Ext.Loader的config选项paths会收到2个属性,一个是默认的Ext的path,它的默认值定义如下:

config: { enabled: false, disableCaching: true, disableCachingParam: "_dc", paths: { "Ext": "." } },
另外一个就是从Ext.application中获取的属性,它的key 为Ext.application中定义的name(在这里是serviceRegistry),

value为Ext.application中定义的appFolder(在这里是/serviceregistryportlet/js/app)

如下图所示: