Prototype与JQuery对比

从时间上看,Prototype.js比Jquery早,国内占主流的是Jquery,个人认为可能是与国内AJAX比国外要落后一点,当然选择比较后出来、比较新的Jquery。

我个人是先从prototype.js入手,包括JiveJdon3.6版本都是基于它的,Jquery也一直关注,发现两者语法比较接近,prototype.js更接近Javascript风格,而Jquery设计上要简洁。

国外2007年有一篇文章对jQuery和Prototype做了比较:
Why I moved from Prototype to jQuery:
http://www.quarkruby.com/2007/11/6/why-i-moved-from-prototype-to-jquery

我认为JQuery主要优点是:Jquery是Behavior driven development (BDD)行为驱动开发。使用JQuery可以将html元素的行为从html中分离出来,实现所谓MVC J的模式,View是html,而J是Jquery.

至于文中提到的其他Jquery优点,prototype.js也有,比如Chain:
Jquery:
$("div.message").show()
.append("<p>Action has been executed successfully")
.addClass("flash");

prototype:
$$('input.date')
.invoke('observe', 'focus', onFocus)
.invoke('observe', 'blur', onBlur)

chain用法虽然简单,但不容易懂。

在下面这篇文章中,作者指出如何更加精炼简单地使用Prototype:
http://thinkweb2.com/projects/prototype-checklist/
比如常见的AJAX语法:
不带参数:new Ajax.Request('blah.php')
带参数:new Ajax.Request('ninja.php', {
parameters: {
weapon1: 'foo',
weapon2: 'bar'
}
})

获得某个字段的值:var woot = $F('bar')
修改某个字段的值:$('coolestWidgetEver').update('some nifty content')
设置CSS:
$('footer').setStyle({
height: '100px',
background: 'ffc'
})


最著名的争论是2007年的Prototype and jQuery: A code comparison
http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison
使用PPT将两者做比较,讨论者无数。

不过,Prototype 有一个著名的windows效果简称PWC(Prototype Window Class):
http://prototype-window.xilinus.com/
至今没有在Jquery中发现类似替代,特别是这个页面的效果:http://prototype-window.xilinus.com/PWC-OS/index.html
号称可以替代PWC的JqModel:
http://dev.iceburg.net/jquery/jqModal/examples
窗口效果比PWC要差多,PWC简直可以媲美Windows桌面效果,本论坛就是用的PWC效果。

有人说:基于Prototype更适合做一些应用框架库;而Jquery则是直接面向应用的,比较赞同。

[该贴被banq于2009-08-12 14:44修改过]

Dojo vs. Ext.

不选择JQuery, Prototype and Scriptaculous因为他们有各自的特长用处。
从下面几个方面进行比较
1.Confirmation Dialog
2.JSON parsing and handling
3. The Learning Curve学习门槛
4.Playing well with others
5.成熟度
6.Licenses

结果 Dojo 获胜