最近在系统学习Extjs框架,从刚一开始接触Extjs到现在发现对Extjs越来越喜欢了。刚开始只是想在页面上实现一个展示大量图片的功能,就像在线订餐系统展示菜单的效果那样,每幅图片上都有一些必要的信息、动作、链接等。效果如下图:

                      

    这样的实现功能其实就是图片及信息重复显示,刚开始本想借助像asp.net中repeater那样的服务器控件来达到一个模板绑定信息重复显示的功能,利用这样的控件还可以起到分页的效果。后来发现这样实现的可能性很小,因为一幅图片加上要显示的信息太多了,更何况还要做出那样美观(主要是布局和信息显示方式)的效果所以就得依靠大量的div来实现,而重点就在于如何把数据绑定到div或div中的控件中,最后发现用这样的服务器控件是行不通的。所以后来就开始考虑有没有像jqueryUI那样的框架可以实现这样的功能,当然这样第一个想到的就是jqueryUI,用jqueryUI来实现图片的大量显示没有问题而且效果还是不错的,因为jqueryUI这样的功能的实现完全靠的是ajax异步与服务器数据交互方式,这样还解决了初始加载页面缓慢的问题。


对JqueryUI框架的一些认识

    

    但后来深入的研究后发现用jqueryUI来实现这样的功能还是有难度的,首先jqueryUI的主要用法就是在页面中把所有需要的标签或控件都在web页面中提前编辑好然后引入相应的js库,然后利用ajax技术或其他方法向后台请求数据,最后就是JqueryUI中的js控制服务器返回的数据显示到web页面上。其实像JqueryUI这样的实现的方法的确挺好的,web页面上负责显示数据信息,而jqueryUI中封装的那些js控制对数据的请求和显示方式(也可以称作一系列的动作),然而jqueryUI的控制层(js库)都是封装好的,也就是说我们可以利用JqueryUI来开发一个实现某一个独立功能的小插件例如日历、下拉框等等。但是如果我们想在原来的插件上继续丰富这些插件的功能就有些难度了,因为每个插件的都对应着一个独立的js(控制层),想在插件与插件之间建立一些联系或互动还是有难度的。所以说jqueryUI用起来相当的简单也容易上手,其关键点就是控制层(jqueryUI的javascript库)已经封装好,当我们用的时候只需要在页面上将对应的标签控件写好,然后按照jqueryUI提供的请求数据的接口去请求获取数据就行。但也就是因为这个原因我们只能按照他的接口去请求相应的数据,其它的方面像数据的显示方式和添加一些额外的动作等这样的功能是很难实现扩展的。

    直到后来接触到了Extjs,发现Extjs的功能太强大了,实现这样的功能实在是太简单了。首先Extjs最突出、最强大的功能是表格功能的实现,而上述功能的实现也基本上就是靠的表格数据处理而且还可以实现分页的效果,基于这个原因对Extjs的第一印象是相当不错的。


对web前台开发的新认识

    

    后来随着研究的深入发现Extjs的效果越来使人震惊,甚至改变了我对javascript的一些看法。从接触javascript以来一直以为javascript作为一个脚本语言,只是简单的配合实现一些动作、特效达到动态网页的效果,接触了Extjs后才发现原来javascript的功能是如此的强悍。首先没接触Extjs之前一直以为web前台开发只是在页面中添加一些客户端控件或服务器控件,最多就是利用div+css+javascript来控制布局和页面的美化。直到后来接触到了Extjs的mvc开发模式之后,发现原来web前台开发还可以这样,蓦然回首发现以前的开发方式太散乱了,完全就是需要什么就加什么代码,尤其是javascript代码。这样的项目开发完成之后发现这一个javascript函数那一个javascript文件,复用的难度大不说,维护和实现功能的扩展更是难上加难!


Extjs强大的UI库及设计理念

    

    Extjs实现了form表单所需要的所有控件,而且界面美观,代码易复用。可以说Extjs功能丰富,无人能出其右. 无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,推拽改变列宽度,按列排序,这些基本功都是基本功能。自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid之间推拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里实现了。

    ExtJS可以用来开发RIA也即富客户端的AJAX应用,基于javascript脚本语言,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。Ext的UI组件模型和开发理念脱胎、成型于Yahoo组件库YUI和Java平台上Swing两者,并为开发者屏蔽了大量跨浏览器方面的处理。相对来说,EXT要比开发者直接针对DOM、W3C对象模型开发UI组件轻松。


one page one application

    

    到后来接触到Extjs的one page one application的理念,更是令人大开眼界。所谓one page one application就是用一个网页来实现一个应用的所有功能。以前没接触过Extjs这样的框架,想实现一个B/S结构的系统靠一个网页怎么可能呢?Extjs让我信了,Extjs的开发方式和他强大的UI组件库完全可以实现这样效果。One page one application 使得在进行业务操作的时候,url的变化表现在一个框架页面内,从浏览器的地址看起来,只有一个地址。甚至,一些应用干脆弹出一个去掉了浏览器菜单、工具条、地址栏、状态栏的窗口,连地址都看不见。因此,一个页面就是一个应用,从用户的角度来说,对于操作型系统,是一种非常自然的体现。这样的效果看起来完全就跟c/s效果一样。


小结

    

    Extjs的学习还在继续,不过最开始接触Extjs的时候犹豫过,总是在考虑这样的问题,像Extjs这样的web前端框架值不值得学,又或者Jquery+jqueryUI与Extjs之间到底选择哪一个。基于这样的问题查了很多的资料,一直在拿jqueryUI与Extjs进行对比,找他们各自的优点、缺点。后来才发现原来对Extjs的学习已经深入,发现最初的哪些顾虑都是错误的想法,因为不管是Jquery还是Extjs他们之所以能称得上是框架,就必然由他们各自的优势。当然所有的东西有它的优点也就必然存在缺陷,不能因为一些缺点就否认了他的优点,更何况Extjs不是还可以兼容Jquery吗?

Extjs——初步学习相关推荐

  1. HTMLParser的初步学习

    Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...

  2. 初步学习pg_control文件之三

    接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...

  3. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作

    [Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...

  4. json2.js的初步学习与了解(转)

    转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...

  5. 【TensorFlow-serving】初步学习模型部署

    前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...

  6. 初步学习pg_control文件之八

    接前文  初步学习pg_control文件之七  继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...

  7. 初步学习pg_control文件之六

    接前文:初步学习pg_control文件之五 ,DB_IN_ARCHIVE_RECOVERY何时出现? 看代码:如果recovery.conf文件存在,则返回 InArchiveRecovery = ...

  8. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助...

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require( ...

  9. 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习

    虚拟机的安装及Linux的初步学习 坎坷的安装过程 首先我按照老师给的基于VirtualBox虚拟机安装Ubuntu图文教程进行了下载,下载很顺利但是安装时出现了问题. 起初我以为是电脑位数问题,但我 ...

最新文章

  1. codeforces #310 div1 C
  2. tomcat中server.xml文件详解
  3. 端到端伪激光图像3D目标检测
  4. 先使用皮尔逊相似性特征选择来训练随机森林
  5. 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]
  6. Java 动态代理原理
  7. python怎么读取文件-Python中怎么读写文件
  8. webpack打包后引用cdn的js_呕心沥血编写的webpack多入口零基础配置 【建议收藏】...
  9. 从XaaS到Java EE – 2012年哪一种该死的云最适合我?
  10. WordPress WP Photo Album Plus插件‘wppa-tag’跨站脚本漏洞
  11. 面试必备之为什么重写equals必须重写hashcode
  12. 人生的第一个js插件
  13. paip.提升用户体验---网站程序HTML,JS需要注意的地方
  14. 12个有趣的HTML5实例(转)
  15. TongWeb8知识总结
  16. Qt-QThread
  17. matlab dcm文件,CT的原始图像.dcm文件的读取
  18. MySQL的索引与事务(面试必考) - 细节狂魔
  19. Linux硬盘分区mbr还是gpt,涨姿势:MBR和GPT硬盘分区表的那些事儿
  20. AWS亚马逊Redshift的特点功能介绍

热门文章

  1. The analysis of frame
  2. 小型校园网的设计与组建
  3. python 中角度与弧度间的转换
  4. 用java语言实现2020年1月1号到2022年7月3号之间的间隔天数
  5. Security:如何安装 Elastic SIEM 和 EDR
  6. mac电脑使用小技巧
  7. Android SurfaceView预览变形完美解决方法
  8. 计算机机房管理系统数据库设计入门经典,机房管理系统数据库设计
  9. C++ QT有道翻译 爬虫 分析 破解
  10. Perforce warning:Can't clobber writable file ...