`
zhongxiucheng
  • 浏览: 68318 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EXT设计的方式

 
阅读更多

在开发EXT的前台应用程序的时候,采用什么样的开发模式,每个人都有自己的一套看法与主张,也都有各自的设计模式.但是就前台页面间的通讯而言应该可以分为单页面与多页面或部分单页面,至于如何去区分,主要是看页面区域的划分与frame的使用情况.究竟是单页面好,还是多页好,我觉得没有一个固定规则,还是要看具体的情况,但有点是可以肯定的就是frame大量使用对效前台的效率是一个考验,因为iframe渲染确实相当的耗费资源.但是如果大量采用ajax的请求,后台服务器收到的请求将会成倍增长,因此需要综合的考量.

如果采用单页面模式来设计,每个设计人员设计出代码也是各不相同,因为这设计到很多方法与结构上的问题,如前后台的数据沟通格式设计;前台代码的模块划分;前台代码的书写规范,有的程序员喜欢直接使用组件对象的写法,而有程序员比较倾向于配置型的写法,我则更喜欢配置形式的写法;另外还有诸入脚本代码是否采用了按需加载的方式等等...这些情况汇聚在一起将会出现的情况是可想而知的.

最近在对整个程序的结构进行调整,遇到了不少问题,以前程序模块采用iframe加载的模式,速度有些问题,因此想把模块加载的部分采用单页面模式,其中遇到了不少问题,在这里将它们记录下来,以备日后查看:

  1. 第一个遇到的问题是区域更新:EXT中使用border布局是很常见的情况,但是如果要动态更新区域的内容就比较麻烦,这里有多种方式可以进行选择:如果用panelupdate向后台请求脚本直接运行,或直接请求后返回一个页面的方式等.我采用的方式直接使用remove当前需要替换的区域的组件,然将将新的组件添加到父容器中进行重新布局的方式,但是这种设计对于border布局是不可用的,因为border布局一旦子组件渲染完成后它就不会再行子组件的渲染操作,而只进行布局的处理.可以参考下面的borderLayout文件中的onLayout方法,borderlayout布局管理器中有一个标记rendered标记,它与组件中的rendered标记有类似但又不完全相同的作用.下面的代码我进行了部分修改以满足动态处理的需求,当然对于非动态的情况是兼容的.使用时只需要将borderlayout布局管理器中的rendered标记改为false就会重新触发子组件对象的渲染的流程,并生成新区域对象,这种改的代价是最小的,但它也有一个局限性,就是对于已经渲染的组件被添加到borderlayout区域中是不支持的,它只支持新添加的组件是还未渲染的情况.对于这种removeadd的设计模式其实还有一种变通的方法,就是在动态的那个区域中添加一个额外的面板而这个面板采用fit布局或card布局也是可以,但是它就是需要多加几个额外的面板层,它的优势在于不需要修改源代码.但相比之下我更喜欢第一种方法,即修改下面的源代码.

  1. 第二个问题还是与区域的更新有关,就是区域应该对更新调用者提供接口设计.什么意思呢?如果一个区域的替换如果仅仅是简单的替换而已,则没有这样一个说法,而在实际的业务中并不只是简单的区域替换,例如一个区域中有一个表单,如果用户进行了修改,用户并没有保存,则进行强制的替换是不合理的,如果当前区域与新区域是同一个区域是同一个区域,或是同结构区域只是数据不同而已,这时你可能想不做任何操作或只刷新数据而不更新区域,对于这些情况我想可以通过两种方式来实现:接口方式例如所有区域都实现beforereplace方法,如果返回false则不更新,否则就更新区域,或使用事件方法,更新调用者为当前区域发布beforereplace事件,如果监听者不确认则不更新区域,否则就更新区域,至于两种方案哪一个更优秀有待于将来验证.
  2. 第三个问题是一个比较常见的问题,EXT中设计到组件与子组件的迭代问题.其实在EXTcontainer容器中已经给出了设计思路就是bubblecascade方法这两个方法一个是向上的迭代一个是向下的迭代,并在迭代的过程进行回调处理.在树组件结构中也实现了这种迭代模式,只不过并不是在treepanel中实现,而是在treeNode中实现的。在gridpaneltreepanel这些组件中这些方法被屏蔽了(实际是有的),只是不推荐使用而已,因为它们布局是特殊处理的,也没有items属性。在处理实际的迭业务时主要有两个使用方向:回调方法站在一个处理实际业务者的角度来完成所有业务的处理,这种处理方式很有局限性,因为实际业务的不断变化会让回调方法变得特别的复杂,进而到后期变得难以维护;另一个使用方式回调方法站在一个委托者的角度来进行业务规范,而不进行实际业务处理,因为实际业务千变万化,而且不断变化,要让回调方法跟着实际业务跑,总是不太好,各自的业务自己负责,回调方法只是规范业务的接口与流程,这样更容易抽取框架的公共代码。例如组件的刷新问题,通常在执行完成一个操作后希望刷新视图,各个组件有各自的刷新逻辑,如果回调方法想处理所有刷新逻辑是比较困难的,但是回调方法可以委托组件各自规范接口方法来完成操作,当然这个规范是在回调方法中规定的;又例如有这样的业务希望在某些模块中显示模块路径,这最好不要将业务集中在一个方法中来完成,使用委托来搜集模块名称的路径信息应该是最好的方法。采用委托方式有一个比较大局限性就是在进行业务处理的时候组件之间不可相互依赖。
分享到:
评论

相关推荐

    Ext+JS高级程序设计.rar

    第2章 Ext Core实例系统设计 27 2.1 需求分析 27 2.2 系统设计 28 2.3 功能结构图 29 2.4 开发与运行环境 31 2.5 数据库设计 31 2.6 本章小结 34 第3章 Ext Core实例—.NET语言实现 35 3.1 创建应用并设置开发环境 ...

    EXT 首页设计

    1.EXT实现 2.带背景图片 3.调整文本框大小 4.调整按钮大小 5.调整对齐方式

    Ext 学习中文手册

    Menu的分配方式: 58 练一练 60 动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入到模板中 62 下一步 63 学习利用模板(Templates)的...

    Ext Js权威指南(.zip.001

    Ex4.0共2个压缩包特性,《ext js权威指南》 前 言 第1章 ext js 4开发入门 / 1 1.1 学习ext js必需的基础知识 / 1 1.2 json概述 / 3 1.2.1 认识json / 3 1.2.2 json的结构 / 3 1.2.3 json的例子 / 4 1.2.4 ...

    EXT 中文帮助手册

    列模型(Column Model) 52 Grid组件的简易分页 53 Grid数据 53 怎么做一个分页的Grid 54 分页栏Toolbar 55 EXT Menu组件 55 创建简易菜单 56 各种Item的类型 57 Item属性 57 在UI中摆放...

    EXT简体中文参考手册(PDF&CHM电子档)

    Menu的分配方式: 58 练一练 60 动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入到模板中 62 下一步 63 学习利用模板(Templates)的...

    EXT 中文手册

    列模型(Column Model) 52 Grid组件的简易分页 53 Grid数据 53 怎么做一个分页的Grid 54 分页栏Toolbar 55 EXT Menu组件 55 创建简易菜单 56 各种Item的类型 57 Item属性 57 在UI中摆放...

    精通JS脚本之ExtJS框架.part1.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    电子商务系统分析与设计课程设计.doc

    另一方面,数据处理模式、信息系统的体系结构、应用开发技术等的变化,也使得电子 商务系统的分析设计方式呈现出新的特点。 所以,本文以具体的购物网站(快乐购)为案例,分析电子商务系统的设计、分析 和如何构建...

    图书管理系统(struts+hibernate+spring+ext)130221.rar

    同时,该系统还结合了Hibernate框架,这是一个开源的对象关系映射(ORM)框架,它简化了数据库操作,允许开发者使用面向对象的方式来处理数据库,而无需关注底层SQL语句的细节。Spring框架的引入则是为了依赖注入和...

    java_jsp项目源码_龙门物流管理系统(Ext+SSH).rar

    龙门物流管理系统(Ext+SSH)是一款基于Java技术栈的开源物流管理软件,提供了丰富的功能模块,旨在帮助物流企业提高运营效率、降低成本、增强客户满意度。该系统支持多种运输方式、货物类型和订单状态,可以实现...

    精通JS脚本之ExtJS框架.part2.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

    java_jsp项目源码_图书管理系统(struts+hibernate+spring+ext)130221.rar

    **项目名称:** 图书管理...4. **可扩展性:** 系统采用了模块化设计,可以根据实际需求进行功能扩展和定制开发。 本项目可以作为二次开发的基础,根据实际需求进行功能扩展和定制开发,满足不同图书馆的管理需求。

    java_jsp项目源码_图书管理系统(struts+hibernate+spring+ext).rar

    **项目名称:** 图书管理系统(基于Struts + Hibernate + Spring + Ext JS) **项目简介:** 本项目是一个基于Java Web技术的图书管理系统,采用了Struts、Hibernate、Spring和Ext JS等主流框架进行开发。系统主要...

    java_jsp项目源码_龙门物流管理系统(Ext+SSH)130221.rar

    5. 财务管理:实现财务收支的录入、查询、修改和删除,支持多种支付方式和费用类型,实现财务报表的生成和导出,帮助物流企业实现财务管理的规范化和标准化。 6. 系统管理:提供用户管理、角色管理、权限管理等功能...

    课程设计单片机与PC机串行通讯设计.doc

    xxxxxx大学 课 程 设 计 报 告 课程设计名称:单片机系统综合课程设计 课程设计题目:单片机与PC机串行通讯设计 院(系): 专 业: 班 级: 学 号: 姓 名: 指导教师: 完成日期: 目 录 第1章 总体设计方案……...

    毕业论文-基于JSP的电商管理系统的设计与实现

    采用 JSP、Servlet 和 Oracle 开发,Windows 7 操作系统,用 Ext.js 进行前台网页界面设计、 采用 JNDI 方式与后台数据库进行连接。实现了能够存储和管理大量的数据、承运承储的 添加、订单的处理等功能并且保证客户...

    本项目用C语言在linux下实现ext2文件系统的基本功能.zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...

    基于JSP的电商管理系统的设计与实现-毕业论文

    采用 JSP、Servlet 和 Oracle 开发,Windows 7 操作系统,用 Ext.js 进行前台网页界面设计、 采用 JNDI 方式与后台数据库进行连接。实现了能够存储和管理大量的数据、承运承储的 添加、订单的处理等功能并且保证客户...

    C语言模拟文件系统

    课程设计:开辟一个20M的磁盘空间(20M文件)作为一个磁盘,按照linux位视图的方式管理,可以创建文件,写数据,读取数据等

Global site tag (gtag.js) - Google Analytics