原文地址: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写点东西了。