Yo empece a programar en javascript usando "de golpe" Mootools, eso ya hace varios años, por alguna razón se me hacia todo un mundo entender un document.getElementbyId() jaj..
La gran fortaleza de Mootools radica en la posibilidad de reutilizar código, (mas alla de los componentes UI), implementa la POO basada en clases sobre JS, (JS soporta POO, pero basado en prototipos) , tiene mecanismos de herencia, y polimorfismo . En mootools los elementos NATIVOS de JS (DOM) son Objetos o algo asi como Clases cuya funcionalidad puedes extender facilmente por ejemplo:
Código Javascript :
Element.implement({
centrar: function(){
var dims=window.getSize(); // Aqui por ejemplo Mootools "agrego" el metodo getSize al objeto Window, y si a ti se te antoja podrias extenderlo con un simple window.implement({ .. , puedes tambien implementar "Function" en realidad cualquier cosa..
var coors=this.getCoordinates();
this.setStyles({
'top' : ((dims.y-coors.height)/2)+'px',
'left' : ((dims.x-coors.width)/2)+'px',
'position' : 'fixed' // fixed o absolute
});
}
});
entonces si tienes un div llamado midiv, bastaria con hacer
Código Javascript :
$('midiv').centrar();
para centrarlo en la pantalla, o lo mismo con un input:
Código Javascript :
$('miinput').centrar();
...Que en Jquery se programa con menos lineas de código que Mootools, nada mas cierto u.U, PERO esto no siempre es bueno, ademas en lo personal no me gusta para nada este tipo de sentencias:
Código Javascript :
// EN JQUERY
a)
$("#lista1 li:last").hover(function() {
$(this).addClass("activo");
},
function() {
$(this).removeClass("activo");
});
// o
b)
$('#elparent').find('ul').hide().end().find('li').click(function() {
$(this).next().slideToggle();
});
y aunq las entiendo porque ya tengo tiempito programando en Js y eh visto Jquery, no creo que alguien con poca o ninguna experiencia en Jquery, a primera vista entienda que hace cada una de ellas ..
Código Javascript :
// EN MOOTOOLS
a)
$$('#lista1 li:last-child').addEvents({
mouseenter: function() {
this.addClass('activo');
},
mouseleave: function() {
this.removeClass('activo');
}
});
b)
var div= $('div');
div.getElements('ul').hide();
div.getElements('li').addEvent('click', function() {
this.getNext().slide('toggle');
});
En Mootools es mucho mas claro, ademas si quisieras puedes implementar el encadenamiento de Jquery en Mootools , para el primer ejemplo:
Código Javascript :
Element.implement({
hover : function(enter,leave){ // pasas como parámetro las 2 funciones.
return this.addEvents({ mouseenter : enter, mouseleave : leave });
}
});
//y entonces tu puedes usar Mootools como en Jquery:
$$('#lista1 li:last').hover(function(){ // hover es el método que implementamos a nuestro objeto Element
this.addClass('activo');
} // hasta aquí la primera función de los parámetros,
function(){
this.removeClass('activo');
}) // y luego la 2da;
en pocas palabras, puedes hacer que Mootools funcione como Jquery, mas no lo contrario, porque MT te deja hacerlo a tu manera =).
Mootools es mas legible y ordenado que Jquery, ( su mismo core es muy legible =) ) lo que a pesar lo que dice su descripción "para programadores intermedios, o avanzados" es mucho mas fácil de entender y aprender que Jquery, y cuando digo "APRENDER", me refiero a "APRENDER Y DESARROLLAR".. la mayoría de personas que eh escuchado preferir a Jquery, en su vida han programado un solo Plugin desde cero.. (esto es mal acostumbrarse u.U, en trabajos serios necesitas saber mas q un ctrl + c y ctrl + v) simplemente jalaron los archivos js y colocaron el constructor del objeto o widget y listo !, esto hace que Jquery sea atractivo y saque de apuros rápidamente cierto u.U (por el soporte de la comunidad y la cantidad de plugins/ widgets disponibles para descargar) y es justamente por lo cual pienso que Jquery (q obviamente es muy bueno =) ) esta mas orientado o mejor enfocado al desarrollo de websites y de web apps (RIAS) pequeñas, mas se hace tedioso y complicado desarrollar RIA'S (medianas o grandes) sobre Jquery, te comienzas enredar entre tantas sentencias encadenadas, si no estas acostumbrado a comentar, considérate MUERTO jajaja, ademas la modularidad es difícil del lograr al ser Jquery una extensión de DOM esta orientado a los elementos del DOM, mas no a la integridad de las funcionalidades de un sistema especifico. Mootools te permite hacer SOFTWARE modular, limpio, bonito .. puedes tener un aplicación desarrollada en PHP con Codeigniter en MVC y con tu front end desarrollado tbm en MVC con Mootools fácilmente =).
En conclusión, Jquery o Mootools para el desarrollo de websites y apps pequeñas, pero Mootools es mucho mas recomendable para desarrollar RIA's.