- 浏览: 2617900 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
我为什么选择mootools,抛弃了prototype. (mootools 与 prototype 核心代码分析)
===========================================
前言
===========================================
最近喜欢上了mootools(相见恨晚啊),在公开表示了对他的偏爱.
很多朋友都问我为什么要移情别恋,其实理由还是蛮多的.
今天在这里打算列举出一部分.让更多的朋友能够了解一下mootools,也希望有更多的朋友喜欢上他.
文章的标题注定了我会更多的讲述 mootools比prototype好的地方,
希望大家不要被我的误导,以为mootools处处都比prototype好.
mootools还是有一些不足的.
本次对比针对 mootools 1.11版 和 prototype 1.51版,
只比较了一些核心代码,其他的工具方法,辅助函数不再本文讨论之内.
开始前,再次重申一遍:我曾经很爱prototype,而且我将永远都会用"伟大"来形容它.
好 下面对比正式开始 (
mootools以下简称moo.
本文所引用的代码, 只是起到说明作用,不保证他们都可以被正确的执行.
同时为了使本文简洁一些,引入的 一些 moo和prototype的代码也只是片段或是伪代码.
)
===========================================
一. 类机制
===========================================
js里的类实际上就是function.
如果不使用任何框架和组件,那么想创建一个自己类也不是难事,方法如下:
执行 后, 会创建一个PersonClass类的实例myGirlFriend, 并执行function内的语句.
那些语句可以理解为是类的构造函数.
Prototype
现在来看看在prototype的帮助下如何去定义这个类:
(关于Object.extend稍后在对比继承机制时再细说.)
再来看看prototype是实现类机制的核心代码.
通过看代码不难看出,prototype的Class实际上只是帮助我们抽象出了"类的构造函数".
而当我们在prototype的这种机制下进行类的定义时,实际上带来的好处是非常有限的.
prototype的Class只是从结构对我们的类进行了重新规划. 而这样的规划意义并不是很大.
而且prototype带有强制性,即, initialize 是必须要定义的.
实际上这里存在一个缺陷, Class应该提供一个默认的initialize(一个空函数就好),
或者是在create返回的function里进行必要的判断.
(prototype1.6的类机制变化比较大,但是还没仔细研究过,所以不敢轻易评论).
Mootools
现在来看看在 moo的帮助下如何去定义一个类:
其中类的 initialize 不是必须的.
如果你想给 PersonClass 增加属性和方法,你可以在new Class的参数里直接以 json方式定义.
也可以使用 如下方式
implement支持多个{}.关于implement稍后在对比继承机制时再细说.
在来看一下moo类机制的一些核心代码.
代码的具体原理就不细说了.大家在moo的Class里看到了 extend 和implement,那下面就来具体说一说moo和prototype的 继承机制吧.
===========================================
二. 继承机制
===========================================
Prototype
prototype提供的继承很简单.
他只是把source里的属性赋给destination,同时会覆盖destination里的同名属性.
他可以用于对象,也可以用于类,当要实现类的继承时,destination要使用 MySubClass.prototype.
prototype的继承机制可以说是非常薄弱的.
Mootools
moo提供了三种继承机制:
首先他也提供了简单的继承机制:
Objcet.extend (注意,不是上面代码中 Class 里的 extend)
他的代码如下
他的使用方法和 prototype 完全一样.
但是大家可能注意到了 这句 if (!args[1]) args = [this, args[0]]; 这句的纯在使得下面的代码写法成为可能.
简单的一句话,让extend的用法增加了更多的灵活性,不得不赞一个了!!!
下面说说重点, moo的类里的extend和 implement
先说 implement,之前已经说了一些了
执行后 MyClassA 将拥有 methodA.
implement用来向类中添加属性和方法(会覆盖同名属性和方法),相当于
Object.extend (MyClassA.prototype , {... } )
但是Object.extend 不支持多个source,implement可以,示例如下:
MyClassA.implement( objA , objB, objC ... );
下面来看看moo的Class.extend.
moo的Class.extend才是我们期待的真正的"类继承",看一下官方的示例
看那个parent() !!!!
通过moo的Class.extend实现的继承提供一个关键的方法 parent().
使用他你可以调用父类中的同名方法,好像java里的super一样.
这个示例已经可以说明一切了.
关于prototype和moo的类机制和继承机制的对比就到这里,孰优孰劣大家心里应该有数了吧.
===========================================
三.抽象对象
===========================================
再来看一看"抽象对象". 这个虽然对于开发人员来说用处不大,但还是对比一下吧,小细节也能看出作者的用心.
Prototype
prototype的抽象对象很简单
var Abstract = new Object();
具体的意义不大.
Mootools
moo的的抽象对象相对更完善一些.
支持自定义抽象(以参数形式传入),同时会为抽象对象自动添加extend方法.
===========================================
四. 关于 $()
===========================================
Prototype
prototype的$大家都比较熟悉了, 工作原理就是
通过id取得一个页面元素(或者直接传入一个页面元素对象),然后给他增加一些prototype提供的方法和属性,来方便开发人员对页面元素的使用.
Mootools
moo在这方面做的差不多.
不同的主要有两点, 首先moo为页面元素增加的方法和属性与prototype的不同(这个稍后会介绍),另外一个不同是moo的$兼具了对象管理的一个功能.
他引入了一个 Garbage 类, 来对页面元素进行一个统一的管理和回收(主要是回收).
可以更好的减少js(或浏览器)造成的内存泄露等问题.
具体的大家可以看一下代码,在这里就不详细说明了.
===========================================
五.关于 Array Enumerable Hash
===========================================
prototype 和 moo 都提供了集合迭代方法 (each)
这个网上已经有一篇不错的对比文章,我就不在这里重复了
http://blog.fackweb.cn/?p=50.
moo的 forEach/each方法: function(fn, bind){..}
那个bind 结合代码 和 上面那篇文章, 大家应该可以很好的看出来prototype和moo的不同与优劣.
prototype里面有 Enumerable 的概念,moo没有.
但是我个人一直觉得 Enumerable 比较鸡肋.
在实际开发中,很少使用.
Enumerable的功能完全可以 用普通json对象 或者是 Hash来实现.
moo的作者也许同样这么认为.所以 不再 设置一个 鸡肋的 Enumerable类.
但是请大家放心, Enumerable 能做的事情, 在moo里也能完成.
可以理解为
moo的 Array + Hash +{} 完全可以接替 prototype的 Array + Enumerable + Hash +{}
当然对于一些工具方法两者提供的都不太一样,不好比较,但是那些方法都是附属品.
我们完全可以自己来实现,所以不在这次的比较范畴之内.
===========================================
六. 关于 Element
===========================================
两者的 Element 从作用上看类似.都是一种对页面元素的包装,为页面元素添加了一些诸如 addEvent remove style之类的方法.
但是大家通过看代码可以发现 moo的实现明显更简洁 更OO.
同时还有一个关键的不同,prototype又提取出了一个Form对象,里面包含了很多表单相关的方法.
同时还衍生出了 serializeElements Method 等等很多类和方法,代码瞬间变得异常复杂和难以琢磨.
而moo中没有Form对象,在moo中,Form本身就是一个Element 他没什么特别的,这样的思想类似components模式
普通Element具备的方法 Form 都应该具备, Form具备的方法 Element也都应该包含.form 和 其他页面元素没什么不同.
form元素只是一个包含了 input select textarea等子元素,同时拥有action target等属性而已.
一个div 一个span 一个td... 同样可以包含input select textarea子元素,同样可以拥有.action target属性.
浏览器处理他们的方式可能不同,但是在moo面前,大家完全平等.
其实prototype里 form和普通页面元素几乎也是平等的,但是问题就是,既然是平等的,又何必硬生生的造出Form以及那么多的衍生物呢?
===========================================
七.Ajax
===========================================
Prototype
prototype的ajax实现主要是靠一个 Ajax类 来实现.(但是这个类形同虚设,大家更多的是和 Ajax.Request 类打交道.
先来看一个prototype下一个简单的ajax提交实例:
其中 myData 可以是字符 : "name=Vickey&gender=female";
也可以是对象 { name : Vickey, gender : female }
Mootools
moo首先在将ajax机制分层.提取出了一个基类:XHR.
目前XHR有两个子类, 一个是 Ajax ,另一个是Json.Remote.
在moo下一个简单的ajax提交实例:
大家可以看到request成为了Ajax对象的一个方法,这样的设计显然是更合理更自然 也更OO的.
而且关键的一点是,你可以提前创建好你需要的ajax对象.在需要发出请求时再发出请求.
同时还有一个重要特性, request是支持参数的,这个参数就是你要提交的数据.
也就是说,你可以在new Ajax时不指定数据或者指定一个默认数据.
在提交的时候可以提交另一个data.如.
myAjax.request(yourData);
其中data可以是字符串,可以是对象, 也可以是一个页面元素.
要用ajax提交一个form 或者一个 div下的所有表单元素,只是改变一下 myData.
var myData= $("formID"); // var myData= $("divID");
然后就和普通的ajax提交完全一样了.
myAjax.request(myData);
当然还有更oo的方式 :
myData.send({onComplete: callBackFunction });
用后一种方式的时候要保证提交的元素有action属性,没有你就赋一个 myData.action=url.
prototype里如何实现这一功能呢??
Prototype
Form.request($("formID") ,{ onComplete: callBackFunction });
当然prototype里也可以类似moo的做法 , 只要让myData=$("formID").serialize(true) 就可以了.
但是这一个小小的不同,反映出了设计上的差距.
Mootools
moo的Json.Remote类,简单,但是很实用:
这个类和Ajax类的本质区别是,
他提交的是一个序列化后的 json字符串("{name: 'Vickey',gender: 'female' } "),而不是把 json对象转化成QueryString ("name=Vickey&gender=female");
===========================================
结束语
===========================================
写这篇文章不是要批评prototype,以我现在的水平还没那个资格.
只是和mootools对比后, prototype在设计上的不足立刻就显现了出来.
虽然prototype新版本变化很多,很多我上面提到的一些不足都改正了,而且也加入了很多以前不具备的新的特性.
但是prototype现在的发展停留在:"修补不足,增加功能"的阶段,而没有从设计上进行深层次的重构,所以我不认为他在mootools面前有足够的底气.
至于jquery我没有深入研究过,但是它的设计觉得完全是prototype风格的, 注意,我说的是设计风格,而不是代码风格.
代码上他可能写的更精妙,更有趣,但是设计上依然是prototype风格:薄弱的类机制,靠简单的extend支撑起整个系统.
JQuery在很多方面很出色,但是归根结底他和prototype走在一条路上,只是在有些方面他走的更快.
mootools并非完美无缺,但是至少现在他美的地方比prototype更多,缺的地方比prototype更少.
所以,我选择mootools. 你呢??
不要听评论,不要看介绍, 只要看看他们的源代码, 同时动手用他们写些东西, 你的答案自然会浮现出来.
把skin交给美工修改。
用EXT做的,但修改过SKIN,相信这样能够不会“一下子”看出是EXT做的:
非常期待
yui作者当初面对这个问题时,和你是相同的答案。
“jQuery最大的优点是易用。 jQuery可以一行代码搞掂很多问题。 YUI最大的优点是它被设计为面向对象的(object oriented)和组件的架构(component architecture)。”
《EXT设计模式初学习》
http://www.iteye.com/topic/121946
===========================================
前言
===========================================
最近喜欢上了mootools(相见恨晚啊),在公开表示了对他的偏爱.
很多朋友都问我为什么要移情别恋,其实理由还是蛮多的.
今天在这里打算列举出一部分.让更多的朋友能够了解一下mootools,也希望有更多的朋友喜欢上他.
文章的标题注定了我会更多的讲述 mootools比prototype好的地方,
希望大家不要被我的误导,以为mootools处处都比prototype好.
mootools还是有一些不足的.
本次对比针对 mootools 1.11版 和 prototype 1.51版,
只比较了一些核心代码,其他的工具方法,辅助函数不再本文讨论之内.
开始前,再次重申一遍:我曾经很爱prototype,而且我将永远都会用"伟大"来形容它.
好 下面对比正式开始 (
mootools以下简称moo.
本文所引用的代码, 只是起到说明作用,不保证他们都可以被正确的执行.
同时为了使本文简洁一些,引入的 一些 moo和prototype的代码也只是片段或是伪代码.
)
===========================================
一. 类机制
===========================================
js里的类实际上就是function.
如果不使用任何框架和组件,那么想创建一个自己类也不是难事,方法如下:
var PersonClass=function(name,gender){ this.name=name; this.gender=gender; alert("My name is "+this.name); } var myGirlFriend=new PersonClass('Vickey','female');
执行 后, 会创建一个PersonClass类的实例myGirlFriend, 并执行function内的语句.
那些语句可以理解为是类的构造函数.
Prototype
现在来看看在prototype的帮助下如何去定义这个类:
var PersonClass = Class.create(); PersonClass.prototype.initialize=function(name,gender){ this.name=name; this.gender=gender; alert("My name is "+this.name); }; var myGirlFriend=new PersonClass('Vickey','female'); //如果想给类增加属性和方法时使用 PersonClass.prototype.XXX=...; //或者是使用 prototype提供的 Object.extend(PersonClass.prototype, {...} );
(关于Object.extend稍后在对比继承机制时再细说.)
再来看看prototype是实现类机制的核心代码.
var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } }
通过看代码不难看出,prototype的Class实际上只是帮助我们抽象出了"类的构造函数".
而当我们在prototype的这种机制下进行类的定义时,实际上带来的好处是非常有限的.
prototype的Class只是从结构对我们的类进行了重新规划. 而这样的规划意义并不是很大.
而且prototype带有强制性,即, initialize 是必须要定义的.
实际上这里存在一个缺陷, Class应该提供一个默认的initialize(一个空函数就好),
或者是在create返回的function里进行必要的判断.
(prototype1.6的类机制变化比较大,但是还没仔细研究过,所以不敢轻易评论).
Mootools
现在来看看在 moo的帮助下如何去定义一个类:
var PersonClass = new Class( { initialize: function(name,gender){ this.name=name; this.gender=gender; alert("My name is "+this.name); } }); var myGirlFriend=new PersonClass('Vickey','female');
其中类的 initialize 不是必须的.
如果你想给 PersonClass 增加属性和方法,你可以在new Class的参数里直接以 json方式定义.
也可以使用 如下方式
PersonClass.implement ({ age:0 , getName : function() {return this.name;} } , {...}, ..... );
implement支持多个{}.关于implement稍后在对比继承机制时再细说.
在来看一下moo类机制的一些核心代码.
var Class = function(properties){ var klass = function(){ return (arguments[0] !== null && this.initialize && $type(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this; }; $extend(klass, this); klass.prototype = properties; klass.constructor = Class; return klass; }; Class.prototype = { extend: function(properties){ var proto = new this(null); for (var property in properties){ var pp = proto[property]; proto[property] = Class.Merge(pp, properties[property]); } return new Class(proto); }, implement: function(){ for (var i = 0, l = arguments.length; i < l; i++) $extend(this.prototype, arguments[i]); } };
代码的具体原理就不细说了.大家在moo的Class里看到了 extend 和implement,那下面就来具体说一说moo和prototype的 继承机制吧.
===========================================
二. 继承机制
===========================================
Prototype
prototype提供的继承很简单.
Object.extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } return destination; }
他只是把source里的属性赋给destination,同时会覆盖destination里的同名属性.
他可以用于对象,也可以用于类,当要实现类的继承时,destination要使用 MySubClass.prototype.
prototype的继承机制可以说是非常薄弱的.
Mootools
moo提供了三种继承机制:
首先他也提供了简单的继承机制:
Objcet.extend (注意,不是上面代码中 Class 里的 extend)
他的代码如下
var $extend = function(){ var args = arguments; if (!args[1]) args = [this, args[0]]; for (var property in args[1]) args[0][property] = args[1][property]; return args[0]; }; Object.extend = $extend;
他的使用方法和 prototype 完全一样.
但是大家可能注意到了 这句 if (!args[1]) args = [this, args[0]]; 这句的纯在使得下面的代码写法成为可能.
var myObjcet={....}; myObjcet.extend=$extend; myObjcet.extend(objA); myObjcet.extend(objB); myObjcet.extend(objC);
简单的一句话,让extend的用法增加了更多的灵活性,不得不赞一个了!!!
下面说说重点, moo的类里的extend和 implement
先说 implement,之前已经说了一些了
var MyClassA = new Class(); MyClassA.implement( { methodA : function() {... } } );
执行后 MyClassA 将拥有 methodA.
implement用来向类中添加属性和方法(会覆盖同名属性和方法),相当于
Object.extend (MyClassA.prototype , {... } )
但是Object.extend 不支持多个source,implement可以,示例如下:
MyClassA.implement( objA , objB, objC ... );
下面来看看moo的Class.extend.
moo的Class.extend才是我们期待的真正的"类继承",看一下官方的示例
var Animal = new Class({ initialize: function(age){ this.age = age; } }); var Cat = Animal.extend({ initialize: function(name, age){ this.parent(age); //will call the previous initialize; this.name = name; } });
看那个parent() !!!!
通过moo的Class.extend实现的继承提供一个关键的方法 parent().
使用他你可以调用父类中的同名方法,好像java里的super一样.
这个示例已经可以说明一切了.
关于prototype和moo的类机制和继承机制的对比就到这里,孰优孰劣大家心里应该有数了吧.
===========================================
三.抽象对象
===========================================
再来看一看"抽象对象". 这个虽然对于开发人员来说用处不大,但还是对比一下吧,小细节也能看出作者的用心.
Prototype
prototype的抽象对象很简单
var Abstract = new Object();
具体的意义不大.
Mootools
moo的的抽象对象相对更完善一些.
var Abstract = function(obj){ obj = obj || {}; obj.extend = $extend; return obj; };
支持自定义抽象(以参数形式传入),同时会为抽象对象自动添加extend方法.
===========================================
四. 关于 $()
===========================================
Prototype
prototype的$大家都比较熟悉了, 工作原理就是
通过id取得一个页面元素(或者直接传入一个页面元素对象),然后给他增加一些prototype提供的方法和属性,来方便开发人员对页面元素的使用.
Mootools
moo在这方面做的差不多.
不同的主要有两点, 首先moo为页面元素增加的方法和属性与prototype的不同(这个稍后会介绍),另外一个不同是moo的$兼具了对象管理的一个功能.
他引入了一个 Garbage 类, 来对页面元素进行一个统一的管理和回收(主要是回收).
可以更好的减少js(或浏览器)造成的内存泄露等问题.
具体的大家可以看一下代码,在这里就不详细说明了.
===========================================
五.关于 Array Enumerable Hash
===========================================
prototype 和 moo 都提供了集合迭代方法 (each)
这个网上已经有一篇不错的对比文章,我就不在这里重复了
http://blog.fackweb.cn/?p=50.
moo的 forEach/each方法: function(fn, bind){..}
那个bind 结合代码 和 上面那篇文章, 大家应该可以很好的看出来prototype和moo的不同与优劣.
prototype里面有 Enumerable 的概念,moo没有.
但是我个人一直觉得 Enumerable 比较鸡肋.
在实际开发中,很少使用.
Enumerable的功能完全可以 用普通json对象 或者是 Hash来实现.
moo的作者也许同样这么认为.所以 不再 设置一个 鸡肋的 Enumerable类.
但是请大家放心, Enumerable 能做的事情, 在moo里也能完成.
可以理解为
moo的 Array + Hash +{} 完全可以接替 prototype的 Array + Enumerable + Hash +{}
当然对于一些工具方法两者提供的都不太一样,不好比较,但是那些方法都是附属品.
我们完全可以自己来实现,所以不在这次的比较范畴之内.
===========================================
六. 关于 Element
===========================================
两者的 Element 从作用上看类似.都是一种对页面元素的包装,为页面元素添加了一些诸如 addEvent remove style之类的方法.
但是大家通过看代码可以发现 moo的实现明显更简洁 更OO.
同时还有一个关键的不同,prototype又提取出了一个Form对象,里面包含了很多表单相关的方法.
同时还衍生出了 serializeElements Method 等等很多类和方法,代码瞬间变得异常复杂和难以琢磨.
而moo中没有Form对象,在moo中,Form本身就是一个Element 他没什么特别的,这样的思想类似components模式
普通Element具备的方法 Form 都应该具备, Form具备的方法 Element也都应该包含.form 和 其他页面元素没什么不同.
form元素只是一个包含了 input select textarea等子元素,同时拥有action target等属性而已.
一个div 一个span 一个td... 同样可以包含input select textarea子元素,同样可以拥有.action target属性.
浏览器处理他们的方式可能不同,但是在moo面前,大家完全平等.
其实prototype里 form和普通页面元素几乎也是平等的,但是问题就是,既然是平等的,又何必硬生生的造出Form以及那么多的衍生物呢?
===========================================
七.Ajax
===========================================
Prototype
prototype的ajax实现主要是靠一个 Ajax类 来实现.(但是这个类形同虚设,大家更多的是和 Ajax.Request 类打交道.
先来看一个prototype下一个简单的ajax提交实例:
var myAjax = new Ajax.Request( url,{parameters: myData , onComplete: callBackFunction } );
其中 myData 可以是字符 : "name=Vickey&gender=female";
也可以是对象 { name : Vickey, gender : female }
Mootools
moo首先在将ajax机制分层.提取出了一个基类:XHR.
目前XHR有两个子类, 一个是 Ajax ,另一个是Json.Remote.
在moo下一个简单的ajax提交实例:
var myAjax =new Ajax(url, {data : myData , onComplete: callBackFunction }).request();
大家可以看到request成为了Ajax对象的一个方法,这样的设计显然是更合理更自然 也更OO的.
而且关键的一点是,你可以提前创建好你需要的ajax对象.在需要发出请求时再发出请求.
var myAjax =new Ajax(...); ..... myAjax.request();
同时还有一个重要特性, request是支持参数的,这个参数就是你要提交的数据.
也就是说,你可以在new Ajax时不指定数据或者指定一个默认数据.
在提交的时候可以提交另一个data.如.
myAjax.request(yourData);
其中data可以是字符串,可以是对象, 也可以是一个页面元素.
要用ajax提交一个form 或者一个 div下的所有表单元素,只是改变一下 myData.
var myData= $("formID"); // var myData= $("divID");
然后就和普通的ajax提交完全一样了.
myAjax.request(myData);
当然还有更oo的方式 :
myData.send({onComplete: callBackFunction });
用后一种方式的时候要保证提交的元素有action属性,没有你就赋一个 myData.action=url.
prototype里如何实现这一功能呢??
Prototype
Form.request($("formID") ,{ onComplete: callBackFunction });
当然prototype里也可以类似moo的做法 , 只要让myData=$("formID").serialize(true) 就可以了.
但是这一个小小的不同,反映出了设计上的差距.
Mootools
moo的Json.Remote类,简单,但是很实用:
var jSonRemoteRequest = new Json.Remote( url , {onComplete:callBackFunction }).send({name: 'Vickey',gender: 'female' });
这个类和Ajax类的本质区别是,
他提交的是一个序列化后的 json字符串("{name: 'Vickey',gender: 'female' } "),而不是把 json对象转化成QueryString ("name=Vickey&gender=female");
===========================================
结束语
===========================================
写这篇文章不是要批评prototype,以我现在的水平还没那个资格.
只是和mootools对比后, prototype在设计上的不足立刻就显现了出来.
虽然prototype新版本变化很多,很多我上面提到的一些不足都改正了,而且也加入了很多以前不具备的新的特性.
但是prototype现在的发展停留在:"修补不足,增加功能"的阶段,而没有从设计上进行深层次的重构,所以我不认为他在mootools面前有足够的底气.
至于jquery我没有深入研究过,但是它的设计觉得完全是prototype风格的, 注意,我说的是设计风格,而不是代码风格.
代码上他可能写的更精妙,更有趣,但是设计上依然是prototype风格:薄弱的类机制,靠简单的extend支撑起整个系统.
JQuery在很多方面很出色,但是归根结底他和prototype走在一条路上,只是在有些方面他走的更快.
mootools并非完美无缺,但是至少现在他美的地方比prototype更多,缺的地方比prototype更少.
所以,我选择mootools. 你呢??
不要听评论,不要看介绍, 只要看看他们的源代码, 同时动手用他们写些东西, 你的答案自然会浮现出来.
评论
32 楼
fins
2007-09-13
其实我没有比较他们内部的实现,也没有比较他们的风格,我的比较很简单.
就是把同样的函数拿出来比, 看谁的用起来更舒服,或者谁考虑的更周全.
至于JQUERY我多次重申 我对它不了解,只是简单的看了看,归根结底我是不喜欢它的晦涩 和故弄玄虚.
不知道你听过"老罗语录"没,里面关于对金庸 古龙的评价那段我觉得说的很有道理.
古龙的文字第一次看到又酷又炫,但是时间久了人们才发现,还是金庸的朴实无华更动人心(当然他讲的要有意思得多,如果没听过建议听听.
老罗还在里面引用了两句话,我觉得更是精辟:"时间对于别出心裁的小花招是最无情的","过份依赖这些稀奇古怪的小花招导致结果价值受到削弱,经不起时间考验".
就是把同样的函数拿出来比, 看谁的用起来更舒服,或者谁考虑的更周全.
至于JQUERY我多次重申 我对它不了解,只是简单的看了看,归根结底我是不喜欢它的晦涩 和故弄玄虚.
不知道你听过"老罗语录"没,里面关于对金庸 古龙的评价那段我觉得说的很有道理.
古龙的文字第一次看到又酷又炫,但是时间久了人们才发现,还是金庸的朴实无华更动人心(当然他讲的要有意思得多,如果没听过建议听听.
老罗还在里面引用了两句话,我觉得更是精辟:"时间对于别出心裁的小花招是最无情的","过份依赖这些稀奇古怪的小花招导致结果价值受到削弱,经不起时间考验".
31 楼
Tin
2007-09-13
我觉得fins同学的一些说法会造成没有深入使用这几个框架的朋友的误解。因为这几个框架的思想是不一样的,所以它们的语法也是不同的。fins同学的评价似乎更像从Java的OO想法来评价几个js框架。
其实,moo一开始的想法就是light weight,所以它的很多语法其实就是没有语法。fins说的json语法,其实就是js里面的散列对象嘛,javascript语法本来就是这个样子呀,不包装就是这样。而这种方式如果写的好读起来很像DSL,很舒服,moo充分发挥了这个好处。
prototype和JQuery都没有强调继承这样的概念。javascript的强大很大就来自它的原形继承,如果要用好它就要利用好原形继承。prototype在这方面很像Ruby,比如Enumerable,这是一种按照行为的抽象,很符合Ruby/Python里面Module的想法,并非所有行为都要抽象到一个对象再继承,行为本身也可以抽象再混入。
JQuery我觉得像Python。write less do more这个想法也比较pythonic。在这个框架中有很强的函数式编程的味道,其实javascript已经具备了函数式编程的语法能力,所以使用FP的强大是JQuery受欢迎的原因之一。
说回来,还是流派原因。moo的产生比前两者要晚。prototype已经开始走大而全的路子了,而且配套的script.aculo.us也是越来越臃肿(而且这个特效库的代码质量的确不怎么好),但是要看到RoR里面使用RJS简化Ajax应用开发都得益于这些大而全的库,所以我们也没什么可抱怨的,只能说没有使用RoR少享受点便利吧。JQuery继续保持它的优美,插件也越来越多,我了解到的很多使用Django进行Web开发的朋友都在用JQuery。而moo,越来越受欢迎,我们也要认真关注它的体积,如果它能持续保持苗条,那么轻量级Web项目就很有可能越来越多的选用它。
每年学一门新语言,学两三个新框架,肯定是有益的。fins转阵营说明你也在拥抱变化呀:D
其实,moo一开始的想法就是light weight,所以它的很多语法其实就是没有语法。fins说的json语法,其实就是js里面的散列对象嘛,javascript语法本来就是这个样子呀,不包装就是这样。而这种方式如果写的好读起来很像DSL,很舒服,moo充分发挥了这个好处。
prototype和JQuery都没有强调继承这样的概念。javascript的强大很大就来自它的原形继承,如果要用好它就要利用好原形继承。prototype在这方面很像Ruby,比如Enumerable,这是一种按照行为的抽象,很符合Ruby/Python里面Module的想法,并非所有行为都要抽象到一个对象再继承,行为本身也可以抽象再混入。
JQuery我觉得像Python。write less do more这个想法也比较pythonic。在这个框架中有很强的函数式编程的味道,其实javascript已经具备了函数式编程的语法能力,所以使用FP的强大是JQuery受欢迎的原因之一。
说回来,还是流派原因。moo的产生比前两者要晚。prototype已经开始走大而全的路子了,而且配套的script.aculo.us也是越来越臃肿(而且这个特效库的代码质量的确不怎么好),但是要看到RoR里面使用RJS简化Ajax应用开发都得益于这些大而全的库,所以我们也没什么可抱怨的,只能说没有使用RoR少享受点便利吧。JQuery继续保持它的优美,插件也越来越多,我了解到的很多使用Django进行Web开发的朋友都在用JQuery。而moo,越来越受欢迎,我们也要认真关注它的体积,如果它能持续保持苗条,那么轻量级Web项目就很有可能越来越多的选用它。
每年学一门新语言,学两三个新框架,肯定是有益的。fins转阵营说明你也在拥抱变化呀:D
30 楼
ueseu
2007-09-12
我也喜欢jquery
比如把checkbox当radio使用
$("#aa input:checkbox").click(function(){
if(this.checked)
$("#aa input:checkbox:checked").not(this).attr("checked", false);
});
比如把checkbox当radio使用
$("#aa input:checkbox").click(function(){
if(this.checked)
$("#aa input:checkbox:checked").not(this).attr("checked", false);
});
29 楼
agile_boy
2007-09-12
楼主分析的很中肯。
我个人也很喜欢mootools,一来小巧,比较OO,其次其提供的封装,我使用起来比较顺手,再就是对一些基本的特效提供了很好的封装。。总之你是扩展mootools也好,使用mootools开发也好,感觉比较舒服尤其习惯OO的开发者。
另外本人就在mootools的基础上开发了一个简单的网路拓扑管理的东东
https://sourceforge.net/projects/webtopology/
我个人也很喜欢mootools,一来小巧,比较OO,其次其提供的封装,我使用起来比较顺手,再就是对一些基本的特效提供了很好的封装。。总之你是扩展mootools也好,使用mootools开发也好,感觉比较舒服尤其习惯OO的开发者。
另外本人就在mootools的基础上开发了一个简单的网路拓扑管理的东东
https://sourceforge.net/projects/webtopology/
28 楼
sp42
2007-09-11
Skin is easy to be modiflied by CSS sprite as the way of ext did ....
27 楼
fins
2007-09-10
呵呵 不错 虽然我不认为比EXT默认风格好看
但是确实非常不像EXT了
其实EXT作者选择的默认风格遵循了一条很简单的原则:当你不能确定对方喜欢什么颜色时,那么你就选择蓝色吧 呵呵
蓝色+灰 + 白 +黑(再红绿橙黄做小小的点缀 ) 这样的搭配能符合绝大多数人的审美 呵呵
感觉这帖子跑题跑的比较厉害啊
从mootools跑到jquery 又跑到ext 现在又跑到美工了 哈哈
不过这样的跑题还是比较有意义的
但是确实非常不像EXT了
其实EXT作者选择的默认风格遵循了一条很简单的原则:当你不能确定对方喜欢什么颜色时,那么你就选择蓝色吧 呵呵
蓝色+灰 + 白 +黑(再红绿橙黄做小小的点缀 ) 这样的搭配能符合绝大多数人的审美 呵呵
感觉这帖子跑题跑的比较厉害啊
从mootools跑到jquery 又跑到ext 现在又跑到美工了 哈哈
不过这样的跑题还是比较有意义的
26 楼
sp42
2007-09-10
引用
我现在看那种蓝色调确实有些恶心了,可能你也会有那一天的!
把skin交给美工修改。
用EXT做的,但修改过SKIN,相信这样能够不会“一下子”看出是EXT做的:
25 楼
yxylwt
2007-09-10
佩服啊
24 楼
fyting
2007-09-10
jquery的代码量确实很少,呵呵献个丑。但是我觉得在工程中使用不太好,因为需要对CSS,xhtml有一定了解,看似简单的代码其实是通过与良好的HTML风格搭配实现的。写起来有一种极其流畅的感觉,不过读起来就不是那么一目了然,如果自己做东西,用这一套肯定很爽。
删除表格中选定了checkbox的行
类似WindowsXP侧边栏那种折叠/打开功能
HTML代码
删除表格中选定了checkbox的行
$("table#my_data_grid input:checked").parents("tr").remove();
类似WindowsXP侧边栏那种折叠/打开功能
$(document).ready(function(){ $(".fold .fold-button img").click(function(){ $(".expand",$(this).parents("div.fold")).toggle(); }); });
HTML代码
<fieldset> <legend><b>具有的角色</b></legend> <div class="fold"> <div class="fold-button"> <img src="../images/close.gif" /> </div> <div class="expand"> <ul> <li><a href="../role/角色信息.html">角色1</a></li> <li><a href="../role/角色信息.html">角色2</a></li> <li><a href="../role/角色信息.html">角色3</a></li> </ul> </div> </div> </fieldset> <fieldset> <legend><b>禁止的角色</b></legend> <div class="fold"> <div class="fold-button"> <img src="../images/close.gif" /> </div> <div class="expand"> <ul> <li><a href="../role/角色信息.html">角色8 </a></li> <li><a href="../role/角色信息.html">角色9 </a></li> <li><a href="../role/角色信息.html">角色10</a></li> </ul> </div> </div> </fieldset>
23 楼
fins
2007-09-10
radar 写道
我的出发点不是做项目和系统,从学习角度来看jQuery很好。
我们项目中用了yui,ext0.3,prototype.js,dwr
没有用jQuery,但我从研究学习角度很喜欢jQuery。
说说原因:
1、jQuery本身提供功能”不多“。其实很多了
2、需要plugin才能有很多功能。
3、最重要的。我手下人包括我驾驭不了jQuery。因为jQuery太灵活了,需要很多灵感创意才能用好它!
4、css,xpath 表达式很多人不熟悉。
jQuery的作者就在mozilla工作,对javascript的理解和使用很是到位。看代码就知道了!
预告一下,过几天我放一段jQuery代码解读!
我们项目中用了yui,ext0.3,prototype.js,dwr
没有用jQuery,但我从研究学习角度很喜欢jQuery。
说说原因:
1、jQuery本身提供功能”不多“。其实很多了
2、需要plugin才能有很多功能。
3、最重要的。我手下人包括我驾驭不了jQuery。因为jQuery太灵活了,需要很多灵感创意才能用好它!
4、css,xpath 表达式很多人不熟悉。
jQuery的作者就在mozilla工作,对javascript的理解和使用很是到位。看代码就知道了!
预告一下,过几天我放一段jQuery代码解读!
非常期待
22 楼
radar
2007-09-10
我的出发点不是做项目和系统,从学习角度来看jQuery很好。
我们项目中用了yui,ext0.3,prototype.js,dwr
没有用jQuery,但我从研究学习角度很喜欢jQuery。
说说原因:
1、jQuery本身提供功能”不多“。其实很多了
2、需要plugin才能有很多功能。
3、最重要的。我手下人包括我驾驭不了jQuery。因为jQuery太灵活了,需要很多灵感创意才能用好它!
4、css,xpath 表达式很多人不熟悉。
jQuery的作者就在mozilla工作,对javascript的理解和使用很是到位。看代码就知道了!
预告一下,过几天我放一段jQuery代码解读!
我们项目中用了yui,ext0.3,prototype.js,dwr
没有用jQuery,但我从研究学习角度很喜欢jQuery。
说说原因:
1、jQuery本身提供功能”不多“。其实很多了
2、需要plugin才能有很多功能。
3、最重要的。我手下人包括我驾驭不了jQuery。因为jQuery太灵活了,需要很多灵感创意才能用好它!
4、css,xpath 表达式很多人不熟悉。
jQuery的作者就在mozilla工作,对javascript的理解和使用很是到位。看代码就知道了!
预告一下,过几天我放一段jQuery代码解读!
21 楼
radar
2007-09-10
fins 写道
其实比较好的做法是 moo还是提供一个命名空间
例如 moo.Ajax moo.$extend.....
然后自己再做一个桥 把这些东西挂到window的根上.
例如
Ajax=moo.Ajax
$extend=moo.$extend...
当开发者不希望moo的东西都挂到window下时,可以不引入那个桥
例如 moo.Ajax moo.$extend.....
然后自己再做一个桥 把这些东西挂到window的根上.
例如
Ajax=moo.Ajax
$extend=moo.$extend...
当开发者不希望moo的东西都挂到window下时,可以不引入那个桥
yui作者当初面对这个问题时,和你是相同的答案。
20 楼
radar
2007-09-10
再说UI这块。我个人觉得这块对lib选择很重要。
你们也同意一个项目不用n个lib吧?
那如果你选择一个对UI支持不好的lib怎么办。例如,选择了prototype.js,你还要用它的很多扩展项目,当然你也不是很愿意。
mootools对UI支持的不错。yui-ext更是。
但我提个问题,你对UI的热衷,是你对xhtml+css的生熟造成的。你同意吗?
为什么我对yui-ext有上面的说法。
yui对UI的支持进度太慢了。jack等不及,自己写了一些UI,grid,tab,tree,dialog... ...。
为什么大家都选ext,是看中它的UI。基础lib呢?用的有多少?
我不是批判ext,我只是说出它的特点来,UI很好.
说实话,如果用yui-ext的项目多了,客户会有审美疲劳的。我现在看那种蓝色调确实有些恶心了,可能你也会有那一天的!
你们也同意一个项目不用n个lib吧?
那如果你选择一个对UI支持不好的lib怎么办。例如,选择了prototype.js,你还要用它的很多扩展项目,当然你也不是很愿意。
mootools对UI支持的不错。yui-ext更是。
但我提个问题,你对UI的热衷,是你对xhtml+css的生熟造成的。你同意吗?
为什么我对yui-ext有上面的说法。
yui对UI的支持进度太慢了。jack等不及,自己写了一些UI,grid,tab,tree,dialog... ...。
为什么大家都选ext,是看中它的UI。基础lib呢?用的有多少?
我不是批判ext,我只是说出它的特点来,UI很好.
说实话,如果用yui-ext的项目多了,客户会有审美疲劳的。我现在看那种蓝色调确实有些恶心了,可能你也会有那一天的!
19 楼
fins
2007-09-10
其实比较好的做法是 moo还是提供一个命名空间
例如 moo.Ajax moo.$extend.....
然后自己再做一个桥 把这些东西挂到window的根上.
例如
Ajax=moo.Ajax
$extend=moo.$extend...
当开发者不希望moo的东西都挂到window下时,可以不引入那个桥
例如 moo.Ajax moo.$extend.....
然后自己再做一个桥 把这些东西挂到window的根上.
例如
Ajax=moo.Ajax
$extend=moo.$extend...
当开发者不希望moo的东西都挂到window下时,可以不引入那个桥
18 楼
radar
2007-09-10
其实都怪我带着大家跑题了!
我的意思不是否定什么,推荐什么,我的出发点是从lib本身特性来讨论。指出某个lib可能有的问题是为了大家去避免它。例如:package的问题,用mootools开发的系统交付给用户肯定会没问题的,因为你既然使用的mootools肯定会避免这个问题,遇到变量重复,代码也不会测试通过。但指出来不一定要求作者改或和你争论。也只是提出问题罢了!
我的意思不是否定什么,推荐什么,我的出发点是从lib本身特性来讨论。指出某个lib可能有的问题是为了大家去避免它。例如:package的问题,用mootools开发的系统交付给用户肯定会没问题的,因为你既然使用的mootools肯定会避免这个问题,遇到变量重复,代码也不会测试通过。但指出来不一定要求作者改或和你争论。也只是提出问题罢了!
17 楼
fins
2007-09-10
呵呵
"jQuery可以一行代码搞掂很多问题" 还有他那句著名的 write less,do more. 似乎都在告诉人们 jquery能很简单的搞定很多事情.
但是问题是 jquery能, 别的js框架也能啊
其实对于绝大多数的常用的情形,单纯从使用角度来讲, 那些js框架都差不多. 要比拼的还是内在的代码设计 效率 以及一些辅助功能等.
在这些方面 jquery并没有绝对优势.
个人看法,而且我承认对jquery不了解.
当然我不是 "反jquery派",我只是找不到足够好的理由可以说服我自己去使用jquery 而放弃熟悉的prototype或者是放弃优秀的mootools.
"jQuery可以一行代码搞掂很多问题" 还有他那句著名的 write less,do more. 似乎都在告诉人们 jquery能很简单的搞定很多事情.
但是问题是 jquery能, 别的js框架也能啊
其实对于绝大多数的常用的情形,单纯从使用角度来讲, 那些js框架都差不多. 要比拼的还是内在的代码设计 效率 以及一些辅助功能等.
在这些方面 jquery并没有绝对优势.
个人看法,而且我承认对jquery不了解.
当然我不是 "反jquery派",我只是找不到足够好的理由可以说服我自己去使用jquery 而放弃熟悉的prototype或者是放弃优秀的mootools.
16 楼
sp42
2007-09-10
现在js也用上很多设计模式的理念了。
就把“搞掂很多问题”的问题交给“设计模式”吧
就把“搞掂很多问题”的问题交给“设计模式”吧
15 楼
sp42
2007-09-10
嘻嘻~问Jack~小弟也没怎么接触过jq
14 楼
fins
2007-09-10
"jQuery可以一行代码搞掂很多问题"
这个举两例呗
我没有认真研究过jquery 很多问题都理解的不到位 例如"jQuery可以一行代码搞掂很多问题"
具体怎么搞定呢? 我觉得 一行代码搞定很多问题 的关键不是代码怎么写 而要看 那很多问题是什么问题.
这个举两例呗
我没有认真研究过jquery 很多问题都理解的不到位 例如"jQuery可以一行代码搞掂很多问题"
具体怎么搞定呢? 我觉得 一行代码搞定很多问题 的关键不是代码怎么写 而要看 那很多问题是什么问题.
13 楼
sp42
2007-09-10
引用
ui在ajax lib选择时很重要。如果yui-ext的ui做了不好,估计根本没有现在的光景。借了yui的光,现在还自立门户。呵!
YUI-EXT的成功也就在ui上。你们认为呢?
YUI-EXT的成功也就在ui上。你们认为呢?
“jQuery最大的优点是易用。 jQuery可以一行代码搞掂很多问题。 YUI最大的优点是它被设计为面向对象的(object oriented)和组件的架构(component architecture)。”
《EXT设计模式初学习》
http://www.iteye.com/topic/121946
发表评论
-
HTML5 与 ”性工能“障碍
2012-12-13 18:08 9574HTML5 与 ”性工能“障碍 最近看了@王淮Harr ... -
聊聊 iOS 5 和 iOS 6 在HTML5 canvas渲染上的差异
2012-09-13 18:40 5991我录制了一段iphone4s 下 ios 5 和 ios 6 ... -
尝试挑战 running panda , HTML5的跑酷类游戏(开发中)
2011-08-01 00:02 6043我业余时间一直在尝试用HTML5 在ios平台上开发webga ... -
移动互联网 与 Web标准化技术
2011-07-14 19:54 3706移动互联网 与 Web标准化技术 ... -
为什么我喜欢safari 胜过chrome和ff?
2011-07-04 00:35 7830抛下IE不谈,目前在浏览器市场里 最受欢迎的莫过于chrome ... -
欢迎参加 "移动平台HTML5动画性能大赛"
2011-03-31 11:38 3805移动平台HTML5动画性能大赛 注 : 此页面为临时页面 待 ... -
为什么在今天,我要选择HTML5 (上) 【此文标题党,还是别看了】
2011-03-30 16:19 4035当初苹果禁止Flash登陆iOS设备时,曾经引起过一场“HTM ... -
HTML5游戏开发入门实例<脆弱的马里奥>
2011-03-14 20:10 10171HTML5游戏开发入门实例<脆弱的马里奥>: ht ... -
3月26号,北京,我将做一期HTML5游戏开发的技术讲座,欢迎参加.
2011-03-11 11:57 21543月26号,我将去北京做一次"html5游戏开发入门 ... -
w3ctech 2011 - 拥抱HTML5 技术大会即将召开,欢迎报名
2011-03-03 23:46 1657w3ctech 2011 - 拥抱HTML5 技术会议将于4月 ... -
[新增视频]我在<当HTML5来敲门>技术沙龙上做的一个关于HTML5游戏开发的分享
2011-02-27 11:03 1938我在2月26号的<当HTML5来敲门>技术沙龙上做 ... -
说说 iOS safari在retina屏下显示图像的原理
2011-02-24 17:05 8220我在 简析 HTML5 canvas在retina屏(视网膜屏 ... -
一个 HTML5 编写的 简谱播放程序
2011-02-17 15:14 3857一个 HTML5 编写的 简谱播放程序 : http:// ... -
试用了一下 HP touchPad ,有点小失望.
2011-02-16 12:57 2822我手里的这台机器是 工程样机. 从样机来看, 这台平板并不出色 ... -
简析 HTML5 canvas在retina屏(视网膜屏幕,如iphone4)设备上的优化(更新原理)
2011-02-11 04:01 9585随着iphone4 的推出, retina ... -
[更新,bug修复了]chrome开启canvas 2D GPU加速后, clearRect的一个严重bug.
2011-01-24 15:54 9846最新版的 chromium. 已经修复了这个bug 经过进一 ... -
我也来重复造个轮子吧 ,发布一个利用原型,在Javascript中实现类机制的简单框架: GT-Class
2011-01-07 11:23 3452我也来重复造个轮子吧 ,发布一个利用prototype(原型, ... -
关于"GPU加速"的简单问答.
2011-01-05 22:34 2748如今使用GPU来代替CPU进 ... -
求助:用这样的方式写Kissy组件,可行吗?(Kissy推荐的方式是怎样的?)
2010-12-29 09:43 2040看了Kissy自带组件的代码,又看了你在D2上的PPT , 看 ... -
简单聊一聊百度的开源JS库:Tangram
2010-12-24 12:20 9532简单聊一聊百度的开源JS库:Tangram 最近百度开源了 ...
相关推荐
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计 也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等。 官方网站:...
总的来说,Moo.fx作为MooTools的一部分,为开发者提供了强大的动画解决方案,而Prototype.lite.js则提供了原型库的核心功能。两者各有特色,可以根据项目需求灵活选择或组合使用。了解和掌握这些工具,能够显著提升...
JavaScript是Web开发中不可或缺的一部分,它为网页添加了动态交互性。然而,原生JavaScript的API庞大且不统一,为了简化开发,社区创造了一系列的框架,其中jQuery、MooTools和Prototype是三个非常著名的JavaScript...
《MooTools:JavaScript框架的探索与应用》 MooTools是一款强大的JavaScript库,它以其模块化、面向对象的设计理念,为前端开发提供了丰富的工具和功能。本篇将围绕"Mootools demo打包_mootools.svn.js_中文手册....
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比 Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,...
Prototype.js文件是这个库的核心,它包含了大量的实用函数和扩展,使得JavaScript编程更加高效且易于维护。 Prototype库的核心理念是扩展JavaScript的基本类型和对象,以便在进行DOM操作、事件处理、Ajax通信等方面...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Prototype引入了`Object.extend`和`Function.prototype.bind`等方法,增强了JavaScript的面向对象编程能力。同时,它还提供了一种称为“原型链”的继承机制,允许对象间共享方法和属性。 #### 1.3 AJAX与效果 ...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
- **与其他库的关系**:MooTools与jQuery、Prototype等其他JavaScript库在功能上有许多相似之处,但MooTools更注重代码的组织结构和可维护性。 - **互操作性**:MooTools允许在项目中与其他库共存,通过NoConflict...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。总之,Mootools...
Mootools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大,比如增加了动画特效、拖放操作等等。
在JavaScript的世界里,Prototype 1.6 和 MooTools 1.2.3 是两种非常流行的JavaScript库,它们都为开发者提供了丰富的工具集,简化了DOM操作、事件处理、动画效果等任务。这篇博客将深入探讨这两个库在实际工作中的...
标题中的"jquery,mootools,ext3,prototype对class选择符速度比较"指的是对四个流行的JavaScript库——jQuery、MooTools、EXT3和Prototype——在处理CSS类选择器时的性能进行的比较测试。这些库在Web开发中广泛用于...
Prototype、jQuery和MooTools是三个非常流行的JavaScript库,它们都旨在简化JavaScript编程,提高开发效率。下面将对这三个库进行详细介绍。 Prototype是最早的JavaScript库之一,由Sam Stephenson于2005年创建。它...