MooTools

Software
(Learn how and when to remove this message)
MooTools
Developer(s)The MooTools Dev Team
Initial releaseSeptember 8, 2006; 17 years ago (2006-09-08)[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]

Overview

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),[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:

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({

    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. ^ Original release announcement
  2. ^ "Release 1.6.0 · mootools/Mootools-core". GitHub.
  3. ^ "MooTools". mootools.net.
  4. ^ "MooTools at FOSDEM slides" (PDF). Archived from the original (PDF) on 2011-07-23. Retrieved 2010-02-17.
  5. ^ The Official MooTools Website
  6. ^ MooTools' Core Download Page
  7. ^ MooTools Class Object Archived 2008-08-31 at the Wayback Machine
  8. ^ MooTools' Effects (FX) Class Archived 2008-06-23 at the Wayback Machine
  9. ^ MooTools' Element Class - A comprehensive list of Element manipulation methods. Archived 2008-09-05 at the Wayback Machine
  10. ^ A Better Way to Use Elements
  11. ^ MooTools Core Builder
  12. ^ MooTools More Builder
  13. ^ a b 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.
  14. ^ 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.
  15. ^ 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.
  16. ^ 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.)
  17. ^ MooTools Core Archived 2009-10-02 at the Wayback Machine
  18. ^ MooTools More Archived 2009-10-04 at the Wayback Machine
  19. ^ MooTools Class Archived 2008-08-31 at the Wayback Machine
  20. ^ MooTools Element Archived 2008-09-05 at the Wayback Machine
  21. ^ MooTools Fx Class Archived 2008-06-23 at the Wayback Machine
  22. ^ MooTools Request Class Archived 2008-07-30 at the Wayback Machine
  23. ^ 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
  24. ^ MooTools lists its compatibility on its homepage.
  25. ^ jQuery versus Mootools

Further reading

External links


  • v
  • t
  • e
.NET
C++
ColdFusion
Common Lisp
Haskell
  • Servant
  • Snap
  • Yesod
Java
JavaScript
Perl
PHP
Python
Ruby
Rust
  • Rocket
Scala
Smalltalk
Other languages
  • v
  • t
  • e
Low-level
On AmigaOS
  • Intuition
On Classic Mac OS, macOS
On Windows
On Unix,
under X11
On BeOS, Haiku
Cross-platform
CLI
C
Java
On Android
CLI
  • Xamarin.Android
High-level, platform-specific
On AmigaOS
On Classic Mac OS, macOS
Object Pascal
Objective-C, Swift
C++
CLI
On Windows
CLI
C++
Object Pascal
On Unix,
under X11
On Android
High-level, cross-platform
C
C++
Objective-C
CLI
Adobe Flash
Go
  • Fyne
Haskell
Java
JavaScript
Common Lisp
Lua
  • IUP
Pascal
Object Pascal
Perl
PHP
Python
Ruby
Tcl
  • Tcl/Tk
XML
shell
  • Newt
  • CDK
  • Dialog
Dart
  • Flutter
  • v
  • t
  • e
Dialects
Engines
(comparison)
Frameworks
Client-side
Server-side
Multiple
  • Cappuccino
Libraries
People
Other