• Ext JS 4的性能与学习之我见——《Ext JS权威指南》后记


          《Ext JS 权威指南》终于出版了,心情相当激动,这书可谓是好事多磨,前前后后花了1年多的时间。原来计划是在2011年年底与读者见面的,当时4.0正式版已出,正是需要参考书的时候。但是一个性能问题,让Sencha作出了一个艰难的决定,重构架构,于是就在无奈中等待着4.1版本的出现,然后根据4.1的源代码将书修改了一遍,现在终于可以出版了,心情难免有点过于激动。

          Ext JS 4最大的改动是架构上的改变,而这架构的变动主要是规范类的定义与创建,从而使类更符合规范,也让用户扩展起来更便利了。从笔者的使用感受来说,Ext JS 4的新架构确实很优秀,不但更易于理解,而且条理更清晰、易于使用。但这新架构唯一的缺点就是影响性能,类的创建过程因为太过于规范,因而其生成过程必然会导致性能上的损失,就算每个类的创建过程多0.02秒,200多个类,那就是4秒时间的性能损失了,这对于新的经过进一步优化的JavaScript引擎来说,是一点难度没有,但是对于IE 6或IE 7这样的古董级引擎来说,慢是没有办法的。就因为这个原因,Sencha还是决定重新架构Ext JS 4的渲染引擎,从而改善其性能,因而就有了别于4.07的4.1版本,与4.0.x版本最大的区别就是渲染引擎的不同,为了优化渲染引擎,最大的变化就是使用批量渲染,而这也促成了常用的BorderLayout布局的改变,而这一改变,让Ext JS 4在使用上更灵活、更方便了。应该说,这样的修改是相当值得的。

          对于性能,笔者的看法是,随着计算机硬件和系统的升级,必然带来浏览器的升级换代,在古董级的浏览器中的表现,基本可以忽略,但是性能的改善,还是应该改善的。对于客户来说,要摒弃的只是使用习惯上的改变,但是这是可以引导的,就比如一个刚使用电脑的普通用户,如果你给他的是一台Linux,没关系的,他只要能实现自己的目的,可以浏览网页和玩游戏就行了。Windows的发展历程正好证明了用户是可塑的,并不是死板一块,最典型的例子就是随着Windows 98升级为XP,古董级的IE 4已经销声匿迹了。而随着新一轮操作系统的升级和微软的推动,古董级的IE 6和IE 7估计也会很快消失的。因而,老纠结于在这些古董级浏览器的性能,而止步不前,对项目来说,开发人员来说,是无益的,因为Ext JS 4对于Ext JS 3来说,在架构上,规范化项目上,项目的可持续扩展来说,确实是非常优势,而且优势是相当明显的。真正好的项目,在于其功能是否满足用户的需要,符合用户的需求,对于更换浏览器这类小问题,客户是不会太在意的,如果客户很在意,笔者认为是你的项目还没有足够吸引人的地方。

          对于Javascript框架,笔者有个习惯,就是喜欢研究一下它的源代码,这样,不但可以深入了解框架,从而加深其理解,在使用上带来便利,更重要的是可以从中学到编写Javascript代码好的习惯,提高自己的Javascript的水平。毕竟,一个框架,是一个团队或作者的心血结晶,在不断的升级过程中,团队中的成员或作者本身也在不断的进步与提高,因而,在框架的源代码中,可以看到团队或作者的好习惯,已经高水平的代码,对自身的提高来说,是不可多得的学习范本。不过,研究源代码,不能照本宣科,从头到尾的看,那太费时间和精力了,如Ext JS框架,其源代码(ext-all-debug.js文件)有11万行,要一行行的把代码看完,并理解其机制,那是相当大的工程,也很费时间。因而,看源代码,要抓住其要点、重点,有选择的看。Javascript语言的特点就是,它最终的目的就是修改HTML标记的样式,在HTML标记内添加HTML代码,并为HTML标签绑定事件,实现交互。因而,看Javascript源代码,重点就是它是如何生成HTML代码,如何修改HTML标记,如何为HTML标记绑定事件,以实现交互。这样,就可做到有的放矢,在有限的时间内学到更多的知识。因而,对于Ext JS这样框架,研究其源代码,重点要掌握的就是其渲染引擎、事件机制。有了这样的明确思路,才能更好对其进行分析研究,并在使用中做到随心所欲。而这,也正是笔者在《Ext JS权威指南》一书中想与大家分享与探讨的东西。

          学习一门语言或框架,除了看书之外,最好的办法就是看示例,这样起码可以做到,不会做来也会抄。不过抄,也不是真的照抄,而是根据自己的需要对其进行改造,而这离不开对该语言或框架整体的理解与认识。因而,看示例,不单要看它怎么写,还要问为什么要这样写,然后自己去求证一下,不这样写,会怎样,而这,就需要自己动手去试。而这,是学习必不可少的过程,因为,笔者就是这么过来的。想当初,笔者初接触Ext JS,无资料,无文档,完全是靠分析示例和看API文档走过来的,而这,更多的是要敢于去实践,去验证。当然,这与自身的知识结构有很大的关系,而这,就得多看书,多掌握不同方面的知识。还有一个很重要的东西,就是好的的工具,如Firebug。笔者也是从使用Ext JS后,才开始接触和使用Firebug的,而在不断的学习与使用中,逐步加深对它的了解,所谓熟能生巧,关键还是要去用。在书中,对于Firebug,囿于篇幅,只能浅尝即止,如果真要深入,那估计可以写另外一本叫Firebug调试的书了。因而,书只是带你入门,能到什么程度,还得靠自己去实践。

          以上是笔者对《Ext JS权威指南》一书的一点小小总结,但囿于篇幅与笔者水平,书中难免有错漏与不当的地方,敬请大家见谅,也希望大家能从中有所收益。


  • 相关阅读:
    QSet使用及Qt自定义类型使用QHash等算法
    QQueue与QStack使用
    QHash和QMultiHash使用
    【洛谷6633】[ZJOI2020] 抽卡(多项式毒瘤题)
    【洛谷5996】[PA2014] Muzeum(模拟费用流)
    【CF1063F】String Journey(后缀自动机+线段树)
    【BZOJ3640】JC的小苹果(高斯消元)
    【洛谷6478】[NOI Online #2 提高组] 游戏(树形DP+二项式反演)
    【洛谷6730】[WC2020] 猜数游戏(数论)
    【洛谷6186】[NOI Online #1 提高组] 冒泡排序(树状数组)
  • 原文地址:https://www.cnblogs.com/muyuge/p/6333764.html
Copyright © 2020-2023  润新知