搜尋

隨機推薦

24 十二月 2010
22 十一月 2011

jQuery、prototype、mootools、YUI框架比較

http://cl.ly/Q2tB/Image%202013.07.04%20%E4%B8%8B%E5%8D%881%3A59%3A56.jpeg

個人覺得:mootools 更符合物件導向,易擴展,對於熟悉物件導向的工程師來說很棒。但 jquery 做小型網站更方便多了,插件也多。現在常用的框架有Jquery,prototype,mootool,yui等,其他的框架都是非主流,有一個數據很有意思,就是這幾種框架的 市場佔有率,我覺得這個數據沒有太大意義,因為這幾種前端框架都有各自的針對性和特點,每種框架都適合相應規模的web項目,比如prototype和 jquery適合中小網站開發,mootool適合中型網站開發,yui適合大規模的web項目開發,而小網站的數量要遠大於門戶或sns這種大網站的, 因此,不論怎麼比較,jquery和prototype的使用數量都要超過mootool和yui。

廣告

在入門級開發者人群中,prototype是使用量最大的,因為他相對簡單一些,這裡的簡單和jquery的簡潔不一樣,prototype也 算“老”一點的框架,而且很多js高手入門都是從prototype開始的,因此也有很多wd對prototype有特殊的感情,畢竟,prototype改變了我們對js的看法。它的很多設計思想也被沿用致其他框架中。但一個框架是否優秀不應當只看一面,更重要的,框架對瀏覽器的支 持、文檔、擴展行、性能、編碼風格這些因素也在影響框架的使用者。prototype太基礎以至於對ie瀏覽器的版本判斷很粗糙,它糟糕的文檔和擴展性, 都是阻礙其在那些想深入學習js 的人群中更加流行的因素。因此,如果想積累一些入門級的前端實踐 ,用prototype非常合適。

有人說jQuery是被設計用來改變你寫JavaScript的方法的。在這一方面jquery的確作的很好,20行的Dom javascript語句在jquery裡只需要2-3行就可以完成,語言的簡潔簡直太吸引人了,尤其對於前端開發工程師這群多少有些代碼潔癖的人來說, 簡直美妙絕倫,甚至忽視了其粗糙的物件導向的結構這一致命的缺點。當我們過多的沉浸在代碼簡潔的樂趣中無法自拔的時候,對更高級抽象的忽視往往阻擋住了我 們的視野。因此,jquery本身無法承擔龐大的網站架構任務,也只能在中小網站中搞一搞動畫特效而已。但這仍然無法阻止wd們對jquery的偏愛,只 要你有潔癖,那麼你一定會喜歡jquery的。

在物件導向的方面,mootool的確作的不錯,軟件設計模式中的高內聚和低耦合在mootool中有良好的體現。文檔也很完整,但 mootool的佔有率一直不高是一個很尷尬的現象,作底端太多餘,無法和jquery競爭,作高端又有點吃力,無法和yui競爭,給人雞肋的感覺,就這樣。

如果你想作門戶、如果你想作sns、如果你想作大型電子商務和電子政務網站,你大概只有一個選擇,那就是yui,yui抽象出了比其他框架更復 雜的層次結構、把模塊按照不同的層次劃分,並定義層次之間模塊依賴關係,這種設計使得yui對萬行級代碼的管理遊刃有餘,這種重設計輕開發的思想是yui 的核心之一,此外,yui不僅僅是js框架,他是js+css+規範的集合,必要的約束在團隊協作項目中可以降低成本。其實yui本身也是團隊合作的產物。在擴展性方面,我覺得yui是所有前端框架作的最好的,ext就是選擇基於yui進行擴展。相對來講,prototype和jquery顯然太小了。

總結

輕量級的選擇主要是mootools和jquery,由於它們的設計思想的不同,jQuery是追求簡潔和高效,Mootools 除了追求這些目標以外,其核心在於物件導向,所以jQuery適合於快速開發,Mootools適合於稍大型和複雜的項目,其中需要物件導向的支持;另 外,在Ajax的支持上,jQuery稍強一些;在Comet的支持上,jQuery有相關的插件,Mootools目前沒有,但是Comet的核心在於 服務器的支持,瀏覽器端的接口很簡單,開發相關的插件很簡單。在物件導向的Javascript Library中,mootools逐漸戰勝了prototype(體積大,物件導向的設計不合理等),也包括script.acul.ous(基於 prototype,實際上就是prototype上的UI庫)。

因此,特定的框架有特定的使用範圍,在合適的項目上,相應的框架都會發揮其應有的優勢,因此,過分比較前端框架並得出熟優熟劣來純粹是吃包了撐的,這和比較編程語言那個好和操作系統那個好一樣沒有意義。總結至此只為加深對前端框架的印象和理解,無他。

廣告

无觅相关文章插件,快速提升流量

Please publish modules in offcanvas position.