最近在整理一个treeview,就是树型控件了
说起这颗树,是上一年10月份的事情了,当时配置我的ADSL小猫的时候,对它左侧的treeview发生了兴趣,后来到网上搜集了一些这方面的资料,发现国内已经发布的树中,meizz和阿信的树是比较出名的,各有特色,但是都不是很强大,后来在一个国外网站上看到了一套用于asp.net开发的web控件,其中有个treeview控件,UI相当漂亮,仿office2003的效果,功能也比较强,就是速度太慢,呵呵,不能忍受.而且还是商业控件,要收钱的.
在慢慢搜索的过程中,开始接触以前自己很害怕的js,以及DHTML和DOM的内容,渐渐的有了写自己的treeview的想法,当然,一个没有任何特色的树是没必要出现的,所以我给自己定了几个目标,一是速度。。。二是功能。。。(废话:)
速度最快的当数meizz的数了,(后来在51js上看到不少pk树,很有创意,不过没法投入实用,只能吸收一些优点,继续走自己的 路了).根据meizz自己的介绍,它的treeview之所以快的原因就是采用了压缩数据传输和一个快速的搜索算法.所以如果要超越meizz,必须首先达到它的水平,然后寻找突破口。
一个月后,也就是10月底了,我自己的树经过三遍重写,在数据传输上已经不比meizz差了,至于搜索算法,是最近解决的。
从一开始写的时候,就注意不要跟meizz的代码太相似了,以免有抄袭的嫌疑,但是一些地方写着写着,两颗树的代码不可避免的一致了,因为DHTML/dom的优化是有规矩的,拿切换焦点时的节点样式变化来说吧,一开始我采用的是直接更改对象的className的方式,后来发现这个方法效率有些低,尤其 在数据量巨大的时候,复杂的dom树的某个节点突然更改了样式,是要对整个dom树进行重新构造的。没分办法,改为通过修改stype对象的属性的方法来改变视觉效果。
还有浏览器兼容的一部分,呵呵,也跟梅子的差不多。这一部分代码在网上都可以找到的,没什么问题
然后将剩下的代码跟梅子还有国内外我收集的几个树做了比较,发现我的代码风格跟别人的很明显不一致,似乎我的代码更小儿科一些。。。呵呵,不知道为什么,看着别人的代码才像那个样子,再看看自己的代码,总觉得比较肤浅,
女朋友就问我:你的树比他们的慢吗?
我:不慢,而且还要快一点
女朋友:你的树比他们功能少吗?
我:不少
女朋友:那你的代码比他们庞大很多吗?
我:比他们的也要少一些
女朋友:那就不要怀疑自己了,可能你自己的思路跟别人不是很一致,所以就看着跟别人代码风格不一样了。
从一开始写到现在,经过了不少波折
一开始想着要使用js仅有的面向对象的能力,将这个treevew做成OO的
后来发现全部的OO对效率多少有些影响的,而且内存里面数据有冗余
逐渐放弃了节点层次的对象,只保留了树级别的对象
现在正在对一些细节进行调整
同时增加一些功能
在跟同行的作品进行比较的同时,也发现了自己许多要改进的地方。继续努力
说起这颗树,是上一年10月份的事情了,当时配置我的ADSL小猫的时候,对它左侧的treeview发生了兴趣,后来到网上搜集了一些这方面的资料,发现国内已经发布的树中,meizz和阿信的树是比较出名的,各有特色,但是都不是很强大,后来在一个国外网站上看到了一套用于asp.net开发的web控件,其中有个treeview控件,UI相当漂亮,仿office2003的效果,功能也比较强,就是速度太慢,呵呵,不能忍受.而且还是商业控件,要收钱的.
在慢慢搜索的过程中,开始接触以前自己很害怕的js,以及DHTML和DOM的内容,渐渐的有了写自己的treeview的想法,当然,一个没有任何特色的树是没必要出现的,所以我给自己定了几个目标,一是速度。。。二是功能。。。(废话:)
速度最快的当数meizz的数了,(后来在51js上看到不少pk树,很有创意,不过没法投入实用,只能吸收一些优点,继续走自己的 路了).根据meizz自己的介绍,它的treeview之所以快的原因就是采用了压缩数据传输和一个快速的搜索算法.所以如果要超越meizz,必须首先达到它的水平,然后寻找突破口。
一个月后,也就是10月底了,我自己的树经过三遍重写,在数据传输上已经不比meizz差了,至于搜索算法,是最近解决的。
从一开始写的时候,就注意不要跟meizz的代码太相似了,以免有抄袭的嫌疑,但是一些地方写着写着,两颗树的代码不可避免的一致了,因为DHTML/dom的优化是有规矩的,拿切换焦点时的节点样式变化来说吧,一开始我采用的是直接更改对象的className的方式,后来发现这个方法效率有些低,尤其 在数据量巨大的时候,复杂的dom树的某个节点突然更改了样式,是要对整个dom树进行重新构造的。没分办法,改为通过修改stype对象的属性的方法来改变视觉效果。
还有浏览器兼容的一部分,呵呵,也跟梅子的差不多。这一部分代码在网上都可以找到的,没什么问题
然后将剩下的代码跟梅子还有国内外我收集的几个树做了比较,发现我的代码风格跟别人的很明显不一致,似乎我的代码更小儿科一些。。。呵呵,不知道为什么,看着别人的代码才像那个样子,再看看自己的代码,总觉得比较肤浅,
女朋友就问我:你的树比他们的慢吗?
我:不慢,而且还要快一点
女朋友:你的树比他们功能少吗?
我:不少
女朋友:那你的代码比他们庞大很多吗?
我:比他们的也要少一些
女朋友:那就不要怀疑自己了,可能你自己的思路跟别人不是很一致,所以就看着跟别人代码风格不一样了。
从一开始写到现在,经过了不少波折
一开始想着要使用js仅有的面向对象的能力,将这个treevew做成OO的
后来发现全部的OO对效率多少有些影响的,而且内存里面数据有冗余
逐渐放弃了节点层次的对象,只保留了树级别的对象
现在正在对一些细节进行调整
同时增加一些功能
在跟同行的作品进行比较的同时,也发现了自己许多要改进的地方。继续努力