赞
踩
示例:renderTo的不必要使用
var window=new Ext.window({
renderTo:document.body,
title:'Title'
}
);
window.show();
上面代码运行时,窗口就会创建并隐藏在body里,这是不必要的。
var tb = Ext.create('Ext.toolbar.Toolbar');
tb.render('rbac_resource_js_module_toolbar');
tb.suspendLayouts();
tb.add({
text: '新增',
cls: 'x-btn-icon',
clickEvent: 'mousedown',
handler: function(){
}
});
tb.resumeLayouts(true);
清理过程
- DOM中的HTMLElement
- 移除所有监听事件以避免内存泄漏
- 通过递归方式销毁所有子组件
典型的使用closeAction属性,对于不需要再显示的,应定义为close
var window = new Ext.Window({
closeAction:'hide', //默认是destroy
title:'The Untitled'
} ) ;
一般组件销毁使用destroy()方法。
在需要时才加载
保持 ViewPort 整洁,不要把所有view都放
用轻量级的组件
使用缓存
store.suspendEvents();
store.remove(selection);
store.resumeEvents();
grid.reconfigure(store);
可与挂起渲染同时使用:
Ext.suspendLayouts();
store.suspendEvents();
store.remove(selection);
store.resumeEvents();
grid.reconfigure(store);
Ext.resumeLayouts(true);
把js css images分别放在不同的域下,并行下载资源。
使用sencha sdk编译前端代码。
css解析是从右向左,如:
.HeaderContainer .nav span
这就是一种不好的书写方式。要写尽量简单、少层级的css代码,避免浏览器需要查找父元素。
避免使用错误的监听。比如需要一次加载完再执行的代码,不要误写到每次刷新都要执行的代码。
panel更强大,占的资源也更多。
Extjs4.1以后,不需要专门放一个border layout。
http://khaidoan.wikidot.com/extjs-page-analyzer
Ext.define('MyClass', {
...
constructor: function(config) {
...
this.store.on('load', function() {
...
}, this);
}
});
上面这段是典型的可能会引起内存泄露的代码。正确的写法是这样:
Ext.define('MyClass', {
...
constructor: function(config) {
...
this.store.on('load', this.onStoreLoad, this);
},
onStoreLoad: function() {
...
}
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。