Extjs的架构设计思考,单页面应用 or 多页面?

本文探讨EXTJS单页面应用的优势,包括内存占用优化、自适应布局改进及iframe替代方案。同时,深入讲解组件化、模块化编程方法,以及UI与逻辑分离的设计理念,提升开发效率和代码质量。

写在前面:不要认为 EXTJS 高版本就是一个界面改良,在项目中,仍然用 N 张页面,在 N 张页面部署 EXTJS .这种方式不用多讲,效率问题大家都看得出来, EXTJS 是一个集成开发工具,注定他的开发包很大,一个 600 多 K 的 JS 文件,打算让它下载多少次呢?应该说, EXTJS 不仅是一个 AJAX 开发框架,也是一个富客户端开发平台, AJAX 是可以部署到多个页面,但不推荐这样做,Extjs能和 FLEX 一样,在一张页面中,完成项目中所有事件。 

一、单页面 
目前的应用方式:一个 Viewport ,点击每个菜单在 Viewport 的 center 区域生成一个 tab ,这个 tab 就是一个 panel , panel 中用 html 属性放置一个 iframe ,用 iframe 去加载另外一个全新的页面。 

单页面方式:还是一个 Viewport ,点击每个菜单在 Viewport 的 center 区域生成一个 tab ,这个 tab 就是一个 panel ,但是 panel 中不使用 iframe ,而是将原来用 iframe 方式加载的内容,直接“画”在 panel 中。 

目前的应用方式的问题: 
1.  占用内存超高:每个 tab 都会用 iframe 加载一个全新的页面,每个页面都会载入一套完整的 ExtJS 的运行环境,由于浏览器的原因,这些 tab 关闭的时候内存不会完全释放,这样随着 tab 的开关,内存占用越来越多,占用几百 M 都没问题。 
2.  center 区域内部的宽高,无法随浏览器宽高变化,无法自适应 
3.  iframe 内外相互控制,内外沟通非常困难 
4. 需要消耗额外的 js 解析时间,速度慢,重新加载要消耗解析 js 的时间 
5.  用 iframe 有时候会导致一些莫名其妙的变形问题,滚动条问题 



单页面方式: 
1. 不用 iframe 加载, ExtJS 自己会释放无用的对象、事件占用的内存,一般一个应用只占用几十 M 内存 
2.  由于是在一个页面内, ExtJS 自己可以掌控宽高自适应 
3. 单一页面无此问题 
4. 只需要第一次载入页面的时候加载 ExtJS 运行库 
5.  很容易控制,无此问题 


二、组件化、模块化
编写 ExtJS 程序,应该像搭积木一样,在 Viewport 这样一个框架中,我们添加各种积木块进去得到我们想要的形状。 Extjs 给我们提供了很多最小块的积木,每一块都是一个组件,我们可以将几个最小的组件组合成一个稍微大一点的组件,我们不可能每个功能都从最小的组件从头搭建,我们可以收集一些更大一些的组件,实现这个层面的组件复用,组件是可大可小的,组件的复用也是可大可小的。组件化编程是一个思想,而不是一门技术,这个思想可以用在任何地方。 

三、 UI 与逻辑分离 
可能大家都已近习惯了将 handler 和 listeners 与一大堆 Config Options 写在一起了。不能说这是一种错误的用法,但是这绝对不是好用法。类似下面这种代码是不是随处可见呢? 
   

这种写法,再加上全集变量泛滥,就会导致整个 js 文件混乱不堪,一个 js 文件 3000 行代码,全局变量满天飞,想要的时候找不到,我想大家都遇到过吧。 
 

再看一下下面这段代码,不会不感觉清爽很多呢  

 


UI 与逻辑分离,就是在设计一个组件的时候,将 UI 写成一个类,将事件处理和其他逻辑写成另外一个类,两个类存放在两个不同的 js 文件中 ( 非必须 ) 。这样子的好处: 
1.  改动 UI 和逻辑,几乎不会相互影响 
2.  代码清晰规范,提高开发速度,降低维护成本 
3.  组件可以重用,界面可以重用 
4.  有利于开发规范的统一 
5.  因为使用继承,内存开销减少,运行速度加快

转载自:http://shubangjun.iteye.com/blog/1009094

 

转载于:https://www.cnblogs.com/niejunchan/p/4986099.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值