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写点东西了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值