☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Thu Apr 22 15:59:09 2010) 提到:
【 以下文字转载自 Java 讨论区 】
发信人: Dieken (风催草低 - 明月何尝不照人), 信区: Java
标 题: prototype, mootools, dojo, yui, echo 3 的类继承实现的比较
发信站: 水木社区 (Thu Apr 22 15:57:57 2010), 站内
看了下,大多数流行 js 库都是用的 shared prototype 技巧,把扩展
的属性加到子类的 prototype 里。
比较结果: // 广告。。。。Echo 3 Core.js 很不错
代码见附件。
=================================================================
jQuery.extend() 不算类继承。
实现复杂度: mootools > prototype > Dojo > YUI 3 > Echo 3 > YUI 2
实现特性丰富度: Echo 3 > mootools > Dojo > prototype > YUI 3 > YUI 2
(mootools 源码太复杂,看不懂,prototype, dojo 也比较复杂,因此特性丰富程度不是很清楚)
实现干扰程度: Mootools > Prototype > Dojo, Echo 3 > YUI 3, YUI 2
基类属性个数 子类属性个数
Mootools 14 15
$family implement prototype constructor extend create run pass bind bindWithEvent attempt delay periodical protect
$family implement prototype constructor extend create run pass bind bindWithEvent attempt delay periodical protect parent
YUI 2 1 2
prototype
prototype superclass
YUI 3 1 2
prototype
prototype superclass
Dojo 4 4
_meta superclass extend prototype
_meta superclass extend prototype
Echo 3 3 3 (还有 $abstract,代码没演示)
$virtual $super prototype
$virtual $super prototype
Prototype 12 12
addMethods superclass subclasses prototype argumentNames bind bindAsEventListener curry delay defer wrap methodize
addMethods superclass subclasses prototype argumentNames bind bindAsEventListener curry delay defer wrap methodize
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 标 题: Re: JavaScript 里模拟“类”真悲哀 (转载)
: 发信站: 水木社区 (Wed Apr 21 09:49:43 2010), 站内
:
: 根本没继承
: 创建类的时候拷贝了父类成员而已
: 结果就是原型变了的话子类没反应
:
: 大多数js库都不是这么干的
:
: 【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: : 实现还是用原型,只是模拟类继承的语义,没理解错的现在流行的js库都是如此,模拟的语法不同而已。
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 125.33.196.3]
☆─────────────────────────────────────☆
virsir (virsir) 于 (Thu Apr 22 22:05:49 2010) 提到:
看样子dojo很平衡啊.
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 发信人: Dieken (风催草低 - 明月何尝不照人), 信区: Java
: 标 题: prototype, mootools, dojo, yui, echo 3 的类继承实现的比较
: 发信站: 水木社区 (Thu Apr 22 15:57:57 2010), 站内
: ...................
☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Thu Apr 22 22:31:41 2010) 提到:
dojo 对类的原型污染很厉害。
【 在 virsir (virsir) 的大作中提到: 】
: 看样子dojo很平衡啊.
☆─────────────────────────────────────☆
sly9 (= =b) 于 (Thu Apr 22 22:36:06 2010) 提到:
有么?
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: dojo 对类的原型污染很厉害。
☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Thu Apr 22 22:39:26 2010) 提到:
看 19465 篇。
有传言说 Dojo API 变化快,UI 组件速度慢,扩展的加载是同步会导致
浏览器短时间冻结 CPU 占用 100%,UI 组件 bug 多,是这样的吗?
【 在 sly9 (= =b) 的大作中提到: 】
: 有么?
☆─────────────────────────────────────☆
sly9 (= =b) 于 (Thu Apr 22 22:47:21 2010) 提到:
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 标 题: Re: prototype, mootools, dojo, yui, echo 3 的类继承实现的比
: 发信站: 水木社区 (Thu Apr 22 22:39:26 2010), 站内
:
: 看 19465 篇。
:
: 有传言说 Dojo API 变化快,UI 组件速度慢,扩展的加载是同步会导致
: 浏览器短时间冻结 CPU 占用 100%,UI 组件 bug 多,是这样的吗?
这个的问题我以前在java版解释过,当时也是有人提出了这样的质疑。。
dojo的API在0.4->0.9的时候剧变了一次,很多API都出现了调整,位置变化,参数变化等等
但之后,0.9->1.4,虽然API也有不少更新,但都是基本向下兼容的。所以这个质疑应该是在0.9刚发布的那会儿出现的吧。
UI组件速度慢……呃,我不好断言..个人感觉吧。。
扩展的同步加载,这个的确是没啥好办法。。google的closure也有这个问题吧?不过你可以做custom build,把需要加载的js通过脚本预先编译成一个较大的文件,这样对performance很有好处的。。
至于UI组件bug多。。我个人是没遇到什么恶性的bug了,小bug偶尔有碰到。。
:
: 【 在 sly9 (= =b) 的大作中提到: 】
: : 有么?
:
:
: --
: OSS v4 vs. ALSA 大战,Linux 声音支持的未来?
: OSS v4 支持混音了!
:
:
http://insanecoding.blogspot.com/2009/06/state-of-sound-in-linux-not-so-sorry.html:
http://insanecoding.blogspot.com/2009/05/perfect-sound-with-oss-version-4.html:
http://dieken-qfz.spaces.live.com/blog/cns!586D665C0DEB512D!605.entry:
:
: ※ 修改:·Dieken 于 Apr 22 22:40:17 2010 修改本文·[FROM: 114.240.89.*]
: ※ 来源:·水木社区 newsmth.net·[FROM: 114.240.89.*]
☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Thu Apr 22 22:52:33 2010) 提到:
多谢答疑,看来 dojo 还是很有资格做备胎的:-)
【 在 sly9 (= =b) 的大作中提到: 】
: 这个的问题我以前在java版解释过,当时也是有人提出了这样的质疑。。
: dojo的API在0.4->0.9的时候剧变了一次,很多API都出现了调整,位置变化,参数变化等等
: 但之后,0.9->1.4,虽然API也有不少更新,但都是基本向下兼容的。所以这个质疑应该是在0.9刚发布的那会儿出现的吧。
: UI组件速度慢……呃,我不好断言..个人感觉吧。。
: 扩展的同步加载,这个的确是没啥好办法。。google的closure也有这个问题吧?不过你可以做custom build,把需要加载的js通过脚本预先编译成一个较大的文件,这样对performance很有好处的。。
: 至于UI组件bug多。。我个人是没遇到什么恶性的bug了,小bug偶尔有碰到。。
☆─────────────────────────────────────☆
sly9 (= =b) 于 (Thu Apr 22 22:59:52 2010) 提到:
嗯,dojo比较激进一些,新功能还是不少的,性能也很好,当然稳定性也可能略不足一些,文档是不擅长的,很多开源项目都如此,你也知道的……
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 多谢答疑,看来 dojo 还是很有资格做备胎的:-)
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Thu Apr 22 23:08:22 2010) 提到:
dojo不是比较激进,是非常激进
Unbeatable JavaScript Tools
Dojo saves you time, delivers powerful performance, and scales with your development process. It’s the toolkit experienced developers turn to for building great web experiences.
mootools稍微含蓄点
MooTools is a compact, modular, Object-Oriented JavaScript framework designed for the intermediate to advanced JavaScript developer. It allows you to write powerful, flexible, and cross-browser code with its elegant, well documented, and coherent API.
MooTools code respects strict standards and doesn't throw any warnings. It's extensively documented and has meaningful variable names: a joy to browse and a snap to understand.
jquery的介绍最到位
jQuery is a new kind of JavaScript Library.
jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.
【 在 sly9 (= =b) 的大作中提到: 】
: 嗯,dojo比较激进一些,新功能还是不少的,性能也很好,当然稳定性也可能略不足一些,文档是不擅长的,很多开源项目都如此,你也知道的……
☆─────────────────────────────────────☆
sly9 (= =b) 于 (Thu Apr 22 23:09:22 2010) 提到:
hahaha。。这段话也是近些日子才有的吧
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: dojo不是比较激进,是非常激进
: Unbeatable JavaScript Tools
: Dojo saves you time, delivers powerful performance, and scales with your development process. It’s the toolkit experienced developers turn to for building great web experiences.
: ...................
☆─────────────────────────────────────☆
withinsea (沐海~魔導奏器|歌の琴フォルテール) 于 (Thu Apr 22 23:15:34 2010) 提到:
jq 的介紹其實就是個擺設……
重點是那一行 quick start:
$("p.neat").addClass("ohmy").show("slow");
風格全介紹完了。$函數,類css選擇器,選擇->操作模型,簡單參數,方法鏈
一眼就知道你會不會喜歡這個庫
【 在 sly9 (= =b) 的大作中提到: 】
: hahaha。。这段话也是近些日子才有的吧
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Thu Apr 22 23:29:34 2010) 提到:
最后这个.show("slow") 是干嘛用的?
前面跟mootools的一样
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 标 题: Re: prototype, mootools, dojo, yui, echo 3 的类继承实现的比
: 发信站: 水木社区 (Thu Apr 22 23:15:34 2010), 站内
:
: jq 的介紹其實就是個擺設……
: 重點是那一行 quick start:
:
: $("p.neat").addClass("ohmy").show("slow");
:
: 風格全介紹完了。$函數,類css選擇器,選擇->操作模型,簡單參數,方法鏈
: 一眼就知道你會不會喜歡這個庫
:
: 【 在 sly9 (= =b) 的大作中提到: 】
: : hahaha。。这段话也是近些日子才有的吧
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 221.221.209.15]
☆─────────────────────────────────────☆
withinsea (沐海~魔導奏器|歌の琴フォルテール) 于 (Thu Apr 22 23:32:15 2010) 提到:
慢慢地顯示出來
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 最后这个.show("slow") 是干嘛用的?
: 前面跟mootools的一样
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Thu Apr 22 23:53:53 2010) 提到:
哦。mootools有类似的反效果fade("out")...
如果加载Fx.tween模块的话
对dom的操作上,jq和mt差别不大
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 慢慢地顯示出來
☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Fri Apr 23 00:03:54 2010) 提到:
洁癖党忍受不了 mootools 修改 prototype。。。
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 哦。mootools有类似的反效果fade("out")...
: 如果加载Fx.tween模块的话
: 对dom的操作上,jq和mt差别不大
: ...................
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Fri Apr 23 00:16:36 2010) 提到:
不知道这个洁癖从何而来
不修改prototype,哪来的对dom更便捷、简化的操作?
jq等框架一样大量修改prototype
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 标 题: Re: prototype, mootools, dojo, yui, echo 3 的类继承实现的比
: 发信站: 水木社区 (Fri Apr 23 00:03:54 2010), 站内
:
: 洁癖党忍受不了 mootools 修改 prototype。。。
:
: 【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: : 哦。mootools有类似的反效果fade("out")...
: : 如果加载Fx.tween模块的话
: : 对dom的操作上,jq和mt差别不大
: : ...................
:
: --
: OSS v4 vs. ALSA 大战,Linux 声音支持的未来?
: OSS v4 支持混音了!
:
:
http://insanecoding.blogspot.com/2009/06/state-of-sound-in-linux-not-so-sorry.html:
http://insanecoding.blogspot.com/2009/05/perfect-sound-with-oss-version-4.html:
http://dieken-qfz.spaces.live.com/blog/cns!586D665C0DEB512D!605.entry:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 114.240.89.*]
☆─────────────────────────────────────☆
Dieken (风催草低 - 明月何尝不照人) 于 (Fri Apr 23 00:18:05 2010) 提到:
mootools 大量修改已有对象的 prototype:
http://mankz.com/code/GlobalCheck.htm
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 不知道这个洁癖从何而来
: 不修改prototype,哪来的对dom更便捷、简化的操作?
: jq等框架一样大量修改prototype
: ...................
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Fri Apr 23 00:24:51 2010) 提到:
嗯。聚个简单例子
var ori = " xx ";
var str = $.trim(ori); //jquery style
var str = ori.trim(); //mootools style
jquery是把大量的prototype修改击中在jQuery=$中
mootools则是更趋近于日常的使用风格。
例如对String的这种“污染”,在我看来,是便捷、简化的体现。
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 标 题: Re: prototype, mootools, dojo, yui, echo 3 的类继承实现的比
: 发信站: 水木社区 (Fri Apr 23 00:18:05 2010), 站内
:
: mootools 大量修改已有对象的 prototype:
:
:
http://mankz.com/code/GlobalCheck.htm:
: 【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: : 不知道这个洁癖从何而来
: : 不修改prototype,哪来的对dom更便捷、简化的操作?
: : jq等框架一样大量修改prototype
: : ...................
:
: --
: OSS v4 vs. ALSA 大战,Linux 声音支持的未来?
: OSS v4 支持混音了!
:
:
http://insanecoding.blogspot.com/2009/06/state-of-sound-in-linux-not-so-sorry.html:
http://insanecoding.blogspot.com/2009/05/perfect-sound-with-oss-version-4.html:
http://dieken-qfz.spaces.live.com/blog/cns!586D665C0DEB512D!605.entry:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 114.240.89.*]
☆─────────────────────────────────────☆
withinsea (沐海~魔導奏器|歌の琴フォルテール) 于 (Fri Apr 23 00:36:48 2010) 提到:
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 不知道这个洁癖从何而来
: 不修改prototype,哪来的对dom更便捷、简化的操作?
: jq等框架一样大量修改prototype
瞎扯啥呢
jq 靠的是包裝
☆─────────────────────────────────────☆
lalula (Twin●tuan123.net方便大家薅羊毛) 于 (Fri Apr 23 00:48:07 2010) 提到:
嗯,之前看了一眼jq
第一屏就出现一堆prototype
现在仔细一看,只是引用,并没有扩展。
jq基本只对$进行扩展
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 瞎扯啥呢
: jq 靠的是包裝
☆─────────────────────────────────────☆
withinsea (沐海~魔導奏器|歌の琴フォルテール) 于 (Fri Apr 23 01:06:49 2010) 提到:
嗯,只要别跟核心库打包在一起
我不反对对 String, Function 之类的做功能扩展
但是 mt 那堆静态方法实在是应该找个顶级对象挂起来……
全直接堆到 window 下面太难受了
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 嗯,之前看了一眼jq
: 第一屏就出现一堆prototype
: 现在仔细一看,只是引用,并没有扩展。
: jq基本只对$进行扩展
☆─────────────────────────────────────☆
sly9 (= =b) 于 (Fri Apr 23 12:32:25 2010) 提到:
最主要不能忍的是污染了Object.prototype后的for xxx in yyy的失效。。
【 在 lalula (Twin●tuan123.net方便大家薅羊毛) 的大作中提到: 】
: 嗯。聚个简单例子
: var ori = " xx ";
: var str = $.trim(ori); //jquery style
: ...................
修改:Dieken FROM 114.240.89.*
FROM 114.240.89.*