blog
frameworks Javascript Opinión

Frameworks MV* de JavaScript

Seguramente que el Framework MV* de JavaScript que utilizas, porque lo usas, ¿verdad?, fue el primero que probaste, te fue muy bien y ya no has tenido ganas de cambiar. La verdad es que hay otras opciones en la red y que por sus características, algunas pueden ser más válidas que otras, según qué proyecto y qué problemas hay que solucionar en dicho proyecto.

Aunque muchos de estos frameworks puedan parecerse en algunos conceptos, vistas, eventos, modelos de datos y enrutamiento, de hecho unos piden prestado conceptos de otros, no tienen necesariamente los mismos objetivos y principios. Una buena decisión puede tener un impacto en términos de mantenimiento de código y, naturalmente, en el tiempo de entrega.

Entre muchas de estas opciones que ayudan a estructurar tus aplicaciones web y te pueden ayudar a mantener el código organizado, se destacan AngularJS, Backbone.js y Ember.js.

Otro framework para crear interfaces de usuarios que también quiere ganar su terreno en la comunidad es React. “React fue desarrollado, para crear aplicaciones grandes que cambian en el tiempo.” React es una colaboración de Facebook & Instagram. Pero me centraré en los tres primeros, entre otras cosas por su madurez.

Comunidad

A la hora de escoger uno de los frameworks es importante tener  en cuenta que son herramientas Open Source. Estarás de acuerdo que la Comunidad es un factor importante a considerar. ¿Qué valoración tiene el framework en GitHub? ¿Que tal las preguntas en StackOverflow? Atención que más preguntas en Overflow, no significa necesariamente mejor framework, o más utilizado. Puede ser también el framework más difícil de aprender, o con más errores, o bugs, etc…

Tamaño del Framework

El rendimiento del sitio web es algo ya innegociable. El tamaño del framework y el tiempo de carga son obviamente importantes. Backbone.js por ejemplo, aunque su archivo sea pequeño, necesita Underscore.js y jQuery para funcionar.

Plantillas

Backbone.js te da la libertad para usar la plantilla que quieras.Una vez que necesita Underscore para funcionar, el motor de búsqueda escogido por defecto es el motor de Underscore.js. Pero, que por su sencillez será necesario añadir JavaScript al código. AngularJS tiene un motor de plantilla incluido, que es básicamente HTML con expresiones asociadas a un modelo, o vista, las “binding expressions”. Ember también tiene incluido un motor de plantilla, Handlebars que es una extensión del motor de plantilla Mustache.

AngularJS

AngularJS nace en 2009 y actualmente es un proyecto Open Source gracias al patrocinio de Google y se destaca por su vinculación de datos en dos vías.

Pros

Gracias a la vinculación de datos en dos vías se puede reducir la cantidad de código boilerplate. Lo que antes escribias en cuatro lineas de código en jQuery, con AngularJS lo puedes hacer en dos líneas, por ejemplo.

Además de ayudarte a categorizar y organizar tus aplicaciones, Angular también está escrito “con la testabilidad en mente”.

Cons

Los componentes reutilizables de AngularJS, los “directives” y su API de Directives permiten entre otras cosas, que puedas crear tu propia semántica y sintaxis de HTML reutilizable, pero su complexidad puede confundir a los desarrolladores. Lo mismo puede pasar con las Expresiones de Angular, ya que estas permiten introducir lógica, cálculos y operaciones. Páginas con muchos elementos interactivos pueden ser realmente lentas.

Ember.js

Aunque indirectamente, Ember empieza su vida el 2007 como framework, pero gana identidad propia en 2011 a través de Yehuda Katz. Entre otros proyectos es utilizada por Yahoo!.

Pros

Ember se integra muy bien con Ruby-on-Rails y además de cualquier API de RESTful que siga determinadas convenciones. De hecho Ember.js prefiere la Convención de nomenclaturas sobre la Configuración.

A través de conceptos como The Run Loop, o otras proriedades relacionadas con las cachés, Ember pretende que el rendimiento y la velocidad sean fundamentales en su framework.

Cons

Hace muy poco tiempo, la API de Ember tenía código y ejemplos que ya no funcionaban, lo que podría generar confución a los desarrolladores que se querían iniciar en este framework. Por otro lado, Handlebars crea demasiadas etiquetas <script> en tu código, lo que no será muy optimo a nivel de rendimiento y puede generar conflictos entre otros scritps de JavaScript e incluso el CSS de la página.

Backbone.js

Backbone.js es un framework de MVC ligero que existe desde el 2010 y fue adoptado, por ejemplo, por Pinterest.

Pros

Backbone es ligero y rápido, con buena documentación, código sencillo y buena  curva de aprendizaje. Se puede utilizar como base para proyectos propios. Hay en la red otros proyectos basados en Backbone.  Thorax o Chaplin son algunos de ellos.

Cons

Por un lado Backbone depende de Underscorejs para funcionar, por otro lado por no tener una estructura obliga al desarrollador a pesquisar y a tener que aprovechar las herramientas básicas para crear estructuras. Esto puede ser un poco "antí-framework", ya que nos hace invertir tiempo en cosas para que la mayoría de los frameworks ya estan pensados para hacer.O me equivoco?

Una vez más, tu decidirás cual de estos 3 es el mejor framework. A lo mejor utilizas otro que por sus caracteristicas se adaptan mejor a tus proyectos, pero si todavía tienes que escoger uno tendrás que tener en cuenta detalles como:

  •  Convención sobre la configuración - menos código con más características. ¿Qué pasará con el siguiente programador?
  •  El código es transpararente y fácil de leer, aprender? Cual es el impacto en el rendimieto?
  •  Tiene el framework un sistema de enrutamiento integrado, ¿o soporta enrutamiento utilizando algún add-on?
  •  El sistema de plantillas é integrado o necesita terceros?
  •  El mismo framework depende de biblioteca de terceros, ¿puede entrar en conflictos con otras bibliotecas?
  •  Es fácil realizar pruebas dentro del framework, ¿o será necesario aprender una nueva API?
  •  Se integra bien con otras API? ¿Que pasa con el AJAX?
  •  ¿Tiene buena Documentación?
  •  ¿Es compatible con los navegadores modernos? Generalmente la mayoría de los frameworks MV* lo son.

Fuentes:

Javascript para Robots y Node.js

Artículo anterior

Alfred: mejorar la productividad

Siguiente artículo
I help Organizations to use Technology to improve people's lives

También te puede interesar

Los mejores software para gestión de proyectos

3 Herramientas DevOps

Maquetar en Drupal 7: Funciones del Tema

CodyHouse