Prototype與JQuery對比

banq發表於2009-08-12
從時間上看,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修改過]

相關文章