Leyendo el blog de Andres veo una interesante traduccion que menciona 10 punto bastante interesantes de porque MooTools[web] es tan famoso, la lista original fue realizada por Christoph , por mi lado desde el comienzo he utilizado prototype[web] sin embargo ultimamente he estado tentado a probar esta libreria ya que he utilizado algunos scripts bastante interesantes y funcionan muy bien y son bastante potentes.

1. No son solo efectos

Mucha gente cree que MooTools es únicamente para hacer animaciones, efectos a todo elemento disponible en la página. Y MooTools tiene un montón de cosas más que hacen de este framework una maravilla, drag&grop, manipulación del DOM, Extensión de funciones, Ajax, manipulación de cookies, assets, …

var droppables = $$('div.dropper');  var container = $('containment');  new Drag.Move('dragger', {'container': container, 'droppables': droppables});    droppables.addEvent('over', function(){  	this.setStyle('background-color', '#000');  });    droppables.addEvent('leave', function(){  	this.setStyle('background-color', '#ff3300');  });    droppables.addEvent('drop', function(){  	this.setStyle('background-color', '#face8f');  });

2. Es modular

MooTools no es un solo un framework, es completamente modular y puedes personalizar no que necesitas descargar para ahorrarte peso de javascript. Esto quizas el usuario final no entienda o no le llame la atención, pero para un desarrollador es algo realmente digno de alabar ya que es realmente complicado conseguir un alto de grado de modularidad.

3. Se lee como un libro

Leer el código de MooTools es como leer un libro, la versión con código incluido es realmente explicita y simple de entender.

/*  Function: $type  	Returns the type of object that matches the element passed in.    Arguments:  	obj - the object to inspect.    Example:  	>var myString = 'hello';  	>$type(myString); //returns "string"    Returns:  	'element' - if obj is a DOM element node  	'textnode' - if obj is a DOM text node  	'whitespace' - if obj is a DOM whitespace node  	'arguments' - if obj is an arguments object  	'object' - if obj is an object  	'string' - if obj is a string  	'number' - if obj is a number  	'boolean' - if obj is a boolean  	'function' - if obj is a function  	'regexp' - if obj is a regular expression  	'class' - if obj is a Class. (created with new Class, or the extend of another class).  	'collection' - if obj is a native htmlelements collection, such as childNodes, getElementsByTagName .. etc.  	false - (boolean) if the object is not defined or none of the above.  */    function $type(obj){ ....}

4. La comunidad alrededor ayuda

Esto ocurre con todas las comunidades, así que no me parece un punto muy importante. Pero el foro de MooTools no para de recibir preguntas y recibir respuestas.

Board statistics      Total number of registered users: 5056      Total number of topics: 5275      Total number of posts: 26414

5. Te ayuda a crear código orientado a objetos

MooTools te permite desarrollar con un código orientado a objetos, esto debido a la capacidad que tiene de extender los objetos nativos del lenguaje.

$('loadJson').addEvent('click', function(e) {  	e = new Event(e).stop();  	var url = 'http://demos.mootools.net/demos/Json.Remote/data.js';  	var request = new Json.Remote(url, {  		onComplete: function(jsonObj) {  			addImages(jsonObj.previews);  		}  	}).send();  });

6. Esto es todo acerca de $type

El nativo typeof() de Javascript devuelve cosas similares a “String“, “Number“,… pero con MooTools $type nos lleva a otro nivel.

var Monkey = new Class({  	initialize: function(){  		this.fruits = [];  	},  	giveFruit: function(fruit){  		//The Monkey only loves fruits!  		if($type(fruit)=='fruit')  			this.fruits.push(fruit);  		return this;  	}  });  var Banana = new Class({  	$family: 'fruit'  });    new Monkey().giveFruit(new Banana());

7. La creación de elementos es muy fácil

Basta ver el código para ver lo fácil que es crear un elemento con MooTools.

new Element('div', {  	'id': 'myDiv',  	'class': 'someClass',  	'styles': {  		'width': '0px',  		'height': '0px'  	},  	'events': {  		'click': function(){  			alert(this.getText()); //Alerts Hello  		}  	}  }).setText('Hello').injectInside(document.body).effects().start({  	'width': [0, 200],  	'height': [0, 100]  });

8. Gestores de eventos

MooTools incorpora su propia gestión de eventos. Puedes gestionar los eventos de todo: Clases, elementos, …

La opción más simple, la de añadir una gestión de eventos sobre un elemento sería algo tan simple como esto:

Element.Events.extend({  	'keyenter': {  		type: 'keyup',  		map: function(e){  			return e.key=='enter';  		}  	}  });    $('myInput').addEvent('keyenter', function(){  	doSomething...  	e.stop(); //Paramos la ejecución del proceso.  });

9 . Haz que se mueva

Hacer que los elementos de tu página sean dragables (movibles) es tan fácil como esto:

$('myElement').makeDraggable();

10. Hay plugins y extensiones mires donde mires.

En este mismo blog he comentado muchas de las nuevas extensiones y nuevas funcionalidades que MooTools nos ofrece, y gracias a la comunidad de detrás esto irá creciendo y aportando nuevas y valiosas aplicaciones, que harán las delicias de todos.

via Anieto2k