MooTools and Sizzle

原文地址:http://www.kxbd.com/article.asp?id=240

 

幾天沒上ajaxian.com,今天登錄一看,就看到了這篇新聞:MooTools and Sizzle

大意是說Mootools的開發團隊宣佈不會在Mootools框架中加入Sizzle,並建議其他JS框架也不要採用。

那麼,Sizzle又是什麼來頭,竟然讓Mootools團隊發佈如此聲明,於是我花了一下午時間把他們之間的恩怨大致瞭解了下。

事件相關人物:
Jhon Resig:Jquery創始人,最初起家就是CSS selector
Valerio Proietti:Mootools的老大
Aaron Newton:Mootools 的虔誠佈道者

原來Sizzle是John Resig寫的一個CSS selector engine,在前不久的一篇新聞裏有提到,Dojo正在投票是否將採用Sizzle作爲CSS selector engine。這篇新聞還提到有一大批知名的JS框架正在考慮或已經採用了Sizzle,新聞的語氣讓我感覺JS框架開發似乎從此走進了一個新時代。

在這新聞的評論裏,Aaron Newton發表了一篇文章,表達了一些不同的看法,並在文章中列舉了採用Sizzle的好與不好之處,很快,John Resig就在這文章評論裏逐條對不好之處進行了反駁或者辯解。光從這篇文章來說,我認爲Aaron Newton給我感覺還是很平和的,雖然他們倆前不久就交鋒過一次,那一次,Aaron Newton寫了一篇我非常欣賞的文章,是什麼讓Mootools如此不同?

但Jhon Resig的回覆中有一段話就讓我感覺有咄咄逼人的意味了:“Frankly, not using Sizzle will mean that MooTools will always be playing a game of catch-up. Right now jQuery, Prototype, Dojo, and YUI are all looking at using the library - that only leaves one odd library out. I’m not attempting to put undue pressure on your team - it’s absolutely your decision - but you’ll definitely be in a position, if all the libraries use Sizzle, of constantly trying to catch-up to what is implemented in the de facto implementation.”

我感覺就是在說,你們不用也行,不用就等着做一個過時的老怪物吧!永遠在我們屁股後面喫灰吧!

於是,Aaron Newton又寫了一篇文章來回復Jhon Resig。最後他的結論是:"My final thoughts are that MooTools could benefit from Sizzle and being a consumer of and contributor to this common layer for all the frameworks. But there aren’t that many compelling reasons to do this right now. If it were my choice (and it most certainly isn’t) I’d be inclined to take a wait-and-see approach. If Dojo adopts the project (did that vote already pass? I’m assuming it will) then I’d want to see what Sizzle looks like on the next release. I know John will continue to be a big contributor but by handing it over to Dojo - an awesome move I think - he’s basically saying that everyone should own it. I want to see what it looks like when everyone does. Maybe then the benefits will be much more clear to me.”

大意是說,Mootools能從Sizzle中得到不少靈感,但是如果是他來決定是否在Mootools中採用Sizzle,他會選擇等等看,看下Sizzle在其他框架中的表現。

一天過去,Mootools創始人Valerio Proietti發表了聲明,Mootools對Sizzle說不!

花了半天時間,終於把這事的大致經過看完。

採用Sizzle的理由,我大致翻譯了下,主要有:
1. 開發者不用重複造輪子,並可以集中開發者的力量到一個地方。
2. 其他框架開發人員減少開發selector的精力
3. 讓使用者更容易從一個框架遷移到另一個
4. 可以對瀏覽器提供者造成更大的影響,將來提供更統一標準的瀏覽器
5. 框架開發者之間得到了新的合作方式,能共享更多的好東西
6. Sizzle的速度很快

而Aaron Newton認爲不好的理由有:
1. Sizzle太大,並可能會越來越臃腫。
2. Sizzle緩存了查找結果,這可能是使用者並不想要的。
3. 其他框架的開發者失去了自主權。
4. 如果Sizzle得到了壟斷地位,框架之間的合理競爭機制可能會失去,創新的能力會減少。

Valerio Proietti的聲明中表示,我們不用Sizzle的理由有:
1. 我們本來就很快。

他在文章中解說,Sizzle之所以在slick speed中感覺快,是因爲Sizzle做了緩存,而slick speed會執行五次,後四次等於是沒有查找,這對於比較其他框架是不公平的。於是,他新寫了個mootools_vs_sizzle,認爲這個比較結果纔是公平的。我也測試了下,FF3, IE7兩者感覺是差不多,IE6中,Mootools感覺還要快些。

2. 我們知道我們在做什麼。

Mootools是我們寫的,我們知道哪兒是如何實現,哪兒需要改進,我們可以很快的對自己的代碼進行修改,自主權完全在我們手中,而如果採用Sizzle,當我們想要對其進行補丁時,會有可能被Dojo駁回。Sizzle中的代碼理念並不是我們想要的(我感覺理念是Mootools開發人員最愛說的詞), 我們有我們實現的一套方式,而Sizzle裏有很多東西並不是我們想要的。

3. Sizzle看上去是在搞壟斷

壟斷將會阻礙一件良好的競爭與創新(看看IE吧,這些年來,它都做了些什麼?它什麼也沒有做!這是我說的。),讓大家都做一件事,只會終結創新。而且看上去,將來,Jhon Resig還打算統一DOM manipulation 和 event binding,那麼好了,什麼都是你做的,那麼其他框架還有什麼存在的必要?我們之所有用不同的框架來做同樣的事情,是因爲我們都有不同解決方式,我們在理念上是不同的(你能說Firefox 和 IE 的理念相同?這還是我說的)。

好了,我最後總結下,Mootools是Valerio Proietti的孩子,他心裏想,我這孩子長的是眉清目秀還聰明能幹,憑什麼你過來就說,你那孩子不行,你看我這孩子,家家都要,來吧,丟了你家的,用我家的。Valerio Proietti說你家孩子長得再漂亮那也不是我的呀,於是號召大家抵制Jhon Resig的販賣人口行爲,看好自家的孩子不要弄丟了。

上次雙方交手是關於開發者應該選擇哪個JS框架,這次雙方的交火讓我感覺更激烈了些。

前陣子,微軟說將把jQuery作爲官方開發平臺的一部分,這次的事件Dojo又表示可能將採用Sizzle。種種跡象表明,Jquery的流行度實在驚人。

這三人的態度,Aaron Newton最平和,但我一樣也欣賞Valerio Proietti的獨立精神,至於Jhon Resig,不得不承認他搞營銷和搞JS水平一樣高深。

我又要發表無責任預測了,Jquery市場佔有率將不停走強,而Mootools仍然保持小衆框架地位。說來慚愧,我現在也沒有用Mootools寫過東西,光看他們打口水仗了,得找時間用Mootools寫點東西了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章