MooTools and Sizzle

MooTools团队拒绝在框架中加入Sizzle选择器引擎,引发与jQuery创始人John Resig之间的论战。争论焦点在于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写点东西了。

下载代码方式:https://pan.quark.cn/s/e2157c05e625 在信息技术领域中,数学问题的复杂求解在很大程度上依赖于数值计算,这在科学计算、工程分析以及数据分析等多个方面尤为重要。线性方程组的求解是数值计算中的一个核心且关键的问题,而雅克比迭代法作为一种有效策略,专门用于处理大规模稀疏线性方程组。这个资源提供了一段采用C++语言编写的雅克比迭代法源代码,配合附带的博客文章,能够帮助使用者深入掌握此方法的基本原理和实际应用。 雅克比迭代法,有时也被称作局部迭代方法,主要用于求解形式为 Ax = b 的线性方程组,其中矩阵A需满足对角占优的条件。对角占优的特性是指矩阵中每个对角线元素的绝对值要大于该行其他元素绝对值之和,这一性质确保了算法的收敛性能。该方法的实施基于矩阵A的雅克比矩阵J,其构成方式为 J = D - L - U,其中D、L和U分别代表矩阵A的对角线部分、下三角部分以及上三角部分。 迭代过程的数学表达式为:x(k+1) = J^-1 * b + (I - J^-1*A) * x(k),在此表达式中,x(k)表示第k次迭代的解向量,x(k+1)则是第k+1次迭代的解向量,I是单位矩阵。每次迭代都利用前一次得到的解来计算下一次的解,迭代会持续进行,直到解的精度达到预设标准或迭代次数达到最大限制。 在使用C++进行编程实现时,主要步骤包括: 1. 初始化阶段:设定初始解向量x(0),并明确迭代过程中的参数,例如最大迭代次数和容许的误差界限。 2. 构建雅克比矩阵:依据矩阵A的非对角元素来形成J矩阵。 3. 迭代计算:依照上述迭代公式计算新的解向量,并验证是否满足终止条件(即当前解与前一次解的差值小于设定的误差界限)。 4. 结果输出...
源码下载地址: https://pan.quark.cn/s/24e22475d2c3 采用SSM框架构建的果蔬生鲜超市平台,亦称为果蔬在线交易系统。其用户界面部分涵盖了:账号登录流程、新用户注册功能、购物车内容维护、订单状态监控、收货地点设置、商品检索服务、商品购买操作等。系统后台则由以下核心单元构成:用户账户维护、收货地址簿维护、商品分类维护、商品信息维护、货品出库单维护、订单状态跟踪、销售业绩统计、系统整体配置等。采用SSM框架构建的果蔬生鲜超市平台,亦称为果蔬在线交易系统。其用户界面部分涵盖了:账号登录流程、新用户注册功能、购物车内容维护、订单状态监控、收货地点设置、商品检索服务、商品购买操作等。系统后台则由以下核心单元构成:用户账户维护、收货地址簿维护、商品分类维护、商品信息维护、货品出库单维护、订单状态跟踪、销售业绩统计、系统整体配置等。采用SSM框架构建的果蔬生鲜超市平台,亦称为果蔬在线交易系统。其用户界面部分涵盖了:账号登录流程、新用户注册功能、购物车内容维护、订单状态监控、收货地点设置、商品检索服务、商品购买操作等。系统后台则由以下核心单元构成:用户账户维护、收货地址簿维护、商品分类维护、商品信息维护、货品出库单维护、订单状态跟踪、销售业绩统计、系统整体配置等。采用SSM框架构建的果蔬生鲜超市平台,亦称为果蔬在线交易系统。其用户界面部分涵盖了:账号登录流程、新用户注册功能、购物车内容维护、订单状态监控、收货地点设置、商品检索服务、商品购买操作等。系统后台则由以下核心单元构成:用户账户维护、收货地址簿维护、商品分类维护、商品信息维护、货品出库单维护、订单状态跟踪、销售业绩统计、系统整体配置等。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在当前文档中,我们将详细研究如何运用Eclipse集成开发环境(IDE)的自定义CSS选项来调整其所有视窗的背景色调以及其他常用视窗的色调。Eclipse作为一个功能强大的开源开发平台,能够支持多种编程语言,包括Java、C++以及Python等。对于那些长时间运用Eclipse的开发专业人士而言,个性化界面色调能够显著提升工作舒适感和效率。让我们深入理解Eclipse的色彩配置机制。Eclipse依托于SWT(Standard Widget Toolkit)框架,允许用户通过调整主题和CSS样式来改变其视觉呈现。在默认设置下,Eclipse会采用系统级别的视窗色调,但用户可以通过覆盖特定的CSS文件来实现个性化定制,而无需触及操作系统本身的设置。 实施步骤1:定位Eclipse的CSS文件 Eclipse的CSS文件通常存储在以下路径位置: ``` <eclipse安装目录>\plugins\org.eclipse.platform_<version>\css ``` 此处,`<eclipse安装目录>`代表用户安装Eclipse的文件夹位置,`<version>`指代Eclipse的版本标识。 实施步骤2:对原始CSS文件进行备份 在进行任何修改之前,务必对原CSS文件进行备份操作,以便在出现问题时能够迅速恢复到原始状态。备份文件通常命名为`e4.css`和`e4_basestyle.css`。 实施步骤3:建立或编辑CSS文件 创建一个新的CSS文件(例如`custom_theme.css`),并插入以下内容以设定窗口背景色: ```css .e4-applicatio...
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 根据所提供的文件资料可以判断,这是一份关于RS232转422/485转换器电路原理图的详尽设计文档。该文档全面地列出了电路中各个组件及其连接方法,对于掌握RS232与422/485之间的信号转换原理具有非常重要的参考意义。 ### RS232、RS422与RS485概述 在开始深入剖析电路原理图之前,有必要先对RS232、RS422与RS485这三种通信协议的基本概念进行简要介绍。 #### RS232 RS232是一种应用于串行数据通信的接口规范,主要适用于计算机与调制解调器或其他外部设备之间的数据交互。该接口标准支持点对点的通信模式,通信距离通常不超过15米,并且较为容易受到外界干扰的影响。 #### RS422 RS422是一种经过改进的串行通信标准,其核心特点在于采用差分信号进行传输,支持多点的通信模式,即一个发送端能够同时向多个接收端传输数据,通信距离最远可达1200米,并且具有较强的抗干扰性能。 #### RS485 RS485是建立在RS422基础之上的进一步发展,同样运用差分信号进行传输,其最突出的特点在于支持半双工通信模式,即在同一时刻只能进行发送或接收操作,但发送端和接收端的位置可以互换,非常适合于长距离、多设备之间的数据传输,通信距离同样可以达到1200米,并且能够支持多达32个设备接入。 ### RS232转422/485转换器电路解析 在电路原理图中,可以观察到采用了MAX490CPA和MAX485CPA芯片作为RS232与RS422/485之间的信号转换装置,同时使用了MAX233ACPP芯片作为RS232电平转换装置。 #### MAX490CP...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值