`
zhongxiucheng
  • 浏览: 70883 次
  • 性别: 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 Designer EXt UI设计插件

    通过EXT Designer,开发者和设计师能够以更加高效和灵活的方式构建EXT UI,降低了开发复杂度,提升了用户体验。EXT Designer的出现,无疑为EXT JS的应用开发带来了一种全新的设计体验,促进了前端开发的创新和进步。

    ext设计器BS版

    这种设计方式大大降低了EXT应用开发的门槛,使得非专业前端开发者也能快速上手。 2. **代码生成功能**:设计完成后,EXT设计器能够自动生成对应的EXT代码。这意味着开发者可以专注于UI设计,而不需要手动编写大量的...

    EXT设计器 Ext Designer Preview非官方版

    EXT设计器,全称为Ext Designer,是一款专为EXT JS框架设计的可视化界面构建工具。EXT JS是一种基于JavaScript的富客户端应用开发框架,它提供了一系列强大的组件和API,用于创建交互式、数据驱动的Web应用程序。EXT...

    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 界面设计器 配置好的可以直接使用

    这样的设计方式降低了学习曲线,使得非专业程序员也能快速上手创建复杂的用户界面。 生成代码是设计器的另一大亮点。当界面设计完成后,设计器会自动生成相应的Ext JS代码,这包括组件定义、布局配置、样式设定以及...

    ext3.jar ext使用非常多

    例如,对AJAX请求进行了优化,增强了数据存储和模型的处理能力,同时扩展了布局选项,使得开发者能更灵活地设计用户界面。EXT3.0还加强了对不同浏览器的兼容性,使得应用程序能在多种浏览器环境下稳定运行。 EXT3....

    ext表单设计器,常用表单拖拉实现

    EXT表单设计器充分利用EXT库的功能,提供了可视化的设计界面,允许开发者通过拖放的方式创建复杂的表单结构,而无需编写大量的HTML和JavaScript代码。 EXT表单是EXT库的核心组件之一,用于构建用户输入数据的界面。...

    Ext4 MVC 框架设计

    总的来说,Ext4 MVC框架提供了一种高效且结构化的Web开发方式,让开发者能够专注于业务逻辑和用户体验,而不是底层数据处理和界面渲染的细节。通过熟练掌握这一框架,可以极大地提升Web应用的开发效率和质量。

    ext designer 设计实例

    EXT Designer是一款强大的可视化界面设计工具,主要用于创建EXT JS应用程序的用户界面。EXT JS是一个流行的JavaScript框架,用于构建富客户端Web应用。在这个“EXT Designer 设计实例”中,我们将深入探讨如何利用...

    Ext JS的table设计实例

    在"Ext JS的table设计实例"中,我们主要关注的是如何利用Ext JS来设计功能丰富的表格组件,包括表格的可编辑性、可排序性以及如何从XML数据源中读取并显示数据。 首先,Ext JS中的表格组件(`Ext.grid.Panel`或现代...

    Ext Designer 可视化设计器及汉化全攻略

    Ext Designer 提供了一个直观的图形界面,用户可以在这个界面上设计和组织组件,如按钮、面板、表格等。它支持多种布局模式,包括表格布局、绝对布局、Fit布局等,使开发者能灵活构建各种复杂的UI结构。此外,...

    ext PPT,EXT 教程,EXT 中文帮助手册,EXT 中文手册,ext_教程(入门到精通),Ext技术程序文档大全.

    EXT,全称EXT JS,是一种基于JavaScript的开源前端框架,专为构建富互联网应用程序(Rich Internet Applications, RIA)设计。EXT提供了丰富的组件库,包括数据管理、用户界面控件和布局管理,使得开发者能够创建...

    EXT2.3+EXT2.0教程

    总的来说,EXT2.0和EXT2.3教程为学习者提供了全面的EXT开发知识,包括但不限于组件使用、布局设计、数据绑定、AJAX交互等方面。配合中文手册和源码,无论是入门还是深入研究,都能为开发者提供强有力的支持。通过...

    EXT学习心得,ext

    这一布局方式确保了元素不仅在视觉上美观,而且在响应式设计中也能保持良好的用户体验。 #### 表格复选框的实现方式 EXT提供两种主要方法来实现表格中的复选框: 1. **使用列定义添加复选框**:可以通过在`...

    ext_设计工具.rar

    总的来说,ExtDesigner作为ExtJS的辅助设计工具,为开发者提供了一种高效且直观的设计方式,使得创建复杂的Web应用界面变得更加简单。通过熟悉和掌握这个工具,你可以提升开发效率,同时保持应用的高质量和一致性。

    ext designer 在线版

    EXT Designer是一款强大的Web应用程序界面设计工具,主要用于创建EXT JS库的用户界面。EXT JS是一个流行的JavaScript框架,用于构建交互式的、数据驱动的富互联网应用程序(RIA)。EXT Designer在线版的独特之处在于...

    Ext教程ext2-Ext简易教程

    Ext的布局系统是其强大功能的关键之一,提供了多种布局方式以适应不同的设计需求。常见的布局包括: 1. Accordion布局:这种布局将子组件折叠在一起,一次只显示一个。 2. Border布局:将容器分为五个区域(东、南...

    ext 中文源代码

    4. **Layouts**:EXT的布局管理器负责管理组件的尺寸和位置,支持各种复杂的布局方式,如绝对布局、表单布局、列布局等。 5. **Ajax**:提供了与服务器进行异步通信的接口,可以方便地进行JSON、XML等格式的数据...

    ext4文件系统源码

    EXT4的设计目标是解决EXT3在大容量硬盘上的局限性,例如提高文件系统的最大容量和单个文件大小。在EXT4中,最大文件系统容量可以达到16EB(1EB = 1024PB),单个文件大小可以达到16TB。此外,EXT4引入了快速分配、...

Global site tag (gtag.js) - Google Analytics