Ext的速度问题,如何改进我这段代码。

我用viewport来做系统,在页面里,左边是树treepanel,右边是一个panel.当点击左边的时候,右边改变。见附件。
代码太多,贴主要的如下:[code="java"]var MainPanel = new Ext.Panel(
{ region :'center',
title:'详细信息',
id:'MainPanel',
autoScroll :true,
margins :'0 4 0 0',
contentEl:'mainFrame',
split :true,
border: true
});[/code]
这个是右边的panel的定义。contentEl:'mainFrame',我在jsp页面指定了一个frame ,id='mainFrame'. 以下是树的定义。
[code="java"]var tree=new Ext.tree.TreePanel({

root:root,

width:250 ,
animate :true,
useArrows :true,
autoHeight :true,
autoScroll :true,
border :false

}); //生成一棵树

tree.setRootNode(root);
tree.on('click', treeClick);
function treeClick(node,e){
if(node.isLeaf()){
e.stopEvent();
[color=red]document.getElementById("mainFrame").src=node.attributes.url;[/color]
}
}[/code]

当我点击树的叶子节点的时候 document.getElementById("mainFrame").src=node.attributes.url;我动态改变mainFrame的src,将其定向到一个新的jsp.但是问题是,这个jsp页面必须引入ExtJs的几个核心js包,才可以用Ext的js,而我在viewport定义的页面里已经引入了Extjs的核心js,重复引用,内存会重复加载,所以很不爽,如果每一个页面都要引入相同的 Ext的核心js的话,那用户态痛苦了,我想请问高手有什么办法达到同样的效果,而不用引入Extjs的js,内存里不再重新加载。赐教!

[b]问题补充:[/b]
我用div,怎么搞定
[b]问题补充:[/b]
To peteraml1,提供了思路,我试一下,现在在调试其他的,不错!!
[b]问题补充:[/b]
To peteraml1,但是有个问题是,你这样下一个conPanel 的代码放到那里呢?总不能和那个MainPanel的代码放到一起了。
[b]问题补充:[/b]
我主要是左边的页面也不一定全部用Ext的东西,所以算了,先用着,我们是内部网,所以速度不会太慢。
[b]问题补充:[/b]
出问题了,出大问题了,我按照peteraml1的方法写,但是是这样的(参考别人的)。
[code="java"]
n=MainPanel.getComponent(node.id);
var MainPanel=Ext.getCmp("MainPanel");
var n=Ext.getCmp(node.id);

if(!n){ n =MainPanel.add({ id:node.id, title:node.text, closable:true, autoLoad:{ url:node.attributes.href, scripts:true }
}); } MainPanel.setActiveTab(n);
[/code]
但是总出错,出错在MainPanel.add({}),说啥Ext.fyl(..)为空或不是对象,不知道什么原因.
是我在另外一个demo里是可行的。help!

主要是看要加载的页面是什么内容,如果加载的是百度这种的页面,似乎只能用iframe,如果加载的是自己写的jsp,那其实可以写在同一张页面里面的。
[code="java"]
var tree=new Ext.tree.TreePanel({

root:root,

width:250 ,

animate :true,

useArrows :true,

autoHeight :true,

autoScroll :true,

border :false

}); //生成一棵树

tree.setRootNode(root);

tree.on('click', treeClick);

function treeClick(node,e){

if(node.isLeaf()){

e.stopEvent();

if(MainPanel.items && MainPanel.items.getCount()>0){
MainPanel.remove(MainPanel.items.first());
}
var conPanel = new Ext.Panel({
border : false,
autoWidth : true,
autoHeight : true
});
MainPanel.add(conPanel);
MainPanel.doLayout();

            }   
    }  

[/code]

……
好像不行吧。只能最好不用iframe,但有的地方又不得不用 :cry:

[code="java"]function getConPanel(){
var conPanel = new Ext.Panel({

border : false,

autoWidth : true,

autoHeight : true

});

return conPanel;
}[/code]
[code="java"]
var conPanel = getConPanel();
MainPanel.add(conPanel);

MainPanel.doLayout();

[/code]

从2。0以后,你完全可以不去用讨厌的iframe了,你去参考一下官方的例子。tabpanel那块的

……
你完全可以弄个判断的嘛。
或者尝试着去使用tabpanel。