Ext JS 3.1: Massive memory improvements, TreeGrid,
and more
December 17, 2009 by Jamie Avins
我谨代表Ext团队,相当地高兴地宣布这次Ext JS 3.1
的发布。我们力求在这次发布的版本中使得Ext的性能与功能都呈现最佳化。在download
页面中可找到full
change log
和online documentation
(中文版地址
)。
IE内存的改进
越来越多复杂的单页面Web程序出现,使得各种浏览器的内存管理问题就显得更为关键。在Ext 3.1中,尤其是对付IE6或以上版本的,我们都实现了一系列针对内存泄漏的解决方案。
DOM泄露
引用DOM对象而泄露是导致性能变差的最大原因之一。Ext 3.1经过大幅度的重构后使得那些组件可以“聪明”地移除掉DOM引用,当然Ext
Core
也是包括在内的。结果就是,当移除IE元素时,那些孤立的节点也会被清除干净(IE6/7 FORM
标签的不幸!
)。
JScript引擎的泄露
令人相当意外的是,那怕是一个普通的JavaScript对象也会引起内存泄露,新的IE8也如此。全体版本的IE都有一个毛病,就是糟糕的JavaScrit对象现实,表现为,用对象作为缓存的时候(我们经常如此使用着的)内存会可怕地泄露。到IE9可能会修正该问题,不过有见及此,3.1采用了统一ElementCache的机制较好地修缮这个问题,解决办法就是在IE 中刷新garbageCollection。某些测试中我们录得50倍的内存缩减,就在长期跑着的单页面程序中。
布局的优化
3.0中一些组件就重构为容器
,使之具备复杂的动态接口。在3.1版本中,我们又检查了布局其中的一些过程,进行优化,砍掉冗余的布局计算过程。调整布局之后,就会中止子容器的调整,以防止前一版本可能出现的“布局风暴(Layout
Storm)”,避免大动干戈。3.1中销毁一个组件就是从容器中移除它,从而大大地改善了性能和优化了其他旧版调用的函数。
EventManager重构
The EventManager
以及所属的core适配器已经进行完整的重构,减少了一些代重复和低效的代码。之前的事件缓存已经改进为更快和更一致的体验。对于复杂的容器,带来的好处便是响应时间上的改进。解构过程中的元素/组件期间的事件缓冲和延时,已经移除掉了,防止不必要的事件被执行了。
改进的灵活性
现在可以用SVN的respository
访问Ext
Core
了。那时候的Core还有许多方法是private的,难以扩展。Ext论坛
有人希望灵活性能够高一点,所以我们更新了3.1,许多方法变为公开的prototypes。Ext.each也在大多数的内置底层中展开(unrolled),结果就是许多任务的效率是提升的了。
新的组件
在3.1有效提升的同时,我们也乐于释出一些最新的可视化组件以下是3.1中需求较高的组件或加强组件:
新的TreeGrid扩展
新的TreeGrid组件
为复合列表创建完美的解决方案——组合了Grid
的威力(排序、展示额外的信息)并囊括了Tree
UI所带来的灵活性。TreeGrid为TreePanel的代码优化的扩展。我们当前还在研发TreeStore,以支持层次结构的数据结构,将在3.2中出现。这是一个需求最旺盛的组件之一,现在可以给大家使用了,我们自然很开心。
Grid列锁定
列锁定重新以 LockingGidView/LockingColumnModel
扩展的姿态回来,用户可以指定某些水平方向移动时,这些列不动。
Grid分组列的插件
新的ColumnHeaderGroup
插件,组织起列来会更加轻松。列可以在一组中渲染,有更高的灵活性。
小结
3.1有新的IE优化算法、全体性能的改善和新的功能加入到其中。我们认为这些加强内容会较大地改善阁下您产品的生产力。我们也在努力的打造Ext
Designer
,希望来着几个月可以展出。请马上更新你的版本
并查阅新的哪些功能适合您!