MooTools provides the user with a number of options beyond native JavaScript. These include:
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),7 as well as a custom downloads module allowing developers to download only the modules and dependencies they need for a particular app.89
Valerio Proietti first authored the framework and released it in September 200610 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.11 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)12 further extended the native Element object as well13 to offer greater control of the Document Object Model (DOM).14
MooTools includes a number of components, but not all need to be loaded for each application. Some of the component categories are:
MooTools is compatible and tested with:22
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.23
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:
"MooTools at FOSDEM slides" (PDF). Archived from the original (PDF) on 2011-07-23. Retrieved 2010-02-17. https://web.archive.org/web/20110723055127/http://cpojer.net/Talks/MooToolsFOSDEM.pdf ↩
The Official MooTools Website http://mootools.net ↩
MooTools' Core Download Page http://mootools.net/core ↩
MooTools Class Object Archived 2008-08-31 at the Wayback Machine http://docs.mootools.net/Class/Class ↩
MooTools' Effects (FX) Class Archived 2008-06-23 at the Wayback Machine http://docs.mootools.net/Fx/Fx ↩
MooTools' Element Class - A comprehensive list of Element manipulation methods. Archived 2008-09-05 at the Wayback Machine http://docs.mootools.net/Element/Element ↩
A Better Way to Use Elements http://mootools.net/blog/2010/03/19/a-better-way-to-use-elements/ ↩
MooTools Core Builder http://mootools.net/core ↩
MooTools More Builder http://mootools.net/more ↩
Newton, Aaron (September 18, 2008). MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development (1st ed.). Apress. pp. xvi. ISBN 978-1-4302-0983-6. 978-1-4302-0983-6 ↩
Newton, Aaron (September 18, 2008). MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development (1st ed.). Apress. pp. xv. ISBN 978-1-4302-0983-6. 978-1-4302-0983-6 ↩
Version 1.6.1 of Prototype includes "an element metadata storage system." Prototype 1.6.1 released Archived 2010-03-01 at archive.today by Sam Stephenson, written September 1st, 2009. Retrieved March 21, 2010. http://www.prototypejs.org/2009/9/1/prototype-1-6-1-released ↩
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. (Newton, Aaron (September 18, 2008). MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development (1st ed.). Apress. pp. xvi. ISBN 978-1-4302-0983-6.) 978-1-4302-0983-6 ↩
MooTools Core Archived 2009-10-02 at the Wayback Machine http://mootools.net/docs/core ↩
MooTools More Archived 2009-10-04 at the Wayback Machine http://mootools.net/docs/more ↩
MooTools Class Archived 2008-08-31 at the Wayback Machine http://docs.mootools.net/Class/Class#Class ↩
MooTools Element Archived 2008-09-05 at the Wayback Machine http://docs.mootools.net/Element/Element ↩
MooTools Fx Class Archived 2008-06-23 at the Wayback Machine http://docs.mootools.net/Fx/Fx ↩
MooTools Request Class Archived 2008-07-30 at the Wayback Machine http://docs.mootools.net/Request/Request ↩
In addition to getting the size for any Element, you can easily get the dimensions of the window Archived 2008-09-11 at the Wayback Machine http://docs.mootools.net/Element/Element.Dimensions#Element:getSize ↩
MooTools lists its compatibility on its homepage. http://mootools.net/ ↩
jQuery versus Mootools http://jqueryvsmootools.com/ ↩