DOJO
有个动态加载的机制,但我没用过不好评论。
我的做法是用单独做一个JS包,尽可能少的依赖别的架构。用它实现动态加载。一是完成防止自身重复加载,二是有一个页面全局的注册机(一个HASH对象就可以搞定,很简单)
而程序要变的地方有两个,
首先,是所有的JS都用它加载,保障在注册机中的唯一性;
其次,在使用EXT类库的地方,需要等动态加载完以后才可以使用所有的EXT类库。类似的你可以写一个onReadyXXX()的方法。
另外,
相信您也看过动态加载JS的办法,这里还需要注意的一点是FF,IE,Safari对Document.write的JS加载办法处理不一样,IE是同步的,其它是异步的,所以在写这个动态加载类库里要由其注意。需要判断浏览器,要有不同的加载实现。
研究一下 extjs的tree树形结果,已经封装的很简单了Ext.require([
'Ext.tree.*',
'Ext.data.*'
])
Ext.onReady(function() {
var store = Ext.create('Ext.data.TreeStore', {
proxy: {
type: 'ajax',
url: 'get-nodes.php',
extraParams: {
isXml: true
},
reader: {
type: 'xml',
root: 'nodes',
record: 'node'
}
},
sorters: [{
property: 'leaf',
direction: 'ASC'
},{
property: 'text',
direction: 'ASC'
}],
root: {
text: 'Ext JS',
id: 'src',
expanded: true
}
})
// create the Tree
var tree = Ext.create('Ext.tree.Panel', {
store: store,
hideHeaders: true,
rootVisible: true,
viewConfig: {
plugins: [{
ptype: 'treeviewdragdrop'
}]
},
height: 350,
width: 400,
title: 'Directory Listing',
renderTo: 'tree-example',
collapsible: true
})
})