MooTools explained
MooTools (My Object-Oriented Tools)[4] is a lightweight, object-oriented JavaScript framework. It is released under the free, open-source MIT License.[5]
Overview
MooTools provides the user with a number of options beyond native JavaScript. These include:
- An extensible and modular framework allowing developers to choose their own customized combination of components.[6]
- MooTools follows object-oriented practices and the DRY principle.[7]
- An advanced effects component, with optimized transitions such as easing equations used by many Flash developers.[8]
- 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.[9]
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),[10] as well as a custom downloads module allowing developers to download only the modules and dependencies they need for a particular app.[11] [12]
History
Valerio Proietti first authored the framework and released it in September 2006[13] taking as his inspiration Prototype and Dean Edward's base2. MooTools originated from Moo.fx, a popular JavaScript effects library released in October 2005 by Valerio Proietti as an add-on to the Prototype Javascript Framework.[14] It can be used as a lighter alternative to script.aculo.us or other, bigger libraries. It provides simple, basic effects, and guarantees a small library size.
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)[15] further extended the native Element object as well[13] to offer greater control of the Document Object Model (DOM).[16]
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.[17]
- More: An official collection of add-ons that extend the Core and provide enhanced functionality.[18]
- Class: The base library for Class object instantiation.[19]
- 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.[20]
- Fx: An advanced effects-API to animate page elements.[21]
- Request: Includes XHR interface, Cookie, JSON, and HTML retrieval-specific tools for developers to exploit.[22]
- Window: Provides a cross-browser interface to client-specific information, such as the dimensions of the window.[23]
Browser compatibility
MooTools is compatible and tested with:[24]
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 intuitively 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 containing either properties or methods (functions). Class is effortlessly mixed and extended with other Class instantiations allowing for the most excellent 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.[25]
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;
var Cat = new Class;
var Dog = new Class;
var animals = ;
Object.each(animals, function(animal)); // alerts the following://// Missy: Meow!// Mr. Bojangles: Meow!// Lassie: Arf! Arf!
See also
Further reading
Notes and References
- https://web.archive.org/web/20061206015242/http://mad4milk.net/entry/mootools-released Original release announcement
- Web site: Release 1.6.0 · mootools/Mootools-core. GitHub.
- Web site: MooTools. mootools.net.
- Web site: MooTools at FOSDEM slides . 2010-02-17 . https://web.archive.org/web/20110723055127/http://cpojer.net/Talks/MooToolsFOSDEM.pdf . 2011-07-23 . dead .
- http://mootools.net The Official MooTools Website
- http://mootools.net/core MooTools' Core Download Page
- http://docs.mootools.net/Class/Class MooTools Class Object
- http://docs.mootools.net/Fx/Fx MooTools' Effects (FX) Class
- http://docs.mootools.net/Element/Element MooTools' Element Class - A comprehensive list of Element manipulation methods.
- http://mootools.net/blog/2010/03/19/a-better-way-to-use-elements/ A Better Way to Use Elements
- http://mootools.net/core MooTools Core Builder
- http://mootools.net/more MooTools More Builder
- Book: Aaron. Newton. MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development. Apress. 1st. xvi. September 18, 2008. 978-1-4302-0983-6.
- Book: Aaron. Newton. MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development. Apress. 1st. xv. September 18, 2008. 978-1-4302-0983-6.
- 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. (Book: Aaron. Newton. MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development. Apress. 1st. xvi. September 18, 2008. 978-1-4302-0983-6.)
- http://mootools.net/docs/core MooTools Core
- http://mootools.net/docs/more MooTools More
- http://docs.mootools.net/Class/Class#Class MooTools Class
- http://docs.mootools.net/Element/Element MooTools Element
- http://docs.mootools.net/Fx/Fx MooTools Fx Class
- http://docs.mootools.net/Request/Request MooTools Request Class
- http://docs.mootools.net/Element/Element.Dimensions#Element:getSize In addition to getting the size for any Element, you can easily get the dimensions of the window
- http://mootools.net/ MooTools lists its compatibility on its homepage.
- http://jqueryvsmootools.com/ jQuery versus Mootools