easyUI与选择WebUI

作者:sagahu@163.com,2013-03-25,太原

关键字:easyUI, 选择WebUI

一、前言

当今网上有了很多的WebUI库,也有很多的网页开发使用这些成套控件而得到了良好的表现与极高的生产效率,正有着很多以前缺乏Web控件积累的程序员/团队/公司在选用并定制最合适自己的WebUI套件。本人使用easyUI为例,向大家介绍自己在选用WebUI库时的一些感受。

说到WebUI库,不得不提到这样一种程序结构:

如图,我们关注其中的UI前端与UI后端2个东西,它们是什么呢?以我的mySagasoft™ WebMIS技术架构为例,我给用户显示的网页都是.html网页,里面只有:html/css/javascript三样成分;而在Web服务器上有着无任何界面元素的.aspx页提供数据服务(也可用.ashx代替);当前者某个局部需要动态数据时,通过javascript/Ajax与后者通信,获得数据来更新哪个局部。这就是说,我把UI拆分成了2层,前面显示给用户的纯静态网页称为UI前端,后面提供数据服务的称为UI后端,中间用Ajax把2者联系起来。其实这种程序结构早在ASP、JSP时代就已经被大牛们总结出来了。这样有着显著的好处:这样便利了UI前端静态效果的设计与UI后端数据服务的独立实现,只需要程序员继续修改2者的通信。特别是对于很多苦恼于ASP.NET程序员与网页美工因服务端控件扯皮事件的软件公司带来了福音。

成套WebUI库技术与产品的出现,给了业内把UI前端与UI后端分层的程序结构提供了强大的支持。可以发现越来越多的公司或者团队正在或者已经选用了适合自己的套件库,逐渐远离微软服务端控件的封装,减少对许多所谓微软新技术的迷信。

二、纵览easyUI框架

(一)按钮与菜单

链接按钮,这是管理软件页面上使用频率最高的;有其它样式,可禁用/启用。

这3个依次是菜单、按钮菜单、下拉菜单。看起来很漂亮,但是如果浏览器禁用脚本的话,哪个效果是惨不忍睹,所以这就使得它们在使用时有局限性:绝不适合用在哪些企业网站首页上!其实在B/S型企业管理软件中我也不多使用。

(二)各种窗口

图示是一个消息提示框,它的消息提示框分为:普通信息、错误、警告、问询、确认、输入提示、进度、右下角显示等等,比较齐全。

其弹出模态对话框也很漂亮,控制也比较详细。普通窗口与对话框类似。

(三)GRID、TREE、TREEGRID3个一样不少

我们作数据呈现时,对于批量数据最常用、最需要的就是Grid、Tree、TreeGrid三样,微软开发工具多年来总是只提供很简陋的前2者。这个控件包3者都提供了,还都比较好用。

这个Grid控件可用鼠标来调整列宽,下面与右面的滚动条也是ASP.NET的标准GridView没有的。个人觉得这是当今B/S企业管理软件GRID必须具有的!

显然这个Tree比ASP.NET的标准好看,也支持单选与复选控制,如果还觉得不好用,可以用国人的自豪——zTree——代替了它。

太多的项目中需要TREEGRID,所以尽量避免单独找一个与其它控件不配套的。

还有个PropertyGrid,用的不多,也不太好用,不说它了。

对于这一套控件包里的GRID与TREEGRID,在数据编辑时最常使用方式是:选择一条记录,弹出这条记录的对话框或者跳转到这条记录的边界页面去操作,完了就单独更新这条记录。这种方式很简单,这套控件支持的很好。另一种方式是直接在控件里编辑多条记录、多个单元格的数据,然后批量提交。这种方式比前一种复杂多了,这套控件也支持,但是本人并没有去深入的体验,所以不能对这方面下什么结论。

(四)窗口上的小控件也很齐全

这套控件包支持非常方便的拖动、改变尺寸、进度条、搜索框、分页、动态加载等等,还有灵活的日期时间选择框,真是精致、齐全、匠心独具!

(五)齐全的组合下拉框

在微软的开发工具里历来没有这些下拉框控件:ComboGrid、ComboTree、ComboTreeGrid等等。但是实际开发中这些都需要,这套控件包就提供了前2者,好像能配置出第3种,记不清了。但是没有这些的控件包你必须另外再配!

(六)不错的布局实现

这是其缺省的主界面布局,特别适合B/S型企业管理软件。它把页面分成上、下、左、右、中5块,可选自己的布局方式。其实每一区域都是一个相对独立的“面板”,支持鼠标拖动调整尺寸与隐藏/显示。支持在“面板”内布局。支持选项卡式布局,虽然这样很费资源。

套件包里还提供了一个很不错的手风琴式菜单控件。

从图上可以看出,这个“面板”支持很多详细的控制,如隐藏/显示/最大化/最小化等,非常具有实用性。

(七)可选的Form元素

自从有了Ajax,动态页面编程时对Form的以来就逐渐弱化,甚至可以不用Form。虽然如此,这套控件包还是提供了这方面的一些功能。

本人就不太使用Form,这一方面我主要使用其数据验证,更确切点说,是使用其友好的数据不合法提示!

(八)HTTP请求与数据绑定

当前大多数JQuery标准控件具有通过url直接请求后端服务的机制,这样可以在URL后面附带上少量简单数据。而这套控件在此基础上支持定义post/get方式,支持请求中附带参数。我认为很有必要支持带参数的POST请求,这样才能附带较大数据量,也提高了安全性。

大多数JQuery标准控件通过url请求返回的json数据而直接绑定到了控件上。这种情况下,后端数据格式与前端控件要求的数据格式之间的转换,只能是放在后端,理论上会增加后端的负载。但实际应用中,难免需要把数据格式转换工作放在客户端浏览器javascript里,就是说不希望直接绑定,是后端数据反馈回本地进行处理后再绑定到控件上。例如,后端返回bool值1/0要在前端用checkbox显示,或者弥补一些服务端对象/Json转换在日期时间类型上的不足,或者就是为了把计算负载转移到客户端等情况。总结就是数据返回与绑定之间允许再插入干预操作。这套控件在这一点上就做的比较好。例如DataGrid控件除了url/参数直接请求/绑定方式,还有后期绑定数据的方法,参看下面的代码:

function loadPage(pageNumber, pageSize) {

  addCookie("RolePageSize", pageSize, 7);

  var where = getWhere();

  var url = "../MisBaseV2_Behind/RoleManager.aspx";

  var data = { "ReqKey": "GetListPage", "pageSize": pageSize, "pageIndex": pageNumber,

    "where": where, "orderBy": "Id asc"

  };

  $.ajax({

    type: "POST", url: url, data: data, dataType: "json",

    success: function (result) {

      if (!handleMyAjaxResult(result))

        return;

      var chk0 = "<input type='checkbox' disabled='disabled' />";

      var chk1 = "<input type='checkbox' disabled='disabled' checked='checked' />";

      $.each(result.Data.rows, function (i, roleData) {

        roleData.IsAdmin = roleData.IsAdmin > 0 ? chk1 : chk0;

        roleData.IsSystemic = roleData.IsSystemic > 0 ? chk1 : chk0;

      });

      $("#table1").datagrid("loadData", result.Data);

    }

  });

}

上面代码里,把请求返回的数据处理后,再绑定给table1。这显然不是通过url请求/响应的直接绑定。

(九)支持切换与定制Theme

这个套件缺省有3套Theme,虽然支持定制Theme与动态切换,笔者现在还没有学会。如果与其它WebUI控件混用,会非常需要统一的Theme,所以这一点就是非常必要了。所以我说,如果公司/团队选择它来做自己的产品架构时,一定要追求这一点。

(十)比较成熟

我实际使用过,觉得这套控件比其它同类产品要成熟、可靠些。

与LigerUI相比,后者好像是模仿前者,而且网上反映BUG多多,更糟的是原作者早停止更新了,所以后者的应用只能停留于一些jQuery高手。easyUI的官网一直在持续更新。

看到一套基于ExtJS的开源套件——FineUI,没亲自用过。只是有这样的顾虑:听说ExtJS是收费的;听说ExtJS的性能不如jQuery;当前JS框架排名最靠前的是jQuery,应用最广,而ExtJS则次一些,其投资价值小很多吧?

(十一)郁闷的代码半开源

这套控件包最大的遗憾就是:它的代码是半开源的,对于实际使用时需要做必要的修改是非常困难的,这就是其最大的弊病。也许有经济实力的团队/公司购买源代码可以解决这个问题。

第二个弱点就是它们主要适于非禁用JS脚本的场合,特别是慎用那些在禁用JS脚本时界面会变的很悲惨的控件。

三、总结WebUI选择标准

我总结选择WebUI包的标准,大概如下:

(1)开源代码,最好免费:开源才能在必要的情况下方便地修改,这一点是非常必要的。如果不开源的话,那就非常需要购买到其源代码,并且有能力作必要的修改。不免费资源,那是少数的有钱人的选择。

(2)功能齐全,并且方便与其它外加控件不排斥:一套控件包,本身包含的功能需要比较齐全,在实际应用中基本够用,很少需要再找其它插件。如果确实需要用到了其它另外的插件,也不应该发生技术排斥问题。

(3)必要的支持POST请求方式:需要具有HTTP请求的控件,必须支持可附带参数的POST请求方式,就是为了满足二点:一是发送较大数据量,二是数据安全要求。

(4)数据绑定必须灵活,可以处理后再绑定:绝对不能指望后端反馈回的数据格式在任何情况下都满足前端控件要求,必须允许在数据返回与绑定之间插入必要的处理。

(5)可修改皮肤样式,支持动态切换Theme:只有这样才能为应用系统实现统一的界面风格,实现本WebUI包与可能需要的外扩插件界面风格的统一。

(6)足够成熟、稳定:不应该在实际应用中发现BUG多多,给项目工作增加太多的负载。

四、如何执行WebUI选择工作

软件公司/团队需要构建自己的组建库,需要建设、选择自己的WebUI库,为此我阐述了自己的WebUI选择标准,接下来就需要考虑如何具体的安排、部署执行这项工作,并且规划好达标的标准。

如果是公司的话,那人手多啊。第一步工作:可以安排1~3个熟悉javascript、jQuery、前端设计的技术老手,大约使用1-2周的时间(象easyUI需要的时间就这么多),参考网上资料,编写一本技术手册。当然,技术手册就是从纯技术角度去说明问题,而且要与通用技术资料有所却别,就是要注重标准使用中比较关键的地方,或者缺陷,或者适用场合。第二步工作是:结合自己公司的产品系统架构,试验、总结在界面层应用的规律,编写界面模版与代码模版。第三步工作是:把在产品系统架构中使用的方法,就是前面总结的界面模版与代码模版,编写进本公司产品架构教学手册中去。显然后面第二、三步工作比第一步更加趋近实际应用,也更加费劲了!

如果是个人的话,那么只能先做读书笔记,特别注意记录关键点、缺陷与使用场合;下一步试验、总结自己的界面模版与代码模版了。

五、一些参考资源

easyUI官网:http://www.jeasyui.com/

http://www.easyui.org.cn/

FineUI:http://fineui.com/,一套基于ExtJS的开源WebUI套件。

国产树控件:http://www.ztree.me/v3/main.php#_zTreeInfo

中国jQuery插件网:

开源中国社区jQuery:http://www.oschina.net/p/jquerypp

慧都控件网:http://***/

转载于:https://www.cnblogs.com/sagahu/archive/2013/03/26/2983756.html

easyUI与选择WebUI相关推荐

  1. easyui select选择框模糊查询 以及页面引入多个版本的jquery解决办法

    eaeyui版本1.4.4,下载地址 http://www.jeasyui.com/download/index.php 下拉框模糊查询例子: <%@ page language="j ...

  2. java前台传多个id用什么接收_jsp 页面传多个id 到java后台的处理方式

    java 开发中经常遇到 jsp 页面传多个id 到后台处理的情况.比如:批量删除选择内容等....... 我使用的解决的方法两种: jsp 传多个id:使用easyui datagrid 选择多行方 ...

  3. linux 编程博客,Linux系统编程博客参考

    Jquery中的日历插件 这个插件很简单:只需要在HTML代码中引入插件如下,CLASS名和click事件函数固定! ... Apache Solr 访问权限控制 Current state of a ...

  4. 总结了一套比较新的面试题挺全面的,多方面都有涉及到

    1.数据库左连接右连接 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接.      内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行 ...

  5. RuPengWang项目

    RuPengWang项目 项目 Day1------------------------- 说明:建外键约束.ashx+Razor RupengWang 创建三个类库Model DAL BLL 后台: ...

  6. 深入实践Spring

    深入实践Spring Boot 陈韶健 著 图书在版编目(CIP)数据 深入实践Spring Boot / 陈韶健著. -北京:机械工业出版社,2016.10 ISBN 978-7-111-55088 ...

  7. 聚星Note01 - 后台管理环境搭建(1)

    聚星Note01 - 后台管理环境搭建1 1 项目概述 1.1 版权声明 1.2 鸣谢 2 idea 创建工程 2.1 创建 maven 父工程 2.2 创建 maven 子模块 2.3 创建 mav ...

  8. Oracle调优总结--1(经典实践 重要)

    Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...

  9. (转)基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作...

    http://www.cnblogs.com/wuhuacong/p/4093778.html 在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界 ...

最新文章

  1. Normal2Height工具已经完成
  2. gstreamer 获取帧数据_Android App卡顿率(顺滑度、顺滑度)并整理数据
  3. 《数据库原理与应用》(第三版) 第8章 关系数据库理论 基础 习题参考答案
  4. 原生js封装table表格操作,获取任意行列td,任意单行单列方法
  5. linux镜像包含数据库数据么,docker 镜像中包含数据库环境和运行环境
  6. 微信小程序在线客服系统都有哪些功能?
  7. linux之秘钥登录
  8. 开课吧9.9元学python靠谱吗-开课吧的python课程怎么样,值得报名吗?
  9. android命令行wifi开关,Android系统SVC命令(命令行WIFI开关、GPRS移动数据开关)
  10. 自动化测试是测试人员的遮羞布?
  11. matlab绘制图像的直方图、杆状图和折线图等
  12. 移动前端开发人员必知必会:移动设备概述
  13. 用Java计算黄金分割率_java 实现黄金分割数的示例详解
  14. 服务器及电脑主机系统安全加固操作手册
  15. 技术干货 | MindSpore AI科学计算系列(三):SciML分析
  16. BOM 和 DOM 的区别是什么?
  17. STM32驱动_cc2420
  18. Download Example
  19. 最受欢迎的11个Python编程软件,让你的工作效率直接原地起飞
  20. 大型数据中心互联(T级光传输方案)

热门文章

  1. 冰刃——IceSword
  2. 中交兴路完成7亿元A轮融资,携手蚂蚁金服共建小微物流科技服务生态
  3. 深度有趣 | 06 变分自编码器
  4. Docker 简介与安装
  5. 区块链应用和法律规范
  6. Servlet 2.0 Servlet 3.0 新特性
  7. Go -- 配置监控系统
  8. 为 ActionScript 导出库元件
  9. 用C#制作新闻阅读器(电脑报2005年3月14日 第10期)
  10. 基数排序python实现