`

讨论一下,Ext里哪个组件设计的最不好

阅读更多
最近在一直做Ext的研究 代码结构方面的.
并且做一些修改和扩展.
多少也研究了不少他的组件.

EXT有多强大多NB就不用我多说了 但是任何好的事物也都有不好的方面

大家来讨论讨论呢 哪个ext的组件设计的不最不好吧

我先说说我的观点:

我觉得最不好的就是 他的树.
首先 设计的不够灵活(想灵活也行 但是需要开发人员做很多事情)
其次 严重违背了ext自己的一个设计理念: 数据与展现分离.

Tree,Node,TreePanel, TreeNode,AsyncTreeNode,TreeNodeUI, TreeLoader....
彼此之间的关系混乱复杂, 有很多错误的关系(我认为错误 并不一定真的错误)


大家觉得还有哪些组件设计的不够好呢???


下面附上一张我对ext tree的分析图 还有我的一个重构目标




分享到:
评论
22 楼 liweisex 2008-12-18  
发表评论的都是牛人。发个跟屁贴表示我存在过、关注过、路过。
21 楼 walkman 2008-12-17  
很多涉及 ajax 请求的组件不能自定义请求参数,比如 TreeLoader 的 requestData 方法,我要在请求的时候添加一个 header,就只有重写该类的这个方法,否则必须继承该类再重写这个方法,很郁闷

这个情况在其他组件中也经常遇到
20 楼 nihongye 2008-10-06  
hqs998 写道
EXT用的不多,就几个月前为一项目做了些模块
1、property grid 的确很吐血,得频繁的看源代码来了解其工作原理和属性等等,并且放入数据的格式还分为source和store,store比较灵活些,能直接把后台的传来的JSON数据放进去,但是做项目时好像是不好刷新中间的数据,source就太死了,只能把数据硬写进去

2、EXT的布局也比较烦人,感觉比swing还难调试。。好像现在出了类似DELPHI一样的拖拉组件能方便一些?

一些细节的东西,文档和例子没交代清楚,需要自己看代码挖掘,了解清楚后,布局很好控制
19 楼 walkman 2008-10-06  
本人窃以为,ext那些成型的组件都是给懒人用的,是告诉你我可以做成这样的效果,我可以牛逼到这个程度。但是一个成型的产品你还想怎么修改怎么扩展??
应用它的 Observable 类,从 Component 到 Container 一路继承下来开发自己的组件才是硬道理,否则你的网站也只是成千上万个使用 ext 的站点中风格雷同的一个:(
18 楼 hqs998 2008-09-26  
EXT用的不多,就几个月前为一项目做了些模块
1、property grid 的确很吐血,得频繁的看源代码来了解其工作原理和属性等等,并且放入数据的格式还分为source和store,store比较灵活些,能直接把后台的传来的JSON数据放进去,但是做项目时好像是不好刷新中间的数据,source就太死了,只能把数据硬写进去

2、EXT的布局也比较烦人,感觉比swing还难调试。。好像现在出了类似DELPHI一样的拖拉组件能方便一些?
17 楼 bailm 2008-09-22  
呵呵,接触这个东西很久了,但是没研究过底层的东西。
要说不好用的,有个property grid,我一看到就惊讶,一用就想自杀
16 楼 yongtree 2008-09-19  
我认为form做的不是非常的灵活,写的太死了。
特别是checkbox,radio,写起来蛮难受的,而且和后台交互也不是非常的直接。
15 楼 rikugun 2008-09-18  
Maniacdragon 写道
htmleditor,功能太少了。

其实你可以用fckeditor的,mice也不错.都可以嵌入到里头
14 楼 Maniacdragon 2008-09-17  
htmleditor,功能太少了。
13 楼 jianfeng008cn 2008-09-13  
目前而言我还是喜欢ext这种务实的做法
12 楼 fins 2008-09-11  
EXT 和 dojo走的是完全不同的两条路

ext就是要让大家忘掉HTML

ext本身更像是一种 语言

ext之于js
就好像 swing之于java
11 楼 radar 2008-09-11  
jianfeng008cn 写道
radar 写道
不好意思跑题了。
一直认为既然你选择了EXT,去扩展它不是个明智的选择。

一直认为EXT 的Cache 是影响性能一个主要原因。

Class A={
   this.dom
   this.Element
等等
}

缓存了很多对象。

selector 不要只针对Dom了,应该是对象。





不明白,不要针对dom针对对象是什么意思?针对哪个对象?

<img></img>
在javascript中是个dom对象吧。
那你自己写的树假设是 <tree></tree>。 也可以看作”dom对象“
至于node什么的。
<tree><node></node></tree>
对html来说是个标签,对javascript来说是个dom对象。

至少dojo是从这个角度来扩展 “组件” 的。我想也是未来的趋势,可能有些关键技术javascript/html等支持的不是很好,dojo才有n多人讲的诟病吧。

但dojo对html5的贡献还是有的。

EXT太着重javascript了,忽略了html标准规范。
10 楼 jianfeng008cn 2008-09-11  
radar 写道
不好意思跑题了。
一直认为既然你选择了EXT,去扩展它不是个明智的选择。

一直认为EXT 的Cache 是影响性能一个主要原因。

Class A={
   this.dom
   this.Element
等等
}

缓存了很多对象。

selector 不要只针对Dom了,应该是对象。





不明白,不要针对dom针对对象是什么意思?针对哪个对象?
9 楼 radar 2008-09-10  
再扩展一下。
大家回忆下dojo的dojoType.或者html5
我们为什么自己编写组件呢,因为html提供的标准组件不够用。
那我们写的组件和html提供的标准组件 有什么关系呢?

我希望是这样的
document.getElementById(id);
不仅可以获取 html提供的标准组件。
也可以获取扩展的组件。例如 Ext提供的组件。
8 楼 radar 2008-09-10  
不好意思跑题了。
一直认为既然你选择了EXT,去扩展它不是个明智的选择。

一直认为EXT 的Cache 是影响性能一个主要原因。

Class A={
   this.dom
   this.Element
等等
}

缓存了很多对象。

selector 不要只针对Dom了,应该是对象。

7 楼 jianfeng008cn 2008-09-10  
nihongye 写道
fins 写道
最近在一直做Ext的研究 代码结构方面的.
并且做一些修改和扩展.
多少也研究了不少他的组件.

EXT有多强大多NB就不用我多说了 但是任何好的事物也都有不好的方面

大家来讨论讨论呢 哪个ext的组件设计的不最不好吧

我先说说我的观点:

我觉得最不好的就是 他的树.
首先 设计的不够灵活(想灵活也行 但是需要开发人员做很多事情)
其次 严重违背了ext自己的一个设计理念: 数据与展现分离.

Tree,Node,TreePanel, TreeNode,AsyncTreeNode,TreeNodeUI, TreeLoader....
彼此之间的关系混乱复杂, 有很多错误的关系(我认为错误 并不一定真的错误)


大家觉得还有哪些组件设计的不够好呢???


  也做了些树的扩展,不过自己做的很不好,估计我把代码贴出来,会把很多人搞的吐血。我一直主观上认为TreeNode不应该继承Node,这点让我很排斥,fins的这个讨论让我提起看Ext代码的兴趣,得出不同的结论。

  第一:data.Node和tree.TreeNode从包名的分解看,data是管数据的,tree是与tree有关的,两个包是单向的关系;而从TreeNode的代码看,包含了节点的展现行为(注意,这里是行为,不是样子,样子由TreeNodeUI管理)控制。从这两点看,TreeNode的设计是合理的。

  第二:TreeLoader,构造出来的是TreeNode,
数据加载上:doPreLoad模式支持已准备数据的;动态request上,支持json数据,需要支持xml,可以通过覆写processResponse来达到,缺乏解析xml的支持;创建的节点上,类型可指定也可以覆写方法来达到目的。
总体感觉划分清晰,也灵活吖。


我也觉得ext这样的结构是合理的,只要treenode继承data.node有点不能接受
6 楼 nihongye 2008-09-06  
fins 写道
toolbar 确实也够郁闷的 和ext其他地方的组件机制不一样

================

主楼补充了一张图 是我对树组件的一个简单分析 和我的重构目标

恩,Toolbar是个异类
5 楼 nihongye 2008-09-06  
fins 写道
最近在一直做Ext的研究 代码结构方面的.
并且做一些修改和扩展.
多少也研究了不少他的组件.

EXT有多强大多NB就不用我多说了 但是任何好的事物也都有不好的方面

大家来讨论讨论呢 哪个ext的组件设计的不最不好吧

我先说说我的观点:

我觉得最不好的就是 他的树.
首先 设计的不够灵活(想灵活也行 但是需要开发人员做很多事情)
其次 严重违背了ext自己的一个设计理念: 数据与展现分离.

Tree,Node,TreePanel, TreeNode,AsyncTreeNode,TreeNodeUI, TreeLoader....
彼此之间的关系混乱复杂, 有很多错误的关系(我认为错误 并不一定真的错误)


大家觉得还有哪些组件设计的不够好呢???


  也做了些树的扩展,不过自己做的很不好,估计我把代码贴出来,会把很多人搞的吐血。我一直主观上认为TreeNode不应该继承Node,这点让我很排斥,fins的这个讨论让我提起看Ext代码的兴趣,得出不同的结论。

  第一:data.Node和tree.TreeNode从包名的分解看,data是管数据的,tree是与tree有关的,两个包是单向的关系;而从TreeNode的代码看,包含了节点的展现行为(注意,这里是行为,不是样子,样子由TreeNodeUI管理)控制。从这两点看,TreeNode的设计是合理的。

  第二:TreeLoader,构造出来的是TreeNode,
数据加载上:doPreLoad模式支持已准备数据的;动态request上,支持json数据,需要支持xml,可以通过覆写processResponse来达到,缺乏解析xml的支持;创建的节点上,类型可指定也可以覆写方法来达到目的。
总体感觉划分清晰,也灵活吖。
4 楼 kebo 2008-09-05  
tree:目前不支持xml,而且不好扩展,数据格式不可以自定义解析,比如text属性
PagingToolBar:分页参数limit,带查询条件的分页,分页的时候要把参数带着的话,得费一番周折。麻烦死了
3 楼 fins 2008-09-05  
toolbar 确实也够郁闷的 和ext其他地方的组件机制不一样

================

主楼补充了一张图 是我对树组件的一个简单分析 和我的重构目标

相关推荐

    Ext JS高级程序设计

    《Ext JS高级程序设计》是一本深入探讨Ext JS框架的专业指南。这本书分为三章,涵盖了Ext JS的关键概念和技术,旨在帮助开发者充分利用这个强大的JavaScript库来构建功能丰富的Web应用程序。 第一章可能涉及了Ext ...

    UI组件(ext jquery ucren)

    标题中的“UI组件(ext jquery ucren)”提及了三个关键词:EXT、jQuery和ucren,这些都是在Web开发中常见的UI(用户界面)组件库。接下来,我们将详细探讨这三个技术及其在构建用户界面中的作用。 EXT是一个强大的...

    ext整理 ext整理 ext整理

    下面将详细讨论EXT的相关知识点。 一、EXT JS框架 EXT JS是一个基于JavaScript的开源框架,由Sencha公司开发。它的设计目标是为Web开发者提供一套完整的工具,用于创建功能丰富、用户界面美观的应用程序。EXT JS的...

    有利于ext学习的小程序

    EXT,全称EXT JS,是一种基于JavaScript的开源前端框架,专为构建富互联网应用程序(RIA)设计。EXT提供了丰富的组件库,包括数据绑定、布局管理、拖放支持等功能,使得开发者能够创建出交互性强、用户体验良好的Web...

    EXT dojochina Ext类别名.rar

    在dojoChina社区中,EXT的使用和讨论可能涉及到EXT类别的命名。在JavaScript编程中,良好的命名规范对于代码的可读性和维护性至关重要。EXT类名通常遵循驼峰式命名法(CamelCase),每个单词首字母大写,例如`Ext....

    EXT_DEMO.rar_DEMO_ext desktop de_ext desktop demo_一起ext

    现在我们来详细讨论EXT桌面系统的一些关键知识点: 1. **组件化设计**:EXT桌面系统基于组件化的理念,这意味着你可以将应用拆分为多个独立的、可重用的部件,如面板、窗口、菜单等。这种设计模式便于维护和扩展...

    Ext JS in Action

    - **The Venerable Grid Panel (备受尊敬的Grid Panel)**:Grid Panel是Ext JS中最常用的数据展示组件之一,它可以用来显示表格形式的数据,并支持排序、分页等功能。 - **The Editor Grid Panel (带有编辑功能的...

    ExtDemo例子绝对能跑起来

    标签"ExtDemo"、"ext"、"ext例子"和"Ext"进一步确认了讨论的主题是关于ExtJS的演示项目。这些标签有助于分类和搜索,方便其他开发者找到相关的学习资源。 在压缩包文件名称列表中,我们看到只有一个文件名...

    ext学习文档

    - **Let's go**: 提供了一个简单的示例,展示如何扩展现有的EXT组件。 - **完成**: 总结了扩展EXT组件的过程。 #### 8. EXT的布局(Layout) - **简单的例子**: 展示了如何使用EXT的布局管理器来组织UI元素。 - **...

    Ext 2.2 - API 中文文档

    Ext 2.2是该框架的一个特定版本,本文将围绕其API中文文档展开讨论。 ### Ext 2.2 - API中文文档的重要性 对于任何框架或库而言,API文档都是开发者学习和掌握其功能的关键资料。Ext 2.2 - API中文文档不仅为国内...

    Ext 教程详解 适

    - 响应事件:EXT通过事件监听机制实现了组件间的交互,你可以为任何EXT组件添加事件监听器,响应用户的操作。 - 使用Widgets:Widget是EXT中可复用的UI组件,如按钮、菜单、日历等,它们都有自己的属性、方法和事件...

    EXT dojochina Ext注册.rar

    EXT是JavaScript库Ext JS的缩写,它是一个用于构建Web应用程序的前端框架,以其丰富的用户界面组件和强大的数据管理功能而闻名。Dojo China则是一个专注于JavaScript开发框架Dojo Toolkit的社区,它提供了大量的资源...

    ext样式

    在IT行业中,"ext样式"通常指的是Ext JS框架中的样式设计。Ext JS是一个基于JavaScript的开源框架,用于构建富客户端Web应用程序。它提供了一个组件化的用户界面(UI)构建工具,包括各种可重用的控件和布局。在这个...

    Ext的压缩文件

    下面将详细讨论Ext框架以及3.0版本可能涉及的关键知识点。 1. **Ext JS**:Ext JS是一个开源的JavaScript库,由Sencha公司开发,用于构建桌面级的Web应用。它提供了丰富的用户界面组件和数据管理工具,如表格、面板...

    ext portal

    标题中的"ext portal"指的是Ext JS中的Portal布局,这是一种用于创建可自定义面板布局的工具,常用于构建具有可拖动、可调整大小...在实际应用中,还需要考虑性能优化、响应式设计以及与其他Ext JS组件的集成等问题。

    Ext中表单中各种组件的布局

    本篇将详细介绍Ext中表单中各种组件的布局方法,重点讨论平行分列布局及其具体应用。 #### 默认布局与平行分列布局 在Ext中,默认情况下表单采用的是平铺布局,即表单项按顺序垂直排列。这种布局简单明了,适用于...

    Ext-plugins

    标题 "Ext-plugins" 指的是 ExtJS 插件,这是一种在 Ext JS 框架中用于扩展和增强组件功能的特殊模块。Ext JS 是一个流行的JavaScript库,用于构建富客户端Web应用程序,提供了丰富的组件库,如表格、面板、菜单等。...

    EXT3.0 COOKBOOK中文版

    - **EXT3.0**: 更进一步地明确了本书讨论的是Ext JS 3.0版本。 - **javascript**: 表明Ext JS是一种基于JavaScript的前端开发框架。 #### 部分内容概述 - 本书由Jorge Ramon撰写,由Packt Publishing出版,版权信息...

    ext初学好资料

    EXT,全称Ext JS,是一种基于JavaScript的开源用户界面库,专为构建富客户端Web应用程序而设计。这个“EXT初学好资料”压缩包包含了两个文件,一个是“ExtJS使用简明教程.chm”,另一个是“www.pudn.com.txt”。这两...

    Ext江湖源码

    "浅显易懂"表示这些源码注释或解析是为初学者或中级开发者设计的,旨在帮助他们理解Ext的工作原理。"这只是源码,木有书"表明这个压缩包可能不包含配套的详细教程或书籍,但源码本身就是一个学习的好资源。 【标签...

Global site tag (gtag.js) - Google Analytics