Contenido

10 razones por las que MooTools es fantástico

3 Sep

+ 17

Si te preguntas, cuales son los motivos por los que hemos probado MooTools lo adoramos, solo tienes que leerlos de la boca de un adicto a MooTools. Christoph es un de esos adictos que además hacen listas enumerando las virtudes de MooTools. Traduzco sus motivos con una traducción poco rigurosa de las mias.

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.

  • La verdad que Mootools, bajo mi punto de vista, tiene muchas más funcionalidades que jQuery, entre otros, y simplifica bastante las cosas a la hora de trabajar en Javascript.

    Yo acabo de entrar como quien dice, en la industria, y de momento el que más he tocado es jQuery. A mí particularmente me gusta mucho, me parece incluso más sencillo que Mootools, pero se queda bastante corto en algunos puntos. Incluso, en mi caso, me he «traído» de Mootools alguna que otra cosilla para jQuery, haciendo mis propios plugins (que ya subiré a mi blog cuando tenga tiempo jeje).

    A ver si los chicos de jQuery se ponen un poco las pilas, que trabajar con el DOM y con CSS de forma sencilla ya lo han conseguido. Ahora, a por más.

  • Y pronto se viene una nueva versión con mas sorpresitas, estuve mirando la versión en desarrollo y algunos ejemplos y ya dan ganas de que salga.

    Mas allá de todos los puntos que resaltas, me gusto mucho la manera en la que esta organizado su código(comparen con jquery), me parece muy sencillo de comprender por lo que no me asustaría tener que meterle mano.

    Y por agregar nomas, buscando en google ya se encuentra casi toda la documentación en español.

  • personalmente prefiero jquery, no está tanto enfocado a efectos pero tiene lo suyo.
    como sea ambas son muy buenas, la que si se está quedando MUY atrás es prototype

  • Jquery, todos lo adoran por algo, sus plugins, sin ellos seria otro framework mas.

    Mootools

    Es el mejor en la prueba de selectores.
    http://mootools.net/slickspeed/

    La programción secuencial es cosa de el pasado, programacion orientada a objetos es lo de hoy.

    FAEL «no está tanto enfocado a efectos»

    Andrés responde : «Mucha gente cree que MooTools es únicamente para hacer animaciones»

  • La diferencia entre MooTools y JQuery es la filosofía, JQuery ultimamente está vendiendo increibles mejoras en velocidad.
    Mientras MooTools se preocupa más de que el framework sea comprensible, mantenible y extensible.

    Se nota cual es mi debilidad 🙂 Gran post.

  • Mi experiencia después de usarlo durante más de un año (desde que existía moo.fx) es que ademàs de todo esto resulta terriblemente adictivo y escribir javascript es más fácil con mootools.

  • Imzyos: «La programción secuencial es cosa de el pasado, programacion orientada a objetos es lo de hoy.»

    Perdona que te lo diga, pero llevo oyendo esta canción desde hace diez años. Hace tiempo aprendí que OOP no es mas que otro estilo y poco más. Sigue siendo realidad la máxima de «mola lo que te acomoda».

    Sobre cual es la mejor libreria de JS la realidad también es la misma. La mayoría de las «razones» existen para otras librerías y al final la que prefieres es a la que te acostumbras. Entre las tres o cuatro más importantes no hay ninguna que sea una porquería. Todas son relativamente equivalentes con ventajas especificas (y desventajas especificas).

    Por ejemplo, yo uso jquery para cosas mias pero uso prototype para cosas de la oficina porque el tamaño me trae sin cuidado. Sobre la disponibilidad de «adiciones» hoy mismo he utilizado dos para prototype que no conocia de antes (tablekit y validation de dexagogo) y dos que ya usaba de antes (tabs y datepicker).

    Que hay otras soluciones por ahi? si, claro. Pero en la oficina ya estamos acostumbrados a prototype y sus capacidades y, sinceramente, no podria importarme menos cuanto tarda cada uno en procesar selectores cuando el universo completo de esta aplicacion esta controlado (en hardware, software y acceso).

    Recuerdo algo que ya hemos comentado antes en la entrada sobre opera: A todos conviene que haya mas de una libreria, de la misma forma que nos conviene que haya mas de un navegador y de una plataforma informatica. La variedad obliga a la calidad. La monogamia solo engorda.

  • Jejeje, si, si lo que te acomoda siempre es lo mejor, pero, un codigo secuencial es tal cual, copias y pegas, la idea de POO es hacer cdigo reutilizable

    http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

  • ImZyos: Muy violento que asumas que opino de OOP sin saber lo que es, eh? 🙂

    La idea de OOP es ofrecer un paradigma diferente, que habrá a quien le acomode y a quien no.

    OOP no es nuevo, tiene más de 40 años de usarse.

    El sistema del Mac original está basado en un demo SmallTalk, cuya filosofía es OOP al 100%. Incluso la mentalidad del OOP se intentó traducir a un interfaz gráfico con el Lisa y luego el Macintosh original.

    Hoy en día OOP no se usa más que otras metodologías. Es una preferencia (que puede o no ir ligada a una preferencia de lenguaje de programación) y como tal la usas si te acomoda (o te obligan) y no si no. No es la «verdad universal».

    «jejeje»

  • Hola:

    Necesito un rich textarea, negritas, cursivas, etc. lo básico. Sabes de alguna que pueda usar? si es hecho con mootool mejor.

    saludos

  • Buenas mario, pasaté por aqui, encontrarás lo que estás buscando.

  • no quieor revivir el post, pero empeze con jquery y no me acostumbro, es facil pero raro.
    Encontre mootools y es otra cosa, rapido simple, y se parece mucho a la api de google maps en su filosofia de manejo.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.