This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article may contain excessive or inappropriate references to self-published sources. Please help improve it by removing references to unreliable sources where they are used inappropriately. (November 2008) (Learn how and when to remove this message) This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: "MooTools" – news · newspapers · books · scholar · JSTOR (November 2008) (Learn how and when to remove this message) This article provides insufficient context for those unfamiliar with the subject. Please help improve the article by providing more context for the reader. (October 2009) (Learn how and when to remove this message) (Learn how and when to remove this message)
MooTools
Developer(s)The MooTools Dev Team
Initial releaseMarch 7, 2007; 17 years ago (2007-03-07)[1]
Stable release
1.6.0 / January 14, 2016; 8 years ago (2016-01-14)[2]
Repositoryhttps://github.com/mootools/mootools-core
Written inJavaScript
TypeAjax framework / JavaScript Framework
LicenseMIT License[3]
Websitemootools.net

MooTools (My Object-Oriented Tools)[4] is a lightweight, object-oriented JavaScript framework. It is released under the free, open-source MIT License.[5]

History

Valerio Proietti first authored the framework and released it in September 2006[6] 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.[7] which is still maintained and used. 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)[8] further extended the native Element object as well[6] to offer greater control of the Document Object Model (DOM).[9]

Components

MooTools includes a number of components, but not all need to be loaded for each application. Some of the component categories are:

Browser compatibility

MooTools is compatible and tested with:[17]

Benefits

MooTools provides the user with a number of advantages over 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)[22] as well as a custom downloads module allowing developers to download only the modules and dependencies they need for a particular app.[23][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 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.[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({

    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

References

  1. ^ Earliest known release
  2. ^ https://github.com/mootools/mootools-core/releases/tag/1.6.0
  3. ^ "MooTools". mootools.net.
  4. ^ MooTools at FOSDEM slides
  5. ^ The Official MooTools Website
  6. ^ a b Newton, Aaron (September 18, 2008). MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development (1st ed.). Apress. pp. xvi. ISBN 1-4302-0983-6.
  7. ^ Newton, Aaron (September 18, 2008). MooTools Essentials: The Official MooTools Reference for JavaScript and Ajax Development (1st ed.). Apress. pp. xv. ISBN 1-4302-0983-6.
  8. ^ 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.
  9. ^ 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 1-4302-0983-6.)
  10. ^ MooTools Core Archived 2009-10-02 at the Wayback Machine
  11. ^ MooTools More Archived 2009-10-04 at the Wayback Machine
  12. ^ MooTools Class Archived 2008-08-31 at the Wayback Machine
  13. ^ MooTools Element Archived 2008-09-05 at the Wayback Machine
  14. ^ MooTools Fx Class Archived 2008-06-23 at the Wayback Machine
  15. ^ MooTools Request Class Archived 2008-07-30 at the Wayback Machine
  16. ^ 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
  17. ^ MooTools lists its compatibility on its homepage.
  18. ^ MooTools' Core Download Page
  19. ^ MooTools Class Object Archived 2008-08-31 at the Wayback Machine
  20. ^ MooTools' Effects (FX) Class Archived 2008-06-23 at the Wayback Machine
  21. ^ MooTools' Element Class - A comprehensive list of Element manipulation methods. Archived 2008-09-05 at the Wayback Machine
  22. ^ ,A Better Way to Use Elements
  23. ^ MooTools Core Builder
  24. ^ MooTools More Builder
  25. ^ jQuery versus Mootools

Further reading