ExtJS 4.0 的改变(仅发表我发现的)
最近写了一个较为完整版(有部分细节没说)的,去看看这里吧http://andy-ghg.iteye.com/admin/blogs/1133456
很久没有写ExtJS了,之前在忙一个BI项目,没有用到ExtJS,于是几乎将其淡忘了,上个礼拜天偶然发现已经更新4.0正式版了,于是拿起来玩玩,结果发现了很多不适应,但是ExtJS基本上是在往一个好的方向在走。
很久以前我写过一个文章,详细查看白度文库:
http://wenku.baidu.com/view/ce8d3e08763231126edb1146.html
这篇文章是09年8月份基于ExtJS 2.0写的(里面的例子是刚出3.x的时候做的),里面的思想以及开发方式直到官方的可视化工具出现之后才得到印证,官方可视化工具生成的代码与我组织的代码格式几乎一模一样。以前一直以为这个文档可以用很久,没想到这次ExtJS4.0带来的彻底改革,把我整懵了。
好了,废话不多说,先来看看这次在ExtJS 4.0中改变。
在4.0中,官方几乎彻底的重构了一遍,里面的改变非常多,我至今也无法完全指明究竟有哪些改变。下面就列出当前我遇到的一些改变:
改变1:创建对象的时候不再使用new(赞一个)
这个改变可能是最让人蛋疼,也是最让人欢欣鼓舞的了,通过其封装好的方法,你可以创建出效率更高的程序。现在使用Ext.create("")这个方法来创建对象,里面是字符串。所以可能更加灵活的创建对象(回想以前用eval("new AA.bb.cc()"),很痛苦啊)。
改变2:动态加载JS文件(鄙视一个)
这个老生常谈的问题似乎被ExtJS官方在4.0中解决了,但是就我目前使用的状态来看,我只能说一般般,还有不少问题(相当多的问题),第一个问题就是,如果你要想创建一个完全由ExtJS构建的程序,你需要从服务器请求N次把所有需要的底层JS下载下来,然后在操作过程中再依据情况请求JS文件,需要消耗大量的时间,也许有人说,ExtJS对本地做了缓存,仅仅第一次稍微有点慢而已,这方面我确实不太清楚是否做了缓存,至少在Chrome浏览器、Tomcat服务器、CAS控制SSO这样的架构下,局域网访问服务器,我刷新一次要等好几分钟。我怀疑可能是CAS那块可能对每一个请求做了判定,在每一个请求后面加上了参数的原因。
第二个问题就是,动态加载JS在很多情况下会报奇奇怪怪的错误,这个现象出现最多的就是ExtJS所谓MVC,在完全按照他的例子搭建的MVC自己做的例子中,一模一样的代码会莫名其妙的无法加载JS文件,既两个Controller两个Store两个Model完全类似(除了类名不一样),结果就是一个能隐式的加载JS,而另外一个则必须显式的加载,查到官方的论坛,上面也有人问,得到的回答就是:在每一个Store上面显式的加上Ext.require()函数来解决这个问题,我现在只能怀疑是ExtJS还没有解决好这个问题,至少不适合在正式的项目里使用这个所谓的MVC(其实在J2ee中,没必要非要在JS这一层做MVC,主要就是调试成本太大)。
但是,如果只是想把ExtJS当作JQuery来用,这个就非常有用了。还是非常期待它的下一个版本的。
改变3:extend的写法变了(赞一个)
在4.0之前,我们写一个继承自Panel的一个自定义组件的时候是这么写的:
不知道你能写一个4.0版本的吗?
不知道你能写一个4.0版本的吗?
本来是有这个打算的,但是最近在开发项目,正好也在用4.0,所以想再使用一段时间后总结一下。