`
zexombie
  • 浏览: 21890 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用过一些JS-Tree控件之后的总结【将持续更新】

阅读更多

    最近用了不少的javascript做的树控件,感受颇深啊,有些累了真的。可能是我的需求太多了吧,导致一些树控件根本无法满足要求……下面就简要的说一些树吧(作者:Zexombie,地址:zexombie.iteye.com

大概在google里搜了国内外的以下这些树(太次的不包括):(作者:Zexombie,地址:zexombie.iteye.com

1.     tmlx-Tree(作者:Zexombie,地址:zexombie.iteye.com

2.     xytree(作者:Zexombie,地址:zexombie.iteye.com

3.     mktree(作者:Zexombie,地址:zexombie.iteye.com

4.     dtree(作者:Zexombie,地址:zexombie.iteye.com

5.     MzTreeView1.0

6.     Gurt Tree (作者:Zexombie,地址:zexombie.iteye.com

7.     SilverStripe Tree Control(作者:Zexombie,地址:zexombie.iteye.com

8.     Morten's JavaScript Tree Menu(作者:Zexombie,地址:zexombie.iteye.com

    
     dhtmlx-tree,
鼎鼎大名,这就不用说了。功能巨全应有尽有(不过高级更能要付费滴)API文档巨清楚。常用的比如动态添加“xml读取展开事件用户自定义属性等。但是缺点也是最让人不爽的——巨慢!我才从数据库里动态加载了一两百个节点,竟然要了我56秒!天啊快一分钟了!生成慢,就连你点击节点展开的响应速度也慢了,用习惯了dhtmlx-tree后,感觉别的什么速度都快了……
(作者:Zexombie,地址:zexombie.iteye.com


     xytree,国内人做的,很精巧的几个文件,源代码及其清晰注释及其详细,用起来及其方便以及速度及其快,我从数据库中取出几百个几点只要16毫秒左右……呃,xytree不支持xml好像,只能“addNode()”,可以动态添加,还可以自定义节点属性。缺点呢,就是不支持递归展开事件不支持递归的意思就是在一般你从数据库中数据,在递归读取的过程中,你不能够一边读一边添加。这个原因呢不好解释,貌似一个bug,牵扯到你父子addNode()顺序的问题。呵呵不过逼于无奈我想了一招儿也能代替这个bug——像生成xml一样把所有代码都变成字符串形式,集合起来后统一进行eval()执行……(作者:Zexombie,地址:zexombie.iteye.com
     mktree
呢,也叫dhtml-tree,相当爽相当简单!不用这个那个的,只要你有一定结构的这样的列表,只需赋予一个class名称,这个列表就变成一棵树了!mktree优点呢就是使用巨简单,速度巨快(因为简单没有一切乱七八糟的功能)。你可以看看那少得可怜的几行css代码还有那根手指头一样多的js函数,就知道这是一个多么纯粹的树了……缺点呢也是因为简单,样式上这棵树只有+/-这样的东西而没有我们常见的那种+/-旁边还有的文件夹icon,文字样式也只是普通文字形式。功能上呢除非你大动干戈去改代码,否则你无法动态添加节点,也没有展开事件,事实上如果你动动脑子钻个空子在某个tag上加一个onclick事件,你连点击事件都没有,树的链接可能也不好弄……呵呵不过这棵树还是配置了几个方法滴,比如展开/合并所有节点或单一节点,单一节点展开关闭你得自己找咯可没有文档给你啊……(作者:Zexombie,地址:zexombie.iteye.com
     Gurt Tree
样子上很一般,但是呢用起来相当奇怪!加载几千个节点只需十几毫秒(不从数据库取),样式上也还过得去。支持多树动态添加等功能。但没发现“xml读取或者展开节点功能。但是呢用法很奇怪代码不太好理解,主要定制的东西全部用一种奇怪的语法在一个tree_cfg.js里面自己去写,唉我还得现去分析,不爽……(作者:Zexombie,地址:zexombie.iteye.com
     dtree
呢就没有上面那么极端了,是个不错的tree,中等。样式上还行用户自由度很大,可以轻松得改写css代码,js代码也可以轻松根据自己需要改写,不算太复杂。支持动态添加间接xml读取,以及点击事件等,呵呵反正我觉得好多东西都得自己改源码才实现。因为这棵树是公司用的所以我也没太多计较。文档也还凑合吧。(作者:Zexombie,地址:zexombie.iteye.com

                        MzTreeView1.0。哇说起这个就比较厉害了!真的!强烈推荐这个。梅花雪大人也是“阅树无数”阿,然后吸取了经验,在速度算法和开发人员使用上都做了极大的改进啊!在他的api文档里面还提到了他制作这个tree的思想精髓部分,比如巧妙利用字符串与正则表达式的搭配来代替对象或数组,比如你生成一个节点只需这样写:tree.nodes["父节点id_本节点id"] = "text: 标题; url: #;"; 就这样一个完整的节点就生成了,一句话包括了添加节点、定义属性等所有事情,最适合从数据库中取出数据然后动态生成,因为你只需如上指明父节点和这个节点的id即可,而不用像其他tree那样还要层层嵌套递归循环来添加……样式上呢直接在你引用tree的页面中写style就可以了具体看文档吧。不好的地方可能是样式上自由度还不算太高因为接口不够全,xml数据形式好像还不支持,我想梅花雪大人会改进的。总结起来:简单易用、速度快、好看(至少不难看)、思路清晰、五脏俱全。(作者:Zexombie,地址:zexombie.iteye.com
     SilverStripe Tree Control
也是一种像mktree那样读取的树,但是呢用起来就麻烦点了还需要定义很多的class名,我渴望从它这儿得到只要比mktree多点功能就好了,可是结果不尽人意,连个能看的文档都没有,一个页面写几句介绍的话就算混过去了,失败……顺便说一下,SilverStripe好像主要是做blog程序的,像wordpress一样的也是php……
     Morten's JavaScript Tree Menu
,没得说了(因为也不知道说什么),看样子功能挺全的最起码不多不少,速度也挺快的。打开index.html就知道了,文档巨x全,半颗树都是API文档,只是看了那么一下,翻了一下它引用的文件,我到现在还没数清楚我一共需要引用多少个文件,一个节点需要写多少个参数才能生成……还不够累的呢,唉……
(作者:Zexombie,地址:zexombie.iteye.com
   
唉,也说了不少了,都是牢骚的话,希望有心人能吸取教训看到这些了,就别再走弯路了,看看自己的需求看看这些树的支持度,量力而行。注:这里面没有提及一个或两个著名的树控件以及著名的公司的树控件(比如extyui等巨慢语法巨罗嗦引用文件超多超大我就不说了),我觉得没那么大必要,省了……(作者:Zexombie,地址:zexombie.iteye.com    下面附件包括截图,以及控件文件。希望大家交流……(作者:Zexombie,地址:zexombie.iteye.com 

分享到:
评论
18 楼 lucas 2008-11-26  
学习中~~~
17 楼 inshect 2008-11-25  
是呀。经常用的。就找个速度快的吧。。界面一般就行。。。。
16 楼 lijiabin102 2008-10-10  
我用xytree好久了,过来学习学习
15 楼 komei 2008-09-16  
哪位大师发个简单的使用document 创建的node 的方式实现的Tree 来参考下???
非常感谢了!!! Email: komeiming@gmail.com
14 楼 komei 2008-09-16  
哪位大师发个简单的使用document 创建的node 的方式实现的Tree 来参考下???
非常感谢了!!!
13 楼 77tt77 2008-01-14  
tree,经常用的.

和时间控件差不多的使用频率.
12 楼 nogocn 2008-01-10  
简单的动态,复杂的简单实现
11 楼 yanjiyan 2008-01-03  
谢谢你的总结,最近我也为了树在苦恼。
10 楼 yangjianxiang2 2008-01-02  
看了,不错。谢谢,试试用用
9 楼 blackanger 2007-12-15  
总结的不错,学习了,不过这个题目太大了吧,呵呵
8 楼 simon1118 2007-12-14  
总结得不错,谢谢了
ext的tree自由度也很大
7 楼 笨笨狗 2007-12-14  
Tree……
我自己做了一个,模仿dojo以前的那个,干啥都行,有绝对的控制权,哈哈
6 楼 zexombie 2007-12-14  
其实我没想推荐哪个……
主要就是把大家的优缺点列出来
看自己的需求了,是要漂亮还是要速度,要用起来方便还是要功能全面……众口难调
5 楼 jktang 2007-12-14  
我来用用!
4 楼 axel 2007-12-14  
列得很好。我也正觉得ext的tree慢。
不过你推荐哪个呢?或者是在什么场合下推荐什么呢?
3 楼 zexombie 2007-12-14  
呵呵,我就那么一写,不过我觉得这些就是我的“所有”了,再让我去看树我会疯了的,宁愿自己在家门口种棵树了……
2 楼 linhong_1001 2007-12-14  
名字挺大,只是你认为的“所有”罢了
1 楼 zexombie 2007-12-14  
嘿嘿,辛苦写了半天,自己做个沙发休息休息!

相关推荐

    前端项目-angular-tree-control.zip

    在实际使用中,首先需要将`angular-tree-control`库引入到项目中,然后在AngularJS模块中声明依赖,并在需要使用树形控件的视图中注入相应的指令。接着,通过控制器来处理数据模型和树形结构的交互逻辑。最后,通过...

    [资源分享]解决Win10下IE浏览器树形控件treeview无法显示的问题

    然而,有时用户可能会遇到在网页中使用树形控件TreeView时无法正常显示的问题。这可能是由于多种原因引起的,包括但不限于浏览器兼容性问题、JavaScript或CSS错误、ActiveX控件禁用等。本文将深入探讨这个问题,并...

    最全面试题整理---持续更新中1

    - **解析**:将JavaScript代码转换成抽象语法树(AST)。 - **执行**:解释或编译AST,执行JavaScript代码。 - **内存管理**:管理变量和对象的内存分配及垃圾回收。 #### 四、主流浏览器内核 - **WebKit**:开源...

    收集的比较全的树控件

    在使用这些树控件时,开发者需要注意数据结构的设计,通常需要将数据以JSON或其他结构化格式表示,以便于控件渲染。同时,为了适应各种屏幕尺寸和设备,应考虑移动优先的设计策略,确保树控件在不同环境下的可用性和...

    FineUI ASP.NET 控件库

    FineUI 强调高效的 AJAX 通信,它提供了多种 AJAX 控件,如 Grid、Form、Tree 等,这些控件能够在不刷新整个页面的情况下更新数据,提高用户体验。同时,它还支持异步提交、局部刷新等功能,降低了服务器的压力,...

    下拉树形控件

    8. **可选插件**:虽然可以直接用jQuery编写下拉树形控件,但也可以使用现有的jQuery插件,如jQuery UI的Treeview或jstree,它们提供了预定义的样式和丰富的功能,可以快速集成到项目中。 在实际应用中,可能还需要...

    ExtAspNet是net环境下的开源控件包

    如表格(Grid)、表单(Form)、树形视图(Tree)、菜单(Menu)、面板(Panel)、窗口(Window)等,这些控件涵盖了大部分Web开发需求,使得开发者无需编写大量HTML和JavaScript代码就能实现复杂的功能。...

    Jquery.easyUI js引用以及文档教程

    EasyUI 提供了多种组件,如对话框(dialog)、表单(form)、表格(datagrid)、树形控件(tree)、菜单(menu)等。通过简单的 HTML 标签和 JavaScript API,可以轻松实现这些组件的功能。例如,创建一个基本的...

    Syncfusion Essential Studio 2012 Volume 1

    Syncfusion Essential Studio 是一套由 Syncfusion 公司开发的企业级 UI 控件工具包,它为开发人员提供了丰富的用户界面组件,适用于多种开发平台和技术栈,如 .NET、ASP.NET MVC、JavaScript、Angular、React、Vue ...

    element.zip

    在"基于element重写eltree和message"的项目中,我们可以理解为开发者对Element UI中的`el-tree`(树形控件)和`message`(消息提示)组件进行了定制或扩展,以满足特定的需求。 1. **el-tree组件**: - 树形结构:...

    DWZ使用帮助文档

    - **Javascript混淆**: 通过混淆工具将源码转换为难以阅读的形式,以提高代码的安全性和性能。 - **使用gzip压缩**: 通过gzip压缩工具减小JS文件大小,加快加载速度。 - **DWZ如何中使用打包的js**: 在部署时,将多...

    程序员实习总结.doc

    以下是对实习生在编程领域的一些关键知识点的总结: 1. **开发环境的优化**: - 使用合适的开发工具能显著提高效率,例如在JavaScript开发中,安装Eclipse插件如`插件`可以提供智能提示,简化编码过程。 - 对于...

    jquery-easyui-1.5.3

    《jQuery EasyUI 1.5.3:打造高效前端界面》 jQuery EasyUI 是一个基于 jQuery 的...持续的更新和改进,确保了它在快速发展的前端领域保持竞争力。通过深入理解和熟练运用,你可以用它来创造令人惊叹的网页交互效果。

    ExtJs3.0 CHM

    **ExtJs 3.0 中文API详解** Ext Js 是一个强大的JavaScript库,...不过,值得注意的是,由于Ext Js 框架持续更新,3.0版本的一些特性可能已在后续版本中有所改变或增强,因此在新项目中建议参考最新版本的官方文档。

    Web:前端入门到进阶,个人完整的前端学习笔记。详细的图文和代码,完整的Demo演示。持续更新.....

    学习如何使用Babel将ES6代码转换为兼容性更强的代码,以及如何利用Tree Shaking和Source Map优化构建过程。 五、Node.js环境 Node.js基于Chrome V8引擎,提供了服务器端JavaScript运行环境。掌握Node.js的事件驱动...

    webkit研究报告(2)

    - **主要数据结构**:WebCore中使用了大量的数据结构,如DOM树、Render Tree等,用于存储和管理文档结构。 #### 一个Http请求在WebCore中的主要流程 1. **WebKit工作流程**:从用户发起HTTP请求开始,到页面完全...

    Jquery easyui 网络教程

    JQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,让开发者能够使用 jQuery 来...此外,随着前端技术的不断发展,开发者还应该持续关注 easyui 框架的更新和维护,以便使用最新最稳定的功能。

Global site tag (gtag.js) - Google Analytics