`
javalinjx
  • 浏览: 87539 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

easyui

阅读更多

 

jquery easyUI分析报告

设计目的

使得开发web网站更容易.

  • easyui收集了许多基于jquery的用户界面插件.
  • 开发者可以编写更少的javascript代码,而只需要编写一些html标志定义好用户界面.
  • easyui非常简单但是非常强大.

相关资源

(如果你注意到域名中有wiki,那么你肯定是个搞IT的.哈..wiki至少说明了一点:

  1. 它是有活力的,任何人都可以参与编写,定制和扩展.

优点

  • 相比extjs组件级的开发,easyui更接近于html.不仅适合通用网站开发,也可以用来开发企业级的网站.
  • 如果说extjs是航空母舰,那么easyui就是瑞士军刀.
  • 效率要比extjs要好.

缺点

  • 在ie6下会有一些兼容性的问题.
  • 它不是开源的,发布的代码混淆并压缩过.一旦出了问题,会让人抓狂的.看这里
  • 它的文档太少,论坛也比较冷清.支撑easyUI的人就那么官方的几个.
  • 它的走向不确定,以后可能会商业收费
  • 它的布局组件也比较少,如果让开发人员自己来布局,那么很考开发人员的前端基本功哦.

开源问题的说明: 通过搜索引擎还是能找到的.在这里. 问题在于为什么被遮盖起来呢?所有的地方都没有任何关于源代码的说明。这个地址也是被关上了。要不是有搜索引擎,你根本找不到。我估计如果不是无法彻底关闭非登录用户,我估计你就是看到了也进不去。

数据模型与技术分析

 
    数据模型是多样的,所有的控件统一支持json格式的数据.如果使用这个框架,那么后台的代码基本不用动.
开发人员定义好html标志后,再编写少量的js代码.easyui会根据html标志,调用相关的组件生成程序.绑定相关的样式和事件.
下面是一个easyui官方提供的可编辑列表的示例.

可编辑列表示例

列表的数据结构是这样的:

04 {"total":28,"rows":[
05     {"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":36.50,"attr1":"Large","itemid":"EST-1"},
06     {"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
07     {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":28.50,"attr1":"Venomless","itemid":"EST-11"},
08     {"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":26.50,"attr1":"Rattleless","itemid":"EST-12"},
09     {"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":35.50,"attr1":"Green Adult","itemid":"EST-13"},
10     {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":158.50,"attr1":"Tailless","itemid":"EST-14"},
11     {"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":83.50,"attr1":"With tail","itemid":"EST-15"},
12     {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":63.50,"attr1":"Adult Female","itemid":"EST-16"},
13     {"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":89.50,"attr1":"Adult Male","itemid":"EST-17"},
14     {"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":63.50,"attr1":"Adult Male","itemid":"EST-18"}
15 ]}

代码如下所示:

004 <html>
005 <head>
006     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
007     <title>jQuery EasyUI</title>
008     <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css">
009     <link rel="stylesheet" type="text/css" href="../themes/icon.css">
010     <script type="text/javascript" src="../jquery-1.4.4.min.js"></script>
011     <script type="text/javascript" src="../jquery.easyui.min.js"></script>
012     <script>
013         var products = [
014             {productid:'FI-SW-01',name:'Koi'},
015             {productid:'K9-DL-01',name:'Dalmation'},
016             {productid:'RP-SN-01',name:'Rattlesnake'},
017             {productid:'RP-LI-02',name:'Iguana'},
018             {productid:'FL-DSH-01',name:'Manx'},
019             {productid:'FL-DLH-02',name:'Persian'},
020             {productid:'AV-CB-01',name:'Amazon Parrot'}
021         ];
022         function productFormatter(value){
023             for(var i=0; i<products.length; i++){
024                 if (products[i].productid == value) return products[i].name;
025             }
026             return value;
027         }
028         $(function(){
029             var lastIndex;
030             $('#tt').datagrid({
031                 toolbar:[{
032                     text:'append',
033                     iconCls:'icon-add',
034                     handler:function(){
035                     $('#tt').datagrid('endEdit', lastIndex);
036                         $('#tt').datagrid('appendRow',{
037                             itemid:'',
038                             productid:'',
039                             listprice:'',
040                             unitprice:'',
041                             attr1:'',
042                             status:'P'
043                         });
044                         var lastIndex = $('#tt').datagrid('getRows').length-1;
045                         $('#tt').datagrid('beginEdit', lastIndex);
046                     }
047                 },'-',{
048                     text:'delete',
049                     iconCls:'icon-remove',
050                     handler:function(){
051                         var row = $('#tt').datagrid('getSelected');
052                         if (row){
053                             var index = $('#tt').datagrid('getRowIndex', row);
054                             $('#tt').datagrid('deleteRow', index);
055                         }
056                     }
057                 },'-',{
058                     text:'accept',
059                     iconCls:'icon-save',
060                     handler:function(){
061                         $('#tt').datagrid('acceptChanges');
062                     }
063                 },'-',{
064                     text:'reject',
065                     iconCls:'icon-undo',
066                     handler:function(){
067                         $('#tt').datagrid('rejectChanges');
068                     }
069                 },'-',{
070                     text:'getChanges',
071                     iconCls:'icon-search',
072                     handler:function(){
073                         var rows = $('#tt').datagrid('getChanges');
074                         alert('changed rows: ' + rows.length + ' lines');
075                     }
076                 }],
077                 onBeforeLoad:function(){
078                     $(this).datagrid('rejectChanges');
079                 },
080                 onClickRow:function(rowIndex){
081                     if (lastIndex != rowIndex){
082                         $('#tt').datagrid('endEdit', lastIndex);
083                         $('#tt').datagrid('beginEdit', rowIndex);
084                     }
085                     lastIndex = rowIndex;
086                 }
087             });
088         });
089     </script>
090 </head>
091 <body>
092     <h1>Editable DataGrid</h1>
093     <table id="tt" style="width:650px;height:auto"
094             title="Editable DataGrid" iconCls="icon-edit" singleSelect="true"
095             idField="itemid" url="datagrid_data2.json">
096         <thead>
097             <tr>
098                 <th field="itemid" width="80">Item ID</th>
099                 <th field="productid" width="100" formatter="productFormatter" editor="{type:'combobox',options:{valueField:'productid',textField:'name',data:products,required:true}}">Product</th>
100                 <th field="listprice" width="80" align="right" editor="{type:'numberbox',options:{precision:1}}">List Price</th>
101                 <th field="unitcost" width="80" align="right" editor="numberbox">Unit Cost</th>
102                 <th field="attr1" width="150" editor="text">Attribute</th>
103                 <th field="status" width="60" align="center" editor="{type:'checkbox',options:{on:'P',off:''}}">Status</th>
104             </tr>
105         </thead>
106     </table>
107 </body>
108 </html>

简要说明一下:

  • 上例子定义了一个标志为table的dom元素,调用js代码 $('#tt').datagrid() 会生成一个grid列表,它还可以传递一个object级的对象充当配置元素.

如上例中配置的就是一个工具栏.

初步结论

easyui适用于开发简单的通用网站,对于企业级的项目开发存在比较大的风险.它不是开源的,它发布的源码经过混淆和压缩,一旦出了问题,将会很难调试. 另外,easyui是基于jquery的,jquery是比较容易上手,但要精通它很困难的,因为它的源码很有点天马行空的风格.所以我认为,easyui是有一定的学习门槛的, 尤其是在它不开源的情况下.这个风险要慎重评估.

一个可行的方案

一个可行的方案是有条件地选择它收集的jquery-ui插件,在开发过程中通过easyloader动态加载用户控件脚本. 目前这些源码还可以通过svn签出来.地址在这里, 但它的学习门槛也比较高.因为开发人员需要自己去扩展它去适应多变的业务需求.

转载自:

http://www.cnblogs.com/ms_config/archive/2011/02/17/1957208.html

 

分享到:
评论
1 楼 wangsuiri 2012-01-17  

相关推荐

    easyui_demo_DEMO_easyui的一个demo_easyui_

    "easyui_demo_DEMO_easyui的一个demo_easyui_" 这个标题表明这是一个关于 EasyUI 的演示项目,用于展示其组件的功能和用法。 在描述中提到,这是一个 EasyUI 界面的模板,意味着它包含了一个基本的框架,可以被导入...

    easyUI例子_easyui1.4.4_一套EASYUI的经典后台管理模板_jquery_

    EasyUI 是一个基于 jQuery 的前端框架,主要用于快速构建用户界面,尤其适用于后台管理系统。这个"easyUI例子_easyui1.4.4"压缩包提供了一套使用 EasyUI 1.4.4 版本的经典后台管理模板,适用于开发人员快速搭建功能...

    jquery-easyui-themes.rar_easyui 主题_easyui主题_html_jquery_jquery-e

    《jQuery EasyUI 主题详解与应用》 jQuery EasyUI 是一款基于 jQuery 的前端框架,它提供了丰富的组件和易于使用的API,极大地简化了Web界面的开发。而其核心魅力之一,便是丰富的主题系统,使得开发者可以轻松定制...

    jquery-easyui.zip_easyui框架_html 框架_jquery-easyui

    EasyUI 是一个基于 jQuery 的轻量级前端框架,它为开发者提供了一系列的组件和插件,使得构建交互式用户界面变得更加便捷。这个压缩包“jquery-easyui.zip”包含了使用 EasyUI 实现的一个HTML框架,它主要用于简化...

    EasyUI InsdepTheme EasyUI的皮肤美化 免费版

    EasyUI InsdepTheme是一款基于EasyUI的皮肤美化版本,它为开发者提供了更加美观且自定义的界面风格。EasyUI是一个轻量级的JavaScript框架,主要用于构建Web应用的用户界面,它基于jQuery,提供了丰富的组件和易用的...

    jquery-easyui-1.4.5_easyuiapi_

    《jQuery EasyUI 1.4.5 API详解》 jQuery EasyUI 是一款基于 jQuery 的前端框架,它提供了丰富的用户界面组件,使得开发者可以快速构建出美观且功能强大的Web应用。在本文中,我们将深入探讨jQuery EasyUI 1.4.5...

    easyui官方离线文档

    EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,帮助开发者快速构建用户界面。这个"easyui官方离线文档"包含了丰富的资源,包括demo、源码、演示以及针对现代前端框架如Vue、Angular和React的...

    easyui1000个ico图标

    EasyUI 是一个基于 jQuery 的前端开发框架,专为构建用户界面而设计。它提供了一套完整的组件和样式,包括布局、表格、对话框、菜单、按钮等,使得开发者能够快速地构建出美观且功能丰富的 web 应用。在这个“easyui...

    EasyUI textbox事件,EasyUI textbox input events

    在使用UasyUI的时候,在一般的input输入框上添加class="easyui-textbox"属性,则在该输入框上添加的事件将不起作用,但是如果去掉class="easyui-textbox"变成一般的input则起作用。 控件的生成原理,它是把你原有的...

    全套EasyUI示例源码

    EasyUI 是一款基于 jQuery 的 UI 组件库,它提供了丰富的界面元素和布局功能,使得开发者能够快速构建出美观且响应式的 web 应用程序。"全套EasyUI示例源码"是一个包含三十多个组件的完整示例集合,可以帮助开发者...

    easyui的入门教程

    EasyUI 是一个基于 jQuery 的前端框架,用于快速构建用户界面。它简化了网页开发过程,提供了丰富的组件和统一的API接口,使得开发者可以更专注于业务逻辑而非页面展示的细节。这个"jQuery_EasyUI_v1.3.5.exe"文件很...

    EasyUI 多层导航框架

    【EasyUI 多层导航框架】是一个基于JavaScript和CSS的前端框架,专为构建具有高效用户体验的Web应用程序而设计。EasyUI提供了一系列组件,包括布局、表格、对话框、菜单、按钮、表单等,而多层导航框架则是其在实际...

    EasyUI 完整源代码 1.5.0

    EasyUI 是一个基于 jQuery 的前端框架,用于快速开发简洁、美观的Web应用程序界面。这个压缩包包含的是EasyUI 1.5.0的完整源代码,具有官方授权,确保了开发者能够深入理解并自定义其组件,而不受压缩代码的困扰。 ...

    easyui-textbox和easyui-combobox的onchange事件响应实例

    在前端开发中,EasyUI 是一个基于 jQuery 的 UI 框架,它提供了一系列美观、易用的组件,用于构建用户界面。在这个实例中,我们将深入探讨 EasyUI 中的两个重要组件:`easyui-textbox` 和 `easyui-combobox`,以及...

    最新EasyUI扁平化

    EasyUI是中国程序员喜爱的一款基于jQuery的前端用户界面框架,它为快速开发Web应用提供了丰富的组件和功能。"最新EasyUI扁平化"标题暗示我们关注的是EasyUI的一个更新版本,可能着重于现代扁平化设计趋势,这在当前...

    uimaker分享-免费漂亮easyui主题eayui皮肤easyui组件美化模版黑色+蓝色html后台管理模版

    EasyUI 是一个基于 jQuery 的轻量级前端框架,它提供了丰富的组件和易于使用的主题系统,使得开发者能够快速构建用户界面。本套分享的资源是一组免费且漂亮的 EasyUI 主题,包括黑色和蓝色两种风格,适用于后台管理...

    easyui视频教程(6)

    EasyUI 是一个基于 jQuery 的轻量级用户界面框架,它为开发者提供了丰富的组件,包括布局、表格、对话框、树形菜单、表单等,帮助快速构建美观且响应式的 web 应用程序。"easyui 视频教程(6)"显然是针对初学者设计的...

    简单的easyui页面

    EasyUI是一种基于JavaScript和CSS的前端框架,专为构建用户界面而设计,尤其适用于后台管理系统。这个名为"简单的easyui页面"的项目提供了一个简化版的EasyUI页面,非常适合用作前台UI界面,以实现简洁、高效的用户...

    EasyUI登录页面.zip

    EasyUI是一种轻量级的前端开发框架,专为简化网页应用和后台管理系统界面设计而创建。这个名为"EasyUI登录页面.zip"的压缩包文件包含了使用EasyUI框架构建的一个登录页面的相关资源。EasyUI框架主要基于jQuery,它...

    easyUI时间控件使用

    在本文中,我们将深入探讨如何在EasyUI框架中有效地使用时间控件,以及如何解决时间格式化的问题。EasyUI是一个基于jQuery的轻量级前端开发框架,它提供了一系列丰富的组件,帮助开发者快速构建用户界面。时间控件是...

Global site tag (gtag.js) - Google Analytics