Si ya te has decidido a utilizar un framework de JavaScript para realizar tus proyectos, es momento de escoger el que mejor se adapte a tus necesidades. Mientras realizas esta búsqueda podrás notar que existen muchas alternativas, desde frameworks muy completos y robustos hasta miniframeworks que te ayudarán a solucionar tareas sencillas o repetitivas.
La razón por la que existen tantos tipos de estructuras se debe al enfoque que cada quien le desea dar a sus desarrollos, hay quienes prefieren enfocarse en el uso de objetos de JavaScript mientra que otros simplemente utilizan animaciones, algunos les gusta modificar mientras que otros simplemente extienden.
Al escoger un framework no significa que tienes que dar ese enfoque a tu proyecto en su totalidad, puedes tomar las partes buenas o las que únicamente se adapten a lo que buscas y utilizarlas, puedes llegar a utilizar dos o más frameworks al mismo tiempo, e incluso queda la posibilidad de desarrollar tu propio framework, pero eso demanda y consume tiempo, tiempo que quizás no tengas a disposición.
Mootools contra el resto
Es difícil definir cual framework es el mejor de todos, la verdad que no te puede ir mal con ninguno, todos son buenos y cumplen con las funciones que todo framework debe tener. Sin embargo, debe quedar en claro que no es lo mismo desarrollar en Prototype que en MooTools y mucho menos que en jQuery, cada uno tiene sus características muy bien definidas y su manera de desarrollo, el código de un framework puede llegar a resultar bastante diferente o extraño si no estas acostumbrado a manejar uno.
Existen muchas opciones para escoger en la actualidad, entre los más populares encontramos a jQuery, Prototype, MooTools, JavaScriptMVC, Dojo y Spry, pero la verdad es que podrías extender mucho más la lista, esta diversidad ha venido a complicar un poco el momento de decidirnos por alguno, y es que la diferencia puede ser muy leve y todas representan buenas opciones.
La diferencia se puede encontrar marcada en el enfoque que cada framework le da a la manera de abordar problemas, algunos incluso tiene filosofías que marcan sus estilos de desarrollo.
En el caso de MooTools su estilo fue definido en base al desarrollo con Prototype, como ya explicamos antes MooTools nace siendo una extensión de este, por lo que es muy marcada la similitud en filosofías. Ambos frameworks buscan la alternación de los prototipos de elementos nativos de JavaScript, como el caso de String, Array, Function, entre otros, pero siempre evitando modificar al elemento Object.
MooTools es un framework recomendado para utilizarse en los proyectos donde tengas un buen control sobre el código, si en tu caso estás utilizando o deseas modificar código JavaScript de terceros, es posible que la mejor opción para ti sea un framework como jQuery, que además de permitirte esto, utilizan “namespaces” como identificadores.
También hay que resaltar que MooTools es difícil de combinar con otros frameworks, sobre todo si los otros modifican los objetos nativos, ya que como mencionamos MooTools trata de evitar siempre esto.
Una característica que presenta MooTools al no utilizar namespacing es que resulta más rápido, ya que su código es menos enredoso y detallado, aunque esta diferencia de velocidad generalmente no podrá ser apreciada al menos que estemos interactuando con muchos objetos. Aunque debemos dejar en claro que el namespacing no es nada malo, simplemente son características de cada framework.
Otra ventaja de la modificación de los elementos nativos es que puedes añadirles métodos y ampliar su funcionalidad, lo cual lo convierte en un buen modelo y una manera elegante de agregar métodos a JavaScript. La desventaja es que si definimos un método con MooTools y lo agregamos a la funcionalidad, pero otro script o alguna otra parte del código también lo define este se sobrescribirá y podrá causar problemas.
MooTools trata de crear un modelo de herencia que se apegue a lo tradicional de JavaScript, además da todas las facilidades para efectuar la reutilización de código y diseñar de manera modular. Este framework crea una estructura que permite tomar ventaja del modelo de herencia de prototipos de JavaScript, esto facilita el desarrollo para todos aquellos que están relacionados con lenguajes como Java.
Al decir que MooTools está diseñado de forma modular, nos referimos a que no es necesario cargar todo para poder hacer trabajar nuestra página, si únicamente necesitamos utilizar Ajax para transferencia de información, entonces podemos cargar únicamente dicho modulo, por lo tanto utilizaremos menos código, y menos tiempo de descarga.
Ventajas y desventajas de MooTools
Cuando decimos “dejar de cambiar los prototypes nativos”, no significa que nunca se va a modificar un método existente con MooTools, esto se puede dar, pero lo más probable es que ya no sean muchas las ocasiones. Incluso, con este nuevo enfoque el framework se podría llegar a utilizar como una librería microjs, donde solamente los componentes preferidos por el desarrollador sean los que se apliquen.
Hasta ahora todo suena muy bien y el manejo modular parece ser un gran avance, pero existe una parte poco placentera. Al no ser capaz de modificar Element.prototype, por ejemplo, significa que el uso de un código como el siguiente muy probablemente llegue a su fin:
document.id("elemId").addEvent("click", function(e) { this.addClass("abierto"); var divsConImagenes = this.getElements("li").filter(function(el) { return !!el.getElement('img'); }); });
Aunque es muy probable que el equipo de desarrollo integre una función que actue como wrapper, tal como se hace en jQuery, que permita realizar parte de los que obtenemos con el código anterior, document.id() dejará de devolver el elemento en sí y nos regresará una función. El código modificado podrá parecer el mismo, pero la manera en que se interpreta será diferente. Por ejemplo, this.addClass(“abierto”); no funcionará en absoluto, en su lugar, muy probablemente tendrás que usar $(this), document.id(this) o hacerlo a traǘes de los nativos Type o Slick.
Conclusión
Como se puede ver MooTools respeta la esencia de lo que es JavaScript, no es un framework que trate de hacer cambiar al lenguaje haciéndolo más similar a otro como CSS, representa una forma elegante de extender la funcionalidad y su funcionamiento modular permite reducir el código utilizado.
Su similitud con Prototype pueden hacer dudar entre si debemos utilizar este o Mootools, la diferencia más marcada que yo veo entre estos dos frameworks, se encuentra en la creación de animaciones. Si tu deseas un framework que tenga mejores rutinas de animación, así como plugins para arrastrar y solar u ordenar elementos, debes inclinarte por escoger MooTools.
Aunado a las características mencionadas, MooTools tiene el respaldo de “script.aculo.us” una pequeña librería que nos permite añadir animaciones predefinidas que nos harán la vida y el desarrollo más sencillo.
Para terminar debo reiterar que la elección de cualquiera de estos framework deberá basarse en las características que estamos buscando con nuestro proyecto. Elija el que más se adapte a sus necesidades, sus principios de diseño y que ofrezca la mejor combinación entre flexibilidad y funcionalidad.
modificado el 10 marzo, 2018 19:23
Ver comentarios (1)
Creo que el título del post no se corresponde mucho con el contenido, ya que esperaba más bien una comparativa entre las virtudes de cada uno de los frameworks, sin embargo, lo único que se realiza es una descripción de las bondades de Mootools.
Aunque visto lo recogido en el post creo que voy a darle una oportunidad a YUI, tenía dudas entre YUI, Mootools y ExtJS. Pero por el momento voy a darle una oportunidad a YUI, ya que ofrece lo mismo que Mootools y algunas opciones más, como su propio framework MVC, CSS y unit tests.
Prefiero tener todo junto a tener que aprender diferentes frameworks. Además he visto que YUI está muy bien documentada (www.yuilibrary.com) algo que es muy importante a la hora de iniciarse, aunque la mayoría de la documentación está en inglés también he encontrado algunos recursos en español (www.yuiblog.es) cosa que es difícil con algunas librerías. No siendo este el caso de Mootools que también tiene un curso muy completo en castellano en (www.desarrolloweb.com).
Bueno espero haber aportado algo más a esta comparativa de frameworks, aunque siento no haberme decantado por Mootools como primera opción, pero no descarto aprenderlo más adelante cuando ya haya jugado algo con YUI.
Saludos.