1. ExtJS的定位是RIA,和Prototype、jQuery等类库的定位不一样。使用ExtJS作开发,就是意味着以客户端开发为主,否则就不叫RIA框架了,而Prototype、jQuery等只是辅助性的客户端框架,和ExtJS不在同一条起跑先上。若是必定要和其它的框架作比较的话,应该和Isomorphic SmartClient、Backbase Enterprise Ajax之类的框架作比较,固然,和他们相比,ExtJS仍是有很大的优点的。php
2. 使用ExtJS时须要解决如何服务端通讯的问题。因为ExtJS只是一个客户端的框架,和服务端技术没有关系,也就没有相应的服务端的适配层,所以客户端若是要用ExtJS,则必须提供它须要的数据结构。ExtJS主要经过这几种方式和服务端进行通讯:html
- Ext.Ajax.request 作普通的异步请求,服务端能够根据实际状况返回JSON形式数据或者HTML片断;
- Ext.tree.TreeLoader 加载树形结构,服务端必须返回JSON形式数据,并且要符合Ext.tree.TreeNode的配置要求,不然本身作转换;
- Ext.data.Store及其派生类 加载表格形式的数据,服务端能够根据实际状况返回JSON形式数据或者XML形式数据,若是没有特殊要求,推荐返回JSON格式的数据;
- Ext.Element.update 局部更新,这个方法最总仍是要调用Ext.Ajax.request方法,之因此把它单独列出来,是由于这种方式比较容易被忽视,可是在某些状况下仍是挺 有用的,好比调用Ext.Panel.body.update()对某个Ext.Panel的内容进行局部更新,若是使用这种方式,那么服务端只能相应的 返回HTML片断了;
3. 使用ExtJS时的注意事项。ExtJS和其它的辅助性类库(Prototype、jQuery等)相比显得很是庞大,让不少不少初学者望而却步。通过近一年的学和用,对于ExtJS的使用,我总结了一下几个注意事项:浏览器
- 尽可能使用ExtJS的方言。 ExtJS提供了不少有用的方法,解决客户端JavaScript常见的开发任务,常见的有查询HTMLDom,建立HTML元素,为HTML元素注册事件响应函数等,这些大能够所有使用ExtJS提供的方法,使本身代码构建与ExtJS之上,举几个例子:
- 查询ID为container的DIV下全部的checkbox,可使用:Ext.fly(‘container’).select(‘input[type=checkbox]’);
- 在ID为container的DIV内建立一个按钮,可使用:Ext.fly(‘container’).createChild({ tag: ‘input’, type: ‘button’});
- 为ID为container的DIV的click事件注册处理函数,使用:Ext.fly(‘container’).on(‘click’, handlerFn, scope);
- ExtJS的自定义事件很好用,能够实现一对多的通知,并且任何自定义事件均可以中途中止,只要有一个处理函数返回false。
- Store合并成一个文件 用ExtJS显示数据,天然就须要用到Ext.data.Store及其派生出来的类,能够考虑全部的Store合并到一个文件,这样对重用有很大的帮助。
- 脚本文件管理 尽量的每一个模块作成一个类,一个类一个文件,相似与Java或C# 的文件处理方法,每一个文件注明其做用,依赖的文件等,若是太多的话能够考虑写一个配置文件,经过读配置文件来输出脚本到客户端。
- 调试和部署分别加载Debug和Release版本的脚本 ExtJS附带的例子中没有使用完整Debug版本的例子,因此不少人找不到完整的Debug版本的引用顺序,经过对Source文件夹下的ext.jsb文件进行分析,就能够获得正确的加载顺序,以下:
- Debug
- /ext-path/source/core/ext.js
- /ext-path/source/adapter/ext-base.js
- /ext-path/ext-all-debug.js
- Release
- /ext-path/adapter/ext/ext-base.js
- /ext-path/ext-all.js
- 对Script进行压缩 对项目中有大量的JavaScript的话,对其进行压缩是颇有必要的,这里我推荐的是ExtJS的论坛提供的JS Builder,能够经过配置文件来对Script和CSS进行压缩,听说ExtJS就是用这个工具进行压缩的,不过有一个缺点,就是不支持UTF-8编码。
4. ExtJS的优势和缺点总结。通过近一年的尝试,ExtJS的优缺点总结以下:缓存
- 优势
- 一致的类库 这点在1.1版本时还不是很完善,可是到了2.0之后,ExtJS内部通过了翻天覆地的变化,特别是UI组件,有统一的基类,给人的感受很像是一个运行在浏览器上的运行时框架,这一点只有在对ExtJS熟练了以后才能体会到。
- 托管页面呈现 ExtJS在发展到2.0以后,不只UI类库一致了,并且渲染方式也是统一的,用官方的话说,是Managed Rendering,这一点使得UI的扩展也比较一致,有利于之后的维护与发展。
- 相对丰富的文档和示例 毫无疑问,刚刚接触到ExtJS的人多数都是被它附带的例子和开发文档吸引过去的,它的文档作的确实不错。
- 华丽而成熟的界面 ExtJS在2.0以后的界面真的是没得说,不只华丽,并且相对很成熟。
- 缺点
- 没有合适的开发利器 毫无疑问,一个好的开发工具能够大大的提升编码的速度,可是对于ExtJS,始终没有一个完美的开发工具,能够推荐的有Aptana Studio, Spket IDE,和Spket 提供的提示文件,可是都是各有优缺点,都不完美,只能一边看SDK一边写代码。
- 没有界面设计工具 虽然有人提供了一个在线的界面设计工具,可是和Visual Studio提供的ASP.Net设计工具来讲,真的能够说是天壤之别。所以,只能一边预览,一边写代码。
- 文档不全 虽然ExtJS提供的文档很丰富,可是仍是跟不上源代码的更新速度,因此,常常要经过看源代码,调试才能真正解决问题。
- 不能编译 这一点能够说是JavaScript的缺点(若是能编译,就不叫JavaScript了),在实际的开发中,常常会敲错一些代码,好比大小写错误等,不能经过编译获得反馈,只能在运行时排错,致使开发的效率比较低下。
5. 使用ExtJS作应用的一些建议。多数人认为ExtJS的脚本体积很大,不适合放到互联网上,对于这一点,有以下建议:数据结构
- 部署到互联网上的Web应用必定要加载Release版本的ExtJS
- 能够考虑只加载必须的组件,build目录下脚本文件都是压缩过的,若是项目中用到的ExtJS的组件不是不少,能够只加载用到的
- 考虑使用IIS的文件压缩功能
- 使用Google的Gears,把全部的静态文件作客户端缓存
- 使用ADOBE的AIR,把脚本打包到客户端运行
转载自:http://my.oschina.net/aiguozhe/blog/63005框架