使用Ext JS,不要使用页面做组件重用,尽量不要做页面跳转
今天,有人请教我处理办法,问题是:
一个Grid,选择某条记录后,单击编辑后,弹出编辑窗口(带编辑表单),编辑完成后单击保存按钮保存表单,并关闭窗口,刷新Grid。
这,本来是很简单的,但囿于开发人员对Ext JS的理解不到位,搞得相当的复杂了。
主要复杂的地方在以下几点:
- 为了实现编辑表单的可重用,把表单做成了页面,然后在Window中套IFRAME打开页面。
- 表单的提交不是用Ajax提交,而是使用习惯的页面跳转方式提交,于是,一切都复杂起来了。
要这样实现,也不是不可以,在最后的提交页面,调用parent对象操作父页面的对象关闭窗口并刷新Grid。不过,这样实在太复杂了。
这里存在的问题是对Ext JS的开发理解不到位,还是根据老的开发方式去来写Ext JS的应用程序,因而本来简单的东西一下子就复杂化了,这也是很多初学者经常犯的错误。
要很好的使用Ext JS进行开发,要牢记以下几点:
- Ext JS的数据交互,基本上是以Ajax为工具,以JSON或XML格式数据进行交互,这个过程,不需要任何的页面跳转来实行,数据的处理都以一种很标准化的数据格式进行处理,如错误处理、成功保存等等信息,都可通过JSON或XML格式的数据来告诉客户端,让客户端去进行处理。
- 使用Ext JS(尤其是4)编写自己的扩展,实现组件的重用,非常的方便,不需要把重用部分做成一个页面那么麻烦。
- 使用Ext JS 4可以很容易实现单页面的应用程序,也就是只需要一个页面就行了,客户端与服务器端的数据交互都是遵循第一点来处理的。当然,担心性能问题的,也会以IFRAME形式来实现多页面的应用程序,但是,必须明白的是,这也是以单页面为基础的,意思就是,一个IFRAME页面的流程,基本就是一个单页面的应用程序的流程,不需要类似习惯的Web开发方式那样进行多个页面的控制。理解这点很重要,不然,还真不如不用Ext JS,直接使用习惯的Web开发方式来开发。
- Ext JS在客户端也是数据与UI分离的,千万别在UI中找数据。
- 使用Ext JS,是基于组件形式来组织UI的,而不是以HTML代码来组织UI的,尽管最终生成的都是HTML代码。一般情况下,是不需要直接编写HTML代码就能实现应用程序的,如果确实需要使用使用HTML代码,那就要考虑为什么要用、是否有替代办法、怎么用这样问题。
以上纯个人观点,可能还有没考虑到的地方,忘大家斧正。