1 概述
1.1 框架名称
MooTools是个精简、模块化同时也对象导向的JavaScript框架,设计给中等与进阶的JavaScript开发员使用。透过其优美、详细而条理分明的API,可以让您写出强大、富有弹性且跨浏览器的程序。——MooTools官网
1.2 背景
MooTools是Valerio Proietti首先提出,他以Prototype和Dean Edward的BASE2为灵感,并在2006年9月发布。MooTools起源于Moo.fx —— 一个流行的插件,由Proietti在2005年10月为Prototype开发,现在仍在维护和使用中。
针对原型扩展——提供了许多JavaScript的原生字符串,数组,和拥有附加方法的函数对象,当时的Proietti想要一个框架,从而进一步扩展原生Element对象,以提供更强的文档对象模型(DOM)控制。
1.3 设计思想
MooTools的设计思想是面向对象的设计思想。MooTools包含很多组件,官方网站MooTools支持你下提取自己需要的独立代码而不需要全部下载, 同时可以选择压缩的级别。这些组件分别是:
Core:常用函数集合,其它组件必须的;
Class:MoolTools类的实例化的基础库;
Natives:原始类的扩展;
Element:包含一些对html element及其扩展;
Fx:一个动态元素高级效果的API;
Requests:为开发者提供xhttpRequest cookie json html特定检索工具;
Window:提供一个获取client信息的跨浏览器接口。
1.4 其他
MooTools 1.4.5是目前最新版本,文档完整,有活跃的社区,还有一个IRC。MooTools官方维护了一个blog,供开发者讨论。
MooTools从Prototype.js中汲取了许多有益的设计理念,语法也和其极其类似。但它提供的功能要比Prototype.js多,整体设计也比Prototype.js要相对完善,功能更强大。
MooTools在复杂项目有着很大的优势,下面介绍MooTools在大型项目上的优势点:
更多的对象方法扩展:虽然说,MooTools框架直接在Array, Function对象上做方法扩展有可能会造成语后来JavaScript规范出现重复或冲突的情况,但是,这些对象方法的扩展对我们的开发节约了很多的功夫。MooTools框架在各类JavaScript类型对象上做了新方法的扩展,以便我们可以更轻松更简单地应付各类复杂应用和众多数据处理。这显然与jQuery重在DOM的设计理念不同了。
据处理利器之Hash概念:Hash,俗称哈希,是jQuery中没有而MooTools中有且很赞的一个玩意。Hash是一个重新实现的Object({}), 被专门用于数据的存取,和原来的Object({})的区别是: 它不会在进行存值,取值或迭代的时候处理对象的prototype中的内容。在MooTools中,Hash对象和Array对象(json基本构成啦)联合使用,再庞杂的数据,都能轻松应付。
面向对象的设计思想:MooTools是一款面向对象的设计思想框架。讲求继承,模块化与重用性。虽然,MooTools这种强制面向对象风格的设计有些淡化了JavaScript语言本身的一些优美特性。但是,当项目庞大,JavaScript代码量巨大的时候,这种面向对象的设计理念还是相当受用的。项目越大,偶们所节省的代码量就越多。
Cookie的读写:MooTools框架自带Cookie读写的方法,支持指定域和路径。而jQuery框架中要想实现Cookie的读写,需要借助于专门的cookie插件。
swf文件的载入:MooTools框架自带Swiff类,可以实现页面上flash文件的载入,而不需要求助google的swfobject方法。
更全面的动画效果:MooTools框架的动画效果实际上要比jQuery的强些,但是,不足在于其使用的API要比jQuery逊色。说MooTools框架动画要比jQuery强,其中之一就是MooTools动画内置了贝塞尔运动曲线关键字。如:’linear’, ‘quad:in’, ‘back:in’, ‘bounce:out’, ‘elastic:out’, ‘sine:in:out’等等(下图为Fx.Transitions方法之expo),而jQuery实现类似缓动效果,还需要借助ease插件。
form表单序列化提交:MooTools自身携带HTML表单控件元素数据序列化方法,表单元素自身携带了ajax提交方法,而jQuery框架要实现类似的功能,还需要专门的表单序列化插件。
MooTools虽然也能用在中小项目上,但是,其潜力的发挥要在大型、需要编写大量JavaScript的应用的网站项目上。这就是MooTools的优势。
MooTools的劣势同样也是由于设计思想的不同引起的:
- 修改了低层的一些类:如Array, String等
- 在DOM和CSS Selector上不如jQuery强大
- JS框架中侵入性最大。