MooTools
Lua error in package.lua at line 80: module 'strict' not found.
Lua error in package.lua at line 80: module 'strict' not found.
File:Mootools.png | |
Developer(s) | The MooTools Dev Team |
---|---|
Stable release | 1.5.2 / September 13, 2015[1] |
Written in | JavaScript |
Type | Ajax framework / JavaScript Framework |
License | MIT License |
Website | mootools |
MooTools (My Object-Oriented Tools)[2] is a lightweight, object-oriented JavaScript framework. It is released under the free, open-source MIT License.[3] It is used on more than 4% of all websites, and is one of the most popular JavaScript libraries.[4]
Contents
History
Valerio Proietti first authored the framework and released it in September 2006[5] taking as his inspiration Prototype and Dean Edward's base2. MooTools originated from Moo.fx, a popular plug-in Proietti produced for Prototype in October 2005,[6] which is still maintained and used.
Whereas Prototype extended—prototyped—many of JavaScript's native String, Array, and Function objects with additional methods, Proietti desired a framework that (at the time)[7] further extended the native Element object as well[5] to offer greater control of the Document Object Model (DOM).[8]
Components
MooTools includes a number of components, but not all need to be loaded for each application. Some of the component categories are:
- Core: A collection of utility functions that all the other components require.[9]
- More: An official collection of add-ons that extend the Core and provide enhanced functionality.[10]
- Class: The base library for Class object instantiation.[11]
- Natives: A collection of JavaScript Native Object enhancements. The Natives add functionality, compatibility, and new methods that simplify coding.
- Element: Contains a large number of enhancements and compatibility standardization to the HTML Element object.[12]
- Fx: An advanced effects-API to animate page elements.[13]
- Request: Includes XHR interface, Cookie, JSON, and HTML retrieval-specific tools for developers to exploit.[14]
- Window: Provides a cross-browser interface to client-specific information, such as the dimensions of the window.[15]
Browser compatibility
MooTools is compatible and tested with:[16]
- Safari 3+
- Internet Explorer 6+
- Mozilla Firefox 2+
- Opera 9+
- Chrome 4+
Benefits
MooTools provides the user with a number of advantages over native JavaScript. These include:
- An extensible and modular framework allowing developers to choose their own customized combination of components.[17]
- MooTools follows object-oriented practices and the DRY principle.[18]
- An advanced effects component, with optimized transitions such as easing equations used by many Flash developers.[19]
- Enhancements to the DOM, enabling developers to easily add, modify, select, and delete DOM elements. Storing and retrieving information with Element storage is also supported.[20]
The framework includes built-in functions for manipulation of CSS, DOM elements, native JavaScript objects, Ajax requests, DOM effects, and more. MooTools also provides a detailed, coherent application programming interface (API)[21] as well as a custom downloads module allowing developers to download only the modules and dependencies they need for a particular app.[22][23]
Emphasis on modularity and reusability
Every JavaScript framework has its philosophy, and MooTools is interested in taking full advantage of the flexibility and power of JavaScript in a way that emphasizes greater modularity and code reuse. MooTools accomplishes these goals in a way that is intuitive to a developer coming from a class-based inheritance language like Java with the MooTools Class object.
Class is an object of key/value pairs that can contain either properties or methods (functions). Class is effortlessly mixed and extended with other Class instantiations allowing for the greatest focus of MooTools: Code reuse achieved through maximizing the power of JavaScript's prototypical inheritance, but in a Class object syntax more familiar to classical inheritance models.[24]
Object-oriented programming
MooTools contains a robust Class creation and inheritance system that resembles most classically based Object-oriented programming languages. For example, the following is MooTools' equivalent of the examples in Wikipedia's polymorphism page:
var Animal = new Class({
initialize: function(name) {
this.name = name;
}
});
var Cat = new Class({
Extends: Animal,
talk: function() {
return 'Meow!';
}
});
var Dog = new Class({
Extends: Animal,
talk: function() {
return 'Arf! Arf';
}
});
var animals = {
a: new Cat('Missy'),
b: new Cat('Mr. Bojangles'),
c: new Dog('Lassie')
};
Object.each(animals, function(animal) {
alert(animal.name + ': ' + animal.talk());
});
// alerts the following:
//
// Missy: Meow!
// Mr. Bojangles: Meow!
// Lassie: Arf! Arf!
See also
- Moo.fx
- Moobile.js
- Ajax framework
- Rich Internet application
- Web 2.0
- Comparison of JavaScript frameworks
- XMLHttpRequest
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
Further reading
- Lua error in package.lua at line 80: module 'strict' not found.
- Lua error in package.lua at line 80: module 'strict' not found.
- Lua error in package.lua at line 80: module 'strict' not found.
External links
- ↑ https://github.com/mootools/mootools-core/releases/tag/1.5.2
- ↑ MooTools at FOSDEM slides
- ↑ The Official MooTools Website
- ↑ Usage of JavaScript libraries for websites
- ↑ 5.0 5.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Version 1.6.1 of Prototype includes "an element metadata storage system." Prototype 1.6.1 released by Sam Stephenson, written September 1st, 2009. Retrieved March 21, 2010.
- ↑ Note that MooTools does not extend the native Object—all JavaScript primitives like String and Function inherit from it—but instead provides a convenient Hash for the purpose: Think of it like having a set of utility methods that allow for nearly effortless object manipulation of regular JavaScript objects that are otherwise unaffected by the process. (Lua error in package.lua at line 80: module 'strict' not found.)
- ↑ MooTools Core
- ↑ MooTools More
- ↑ MooTools Class
- ↑ MooTools Element
- ↑ MooTools Fx Class
- ↑ MooTools Request Class
- ↑ In addition to getting the size for any Element, you can easily get the dimensions of the window
- ↑ MooTools lists its compatibility on its homepage.
- ↑ MooTools' Core Download Page
- ↑ MooTools Class Object
- ↑ MooTools' Effects (FX) Class
- ↑ MooTools' Element Class - A comprehensive list of Element manipulation methods.
- ↑ ,A Better Way to Use Elements
- ↑ MooTools Core Builder
- ↑ MooTools More Builder
- ↑ jQuery versus Mootools