ExtJS是一个很偶然的情况下让我碰到的,没想到这个东东居然成了我程序员生涯的开始。
到目前为止,我做ExtJS实际开发已经一年半了,加上学习的时间,也差不多快两年了。对ExtJS没有做过什么突出的贡献,大约半年前更新了ExtJS在SVN上的简体中文资源包。也算是尽了一点绵薄之力。
ExtJS的定位:
是基于JavaScript的RIA解决方案(注:官方宣称其为RIA解决方案而非AJAX解决方案)。
ExtJS适用场景:
ExtJS胜任所有工作(普通web站点可以使用Ext-core核心包,体积27KB++)。
ExtJS的授权:
需要授权,但是不是强制性的。授权费大约在一千至两千RMB左右。
ExtJS的开发难度:
中等偏上,但如果你已经实际开发过两三个大型项目,ExtJS的开发效率还算比较快的。
ExtJS的维护成本:
如果你没有真正的参与过一套完整的ExtJS项目开发,那么维护起来会比较困难。
ExtJS的版本情况:
国内使用ExtJS2.0、ExtJS2.2开发的居多,那么最新版的目前是3.2.1(2010年5月8日9:49:19)。
ExtJS各个版本的区别:
面试的时候会经常被问到(因为那些面你的人可能并不了解ExtJS)。
大致上只要回答如下即可(个人认为):
1.ExtJS随着版本的不断提升,性能上有了大幅度的提高,特别是在2.x升级到3.x以后,效果较为明显(其实也无法去验证)。
2.ExtJS2.x各版本之间的差别不是很大(其实2.x正式的也就2.0、2.0.1、2.2.0、2.2.1*)。但是升级到3.x后,不仅界面风格上更加美观大方,而且还新增了很多组件。
3.ExtJS 3.x成熟吗?你就回答成熟吧,即使有不成熟的地方,我想你也很少用到(比如它的FlashComponent在IE下的表现)。
至于ExtJS的优缺点,自己去衡量。每个人心中都有一把尺,自己亲自尝试过才有发言权。
在了解了上面几个问题之后,我想你现在心中应该对ExtJS有了一个大概的认识。那么我在这里简单介绍一下ExtJS的学习步骤和开发步骤
在学习阶段中,应当首先去ExtJS的官方下载它的源码包(不是废话,很多人不知道源码包中包含有API文档)。下载好后,将所有文件夹放入到php环境中,启动Apache就可以访问里面的例子、API文档了。
首先要做的是查看它自带的例子,一定要逐个逐个的看,这些东西都是你最常用的。看完之后,你就可以自己动手写代码了。by the way,ExtJS代码风格和以往其他的AJAX库不太一样,不要生搬硬套的使用其他AJAX库的代码风格去编写ExtJS,这样你会很郁闷。
那么,接下来就是参照它的例子进行一些小规模的开发,在开发的过程中不断熟悉它的语法风格和API文档。注意:一定要熟悉他的API文档,这样你就可以少走很多弯路。因为它自带了很多实用的工具类,也许你写了半天的代码最后发现他API中自带了类似功能的工具类。
在大约一两个月后,你就可以说你会使用ExtJS了。但是这还远远不够,你不一定能够驾驭它来做实际开发。这时候你可以去下载一些其他人写的代码,加以参考并形成自己的开发风格(注意:目前开发源代码的项目,风格各异,有好有坏,虽然在界面层上感觉都差不多,但是打开代码后你会发现问题。)。如果对代码编写和组织形式上还有疑惑,可以留言给我,但我不保证我能及时回复(修改样式之类的,比如非要把window里的Button放在window的上方就不必了,这些是一个摸索的过程。自己去研究会比较好。)。
那么,与后台的交互,其实最常用的就是一个JsonStore,其他的Store用的真是少之又少(除非你后台非要传给前台XML或者Array,关于XML和JSON的对比,自己在项目中衡量)。
在学习过程中,一定要注意以下几个方面的学习:
1.ExtJS的事件机制(重中之重)
2.ExtJS的DataView的使用
3.ExtJS对JavaScript原生对象的扩展
4.ExtJS操作Dom节点的方式方法(如果你不是纯JS实现界面)
上面说了这么多,并不是很全面,但是希望对你有帮助。其他方面的,陈哥的教学视频做的不错,有兴趣的可以去找找。17ext的论坛也不错。另外,我也写过一篇不成气候的文章,这里没有上传附件的功能,没办法。
至于ExtJS的开发工具,Spket、Firebug是必不可少的。
下面是我老早以前做的一些东西,不过源码都不全了,目的只有一个,让你知道,ExtJS能实现你的想法:
使用技术:
XSocket(Java的一个第三方对Socket通信封装了的一个工具)。
FMS、Flash
==================================================
使用技术:
AIR、ExtJS、SQLite
=====================================================
自己用DataView写的
还是DataView