入门Extjs的一些经验之谈

先介绍一下常用的后端UI框架。在美工和前端稀缺的情况下,我们为一个项目后台选UI框架的时候,其实不太在意美丑,反正大多是内部用。但是性能,响应,交互还是非常看重的,哪怕是毫无美感的程序员也懂得哪些操作是用户喜欢的。因此出现了许多后端UI框架,这为程序员提供了一个只需要写代码就能弥补自己美感不足的工具。后台UI框架很多,主要分为富客户端与廋客户端。今天着重讲富客户端。

什么是“富客户端”?大意指大部份代码在前端浏览器上。后台只返回核心数据(不带页面显示的数据)。这样有个好处,客户端的css,js文件只需要加载一次。将能大大的提高了框架的效率。试想如果每打开一个页面都要加载一次js文件与css文件是多费资源的事情。富客户端这么好为什么所有的网站不都用这个?原因很多,比如不利于搜索引擎优化(后台本来就不让蜘蛛抓取的,所以无所谓)。常见的富客户端UI框架有Dwz(国产),ExtJs。其他的我不熟悉,所以暂不举例。

Dwz是我一直在使用的后台UI框架,相当熟练。Extjs是最近一个月才在项目中使用的框架,属于新手,但迫于项目的压力,技能正处于高速攀升期。现在说说玩Extjs需要注意的问题。

控件的创建与声明一定要分清

Extjs创建控件非常的简单, var test = Ext.create();就能创建自己想要的控件。声明控件也很简单,Ext.define(“test”);但是我们要分清楚什么时候要创建,什么时候要声明。只需要遵守一个规则,能声明就不创建。当我们create一个控件时,控件在内存中将不受我们控制。只能等待浏览器去回收内存。这样带来最明显的一个问题就是,你关闭窗口后,有些store还在内存中。而define声明就不一样,你调用的时候会自动create,你关闭的时候会自动回收内存。js代码内存泄漏可是相当严重的问题,所以注意这个问题。

少用id或者itemid

为什么说少用id呢?因为在Extjs中控件的id是不能重复的,与其你担心自己的命名重复,不如少用id。虽然ID有很多好处,比如能通过Ext.getCmp()全局查找。但这不是Extjs官方推荐的方式。通过全局查找是很耗时的一件事情。Extjs官方推荐的查找方法是up,down。up(‘textfile[name=test]‘),这种获取控件的方式相当优美。

多封装公共控件

Extjs虽然很强大,但是实际开发中使用起来很累,需要写大量的前端代码,这种感觉就像搬砖一样。所以学会封装控件,想用的时候通过Ext.require()引入是多么爽的事情。不但可以减少前端代码量,还能让自己的代码更加清晰。

最后评价一下Extjs,Extjs并不开源,公司内部用还可以,如果要做产品还是买正版吧。很多大公司的后台都用Extjs,算是相当通用的后台UI框架。Extjs是很值得web程序员学习的一个框架。无论从编程思想还是代码部署上都让人受益非浅。