`
man4j
  • 浏览: 5271 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

(一) mootools介绍

阅读更多

目录:

介绍mootools

mootools v.s. jquery

mootoolsHello World

核心部分的模块划分,

Core 核心模块

Types 类型模块

Browser 浏览器模块

Class 类模块

Slick 选择器模块

Element 元素模块

Fx 动画模块

Request 请求模块

Utilities 辅助工具模块

总结

 

介绍mootools

mootools v.s. jquery

第一个学习的js框架jquery,不可否认jquery是轻量易用的javascript框架,对于它的作者John Resig我也很关注。jquery上手相当容易,各种插件也特别丰富,对于开发中小型项目来说足矣,但是我经常遇到一个问题,同个项目大家都用jquery开发,没有特别的标准规定要怎么使用,所以各用各的,久而久之,各种插件扩展使得代码很混乱,维护起来很不愉快,但是也没遇到很难修改的情况,总感觉就是你一脚我一脚,漏了一脚补一脚。

我第二个接触的js框架就是mootools,自从使用mootools,了解了它的核心源码,真的彻底喜欢上了,个人感觉它的OO做的很好,绝不是为了OO而OO,在使用过程中总会偶尔感叹,太好了,设计得太好了。它的模块分得非常清晰,公共的方法抽的很好,原型继承模拟面向对象继承也很漂亮。因为它的整个设计思想就是面向对象,所以某些api对于简单的应用就显得不那么方便。同时,它的最大的缺点就是扩展(污染)了原生的对象,可我觉得这不是他的缺点,在我使用过程中,我可以完全忽略它,甚至觉得mootools就是javascript。

对比两者,讨论几点常用的功能:

  • 在dom操作方面,两者都非常易用,两者都支持各种选择器,mootools从1.3开始大大提高了dom查找的效率,一点也不输jquery,两者上手容易度差不多
  • 在ajax方面,jquery的api比起mootools显得简单很多,不过mootools封装的Rquest对象也会让你使用的很舒服,所以在这方面jquery上手比较容易
  • 在工具方法方面,jquery的工具方法我常用的包括判断类型的、遍历的、扩展merge的,而mootools在工具方法就让人赏心悦目,因为它扩展了原生对象(当然有人觉得这样很不安全),所以他的每个类型的数据本身就支持很多方法,特别是数组的工具方法有很多,而且熟悉了之后使用起来很方便。mootools其实把很多工具方法都放在对应模块上了,它的工具方法是“污染型”的,但我个人很喜欢。
  • 在插件支持方面,jquery的插件满天飞,mootools官方提供了一些扩展包,功能当然没法跟jquery插件比,但是最近使用mootools的人多了很多,各种UI、插件都跟上,而且质量都很高。
  • 在文档方面,jquey的文档做得越来越好,官方上的指南和api使用介绍,分析都很到位;mootools在这方面就很逊,但是他们官方提到说最近会把文档作为一个重要任务,我相信随着mootools被越来越多用户了解,他会做的非常好,后劲十足。


对比以上几点,两者都非常优秀,但我个人喜欢mootools,最新的mootools的核心部分的版本是1.4.5,最新的jquery发布版本1.7.2。

 

最近我花了两天细读了mootools的core部分的源码,学了收获了很多,近期打算写一些总结mootools的文章,下面演示一个hello world的简单例子。

 

mootools的Hello World

1. 下载mootools核心部分的源码源码 http://mootools.net/download/get/mootools-core-1.4.5-full-nocompat.js

2. 准备脚本 hello.js

 

var sayHelloWorld = function() {
     alert('Hello World!');
};

//在window上注册domready事件处理函数 (dom加载解析完触发该事件)
window.addEvent('domready', function() {
	//执行上面定义的sayHelloWorld函数
	sayHelloWorld();
});
 

 

3.准备html

<script type="text/javascript" src="../lib/mootools-core-1.4.5-full-nocompat.js" ></script>
<script type="text/javascript" src="hello.js"></script>

 

4.效果

 

 

5.总结

hello.js的代码等同于jquery中

 

$(function(){

sayHelloWorld();

});

 

实现一个简单的helloworld比起使用jquery多一点点代码

 

核心部分的模块划分,

mootool-core 提供了九大模块, 下面列举各个模块以及它的主要功能并列出某些api,有个简单的认识则可

 

Core 核心模块

core包含了一些最普遍,会被其他各个模块用到的方法,例如:

 

typeOf (obj)

返回表示obj的类型的字符串,如 'element', 'textnode', 'array', 'object' 等

instanceOf(item, object) 

判断某个变量或值是不是某个类型的

implement(name, method)

某个类型原型扩展method方法,然后该类型的所有变量就有了该方法

extend(name, method)

某个类型表面继承method方法,则该类型就具有该静态方法

 

Types 类型模块

mootools对应原生类型定义了一下几种类型, 还有其他几种类型

 

其中六种为:

Array, String, Number, Function, Object, Event

对该类型的某个具值分别为:

[1,2],  'hello',  12,  function(){},  {name:'peter'}, Event类型的值

 

每个类型都像java一样,自身具有一些方法,只要是该类型的变量就能调用

 

Array

用于遍历 forEach(arr, function(value, index){})

添加元素 append(el)

判断包含 contains(el)

...

String

测试正则 test(regex)

去两边空 trim()

转化整数 toInt()

转为驼峰字符串 camelCase()

...

Number

限制在该范围 limit(mix, max)

四舍五入 round()

以自己为次数执行某个方法 times(function)

...

Function

尝试遍历执行知道有一个成功返回 attemp(functionArray)

原型拷贝 implement(key, val)

周期执行 periodical(period, bind, args)

...

Object

遍历字面对象 each(hash)

融合字面对象 merge(hash, hash)

获得键集合 keys()

获得值集合 values()

...

 

Event

停止传递时间 stopPropagation()

禁止默认表现 preventDefault()

...

Boolean 、 RegExp 、 Date、 Element、 Elements ...

 

Browser 浏览器模块

定义了很多静态变量直接获取浏览器信息

Browser.name

Browser.version

...

 

Class 类模块

这部分定义了mootools的类框架,非常重要的部分,来段模糊感性的代码

 

function println(msg){
	console ? console.info(msg) : alert(msg);
}

var Animal = new Class({
	categy : '动物', 
	name : '无名',
	initialize : function(categy){
		this.categy = categy;
		println(this.name + ' 进行 Animal初始化完成');
		this.born();
	},
	born : function(){
		println(this.name + ' born');
	},
	eat : function(){
		println('Animal Eat');
	}
});

var Runner = new Class({
	run : function(){
		println(this.categy + '  ' + this.name + ' is running');
	}
});

var Eatter = new Class({
	eat : function(){
		println(this.categy + '  ' + this.name + ' is eatting ' + this.food);
	}
});

var Dog = new Class({
	name : null,
	food : null,
	Extends : Animal, 
	Implements : [Runner, Eatter],
	initialize : function(categy, name, food){
		this.name = name;
		this.food = food;
		this.parent(categy);//很神奇的一句代码 super(categy)有没有
		println(this.name + ' 进行 Dog初始化完成');
	}
});

var myDog = new Dog('哺乳类动物', '旺财', '骨头');

myDog.eat();

myDog.run();

 打印结果:

 

旺财 进行 Animal初始化完成 tmp.js:2
旺财 born tmp.js:2
旺财 进行 Dog初始化完成 tmp.js:2
哺乳类动物 旺财 is eatting 骨头 tmp.js:2
哺乳类动物 旺财 is running tmp.js:2


Slick 选择器模块

主要提供了解析器Parser 和 查找器Finder

Paser 用于解析选择器,解析结果为一个对象

Finder 则能根据这个对象找到上下文中某些元素

 

Element 元素模块

页面中的每一节点都是Element类型的

 

Element部分 :提供了操作一个节点的一组方法

Element.Style部分 : 提供针对元素样式操作

Element.Event : 提供事件的包装,元素绑定事件机制

Element.Delegation : 提供事件委托机制, 即把一个(动态)子元素上的事件处理绑定委托到父容器上

Element.Dimensions : 提供元素的一些top, left, width, height, offset 等信息

 

Fx 动画模块

Fx 是 effect 这个英文单词的读音简写

 

Fx :提供了一套动画框架,定义动画执行机制, 组织启动,暂停,恢复,帧执行等

Fx.CSS : 针对动画中样式相关处理,包括如何解析样式,如果计算样式

Fx.Tween: (tweening表示,通过某个样式的初始值到目标值实现某个一个画面通过另一个画面)

   提供具体实现某个样式动画

Fx.Morph:   (morphing表示通过多个样式实现从一画面变到另一个画面)

   提供了同时多个样式的动画

 

Request 请求模块

提供了基础的请求类型

还提供了特定于响应内容为html代码的请求类型

也提供了特定于响应内容为json字符串的请求类型

 

Utilities 公共程序模块

提供了 cookie读写, json转换, domready机制, 添加flash 四个方面的工具

 

总结

分别简述了对jquery和mootools的使用感受,强调了mootools中受人喜欢的几点;接着提供了一个简单的hello例子,提到如何了注册事件处理函数;最后列举了mootools-core-1.4.5.js 中划分的各大模块以及各大模块中的各个部分,并列举每部分的一些功能,在讲述Class模块的时候提供了一个具体例子,该例子体现了mootools强大的OO思想。

 

通过该文希望你能对mootools有个很好的感性认识。接下来一个月我会对各个模块举一些应用例子,以及分析某些源码片段,然后介绍一些实用插件。

  • 大小: 11.7 KB
分享到:
评论

相关推荐

    mootools详细教程chm

    这份PDF手册是MooTools 1.4版本的中文版,全面介绍了MooTools的各种功能和用法,包括核心概念、API文档、实例教程等。对于中文使用者来说,这是一个极好的学习资源,可以系统地学习和掌握MooTools。 学习MooTools...

    Mootools 1.2教程 类(一)

    本教程将介绍如何创建和使用MooTools中的类。 首先,一个类是一个容器,它存储了变量(也称为属性)和函数(也称为方法),这些组合在一起构成了一个特定功能的单元。在MooTools中,我们使用`new Class`来定义一个...

    MooTools1.4中文PDF手册+MooTools-Core-1.5.1.js

    MooTools是一款强大的JavaScript库,它提供了一套优雅的面向对象的编程接口和实用的工具集,便于开发者创建高效、可维护的Web应用程序。MooTools 1.4中文PDF手册与MooTools-Core-1.5.1.js是学习和使用MooTools的核心...

    mootools 1.2 中文文档

    这份MooTools 1.2的中文文档,详细介绍了以上各方面的内容,包括API使用示例和注意事项,帮助开发者快速上手并熟练掌握MooTools。对于那些觉得Prototype过于陈旧的开发者来说,MooTools 1.2是一个理想的替代选择,它...

    mootools_1.2的中文文档

    - **Docs**:这个目录很可能包含了MooTools 1.2的所有中文文档,包括介绍、API参考、教程和示例,是学习MooTools的核心资料。 - **assets**:这个目录通常包含文档中引用的图片、CSS样式和JavaScript文件,它们为...

    mootools框架入门教程

    mootools框架是一个功能强大且灵活的JavaScript框架,它提供了许多实用的方法来简化DOM操作和ajax开发。下面将对mootools框架的Element篇进行详细的介绍。 Element篇 Element篇是mootools框架中最基础的部分,它...

    mootools详细教程

    在本文档中,我们将重点介绍MooTools中的核心组件——Element模块,以及如何利用它来进行DOM操作。 1. **Element方法完全解析** - `Element`类是MooTools的核心之一,它允许开发者以更加面向对象的方式处理DOM元素...

    前端项目-mootools.zip

    通过以上介绍,我们可以看到MooTools作为一款成熟的JavaScript框架,为前端开发者提供了高效、灵活的工具,帮助构建高质量的Web应用。尽管在当前的前端环境中,Vue、React、Angular等现代框架占据主导地位,但...

    一周学会Mootools 1.4中文教程序章

    教程计划重点讲解Mootools Core的核心功能,同时对部分常用插件进行简要介绍。对于希望快速上手Mootools的开发者来说,通过本教程的学习,预计在一周之内便能够掌握基本的Mootools编程技巧,并开始编写自己的...

    JSP基于mootools的flash多文件上传组件

    本文将详细介绍一个基于JSP、MooTools和Flash的多文件无刷新上传组件的实现原理和使用方法。 **一、JSP简介** JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML代码中嵌入Java代码,实现...

    Mootools1.3 core、more API文档

    下面将详细介绍MooTools 1.3 Core和More API中的关键知识点。 ### 1. **MooTools Core** #### 1.1 **类与对象** MooTools的核心特性之一是其强大的类系统。它基于原型继承,允许开发者创建复杂和层次化的对象结构...

    Mootools多选插件

    ### Mootools框架介绍 Mootools是一个轻量级但功能强大的JavaScript库,类似于jQuery和Prototype。它的核心设计理念是模块化,通过“类”的概念来组织代码,使得代码更加可维护和易于扩展。Mootools提供了丰富的API...

    mootools1.2中文API

    MooTools是一个轻量级的JavaScript库,设计用于简化网页开发中的对象导向编程。MooTools 1.2中文API是一份重要的参考资料,为开发者提供了详细的文档和教程,帮助他们理解和使用这个框架。这份API文档涵盖了MooTools...

    一周学会Mootools 1.4中文教程(4)类型

    本节教程集中于Mootools支持的几种基本数据类型,包括String、Number、Array、Object和Json等,并详细介绍了这些类型下的扩展方法。 ### String类型 字符串是任何编程语言中最基础的数据类型之一,Mootools为字符...

    mootools-中文教程

    这部分可能介绍了Mootools的一些高级用法或特殊功能,帮助开发者更好地理解和运用这个框架。 #### 十二、实践案例 通过具体的应用示例来展示如何在实际项目中应用 Mootools,这对于初学者来说是非常宝贵的学习资源...

    MooTools Essentials

    #### 一、MooTools框架介绍 - **定义与背景**:MooTools是一种流行的JavaScript库,用于简化Web应用程序的开发过程。该框架首次发布于2006年,由Valerio Proietti创建。其目标是为开发者提供一种更加简洁、优雅的...

Global site tag (gtag.js) - Google Analytics