¿Angular o Backbone o…?

Cómo escoger un frame js y no morir en el intento

meredith_frampton

archivado en: JavaScript / 10 septiembre, 2015

Me pidieron en el curro un texto sobre el ecosistema javaScript y Angular. Lo publico también por aquí por si a alguien le interesa aunque no tenga ni una línea de código.

El paisaje web está cambiando a un ritmo vertiginoso desde la aparición de HTML5. En lugar de Java, PHP y demás lenguajes del lado del servidor, ahora el peso de las aplicaciones recae en javaScript, un lenguaje cada vez más potente y versátil, con el que se puede desarrollar desde un juego para Internet a un sistema de interacción con objetos reales combinado con Arduino y otras tecnologías similares.

Sin embargo, javaScript ha crecido de forma asilvestrada hasta hace bien poco, por lo que la única manera de desarrollar una aplicación de grandes dimensiones, escalable y mantenible es encauzándolo a través de un framework. Y aquí comienzan los problemas.

Backbone-Marionette, Ember, Meteor, Polymer, Mithril, Angular... hay tantos frameworks y liberías js disponibles que el mero hecho de atinar con el correcto para las peculiaridades de un proyecto se convierte en tarea casi quimérica. Y no es una decisión de poca importancia. Escoger el framework equivocado puede complicar en gran medida el desarrollo y la calidad de una aplicación, mermar su perdurabilidad, dificultar su mantenimiento y demás problemas de sostenimiento que a medio plazo se convierten en inversiones sin retorno. ¿Existe alguna manera de minimizar este riesgo? ¿Contamos con pistas que nos permitan tomar la decisión correcta?

Para responder esta cuestión antes debemos conocer aunque sea por encima cuáles son los principales actores del ecosistema actual de javaScript. A saber:

1. Frameworks experimentales. En el horizonte del hiper-revolucionado mundo de javaScript se atisban puntos de fuga muy interesantes -como los web componentes o el shadow DOM- que prometen mejorar el rendimiento de las aplicaciones web y ya hay algunos frameworks encaminados en este sentido como Polymer, Aurelia o la familia 2.* de Angular.

2. Frameworks ligeros que sobre todo aportan la organización de la estructura base de una aplicación. Se caracterizan por la necesidad de complementarlos con librerías especializadas, con las que no suelen presentar ninguna incompatibilidad. El ejemplo más destacado de este tipo de frameworks está protagonizado por Backbone al estilo Marionette.

3. Frameworks holísticos que buscan abarcar todo el proceso de una aplicación web, desde las llamadas al servidor al renderizado de las vistas en cliente. Es el caso de Meteor, Ember y la familia 1.* de Angular.

4. Una legión de librerías especializadas, como jQuery o React para la manipulación del DOM, es decir, de la parte que ven los usuarios, o Raphael y Kinetik para dibujar en canvas, entre tantas otras.

5. Para trabajar con Node, que es una tecnología javaScript del lado del servidor, también contamos con frameworks específicos, como Express y Sails.

6. Herramientas para desarrollar aplicaciones híbridas, esto es, código javaScript que se puede adaptar a distintas plataformas. Valgan como ejemplo destacado Cordova para dispositivos móviles y NW para aplicaciones de escritorio. A su vez, algunas de estas herramientas tienen derivadas para combinar frameworks, como es el caso de Ionic, para trabajar con Angular y Cordova.

7. Por último, mencionar que para realizar pruebas automáticas, test, también existe una gran variedad de frameworks y utilidades, como Jasmine, Cucumber o Protactor.

No es un recuento completo, pero nos sirve para enmarcar la respuesta de la pregunta inicial: ¿qué herramientas escoger para nuestra próxima aplicación web? La respuesta no se puede sintetizar en unas pocas líneas, pero sí podemos acotar el abanico de posibilidades en función de la naturaleza del proyecto. Unas pistas a vuelapluma:

Lo primero que debemos tener en cuenta es el target de la aplicación o, mejor dicho, sus navegadores. Si debe funcionar también para el Explorer, en general, hay que olvidarse de los frameworks experimentales de momento. Dado que solo desde la versión 11 de este navegador es capaz de digerir el javaScript convencional, según los análisis de  html5test.com, para emular la versión 6 de javaScript y otras novedades es necesario hacer tantos esfuerzos que, al final, no compensan las ventajas que aporta un framework.

En este sentido, también se debe tener en cuenta cuando se trata de aplicaciones multiplataforma cuál es el umbral inferior de los dispositivos móviles en los que debe correr y, en este caso, el límite lo marcan las versiones antiguas de Android, de la 4.4.2. para abajo, a las que en general no se les puede pedir mucho. En estos casos, cada vez menos habituales, es recomendable decantarse por algún frame ligero combinado con Córdoba.

El tercer parámetro a tener en cuenta es la envergadura de la aplicación. Si es grande o es posible que lo pueda ser en un futuro, es muy razonable decantarse por un frame holístico, que con mayor o menor dificultad se puede combinar con librerías especializadas si el proyecto lo requiere, como sucede con Angular 1.*, excelente para trabajar contra REST, pero algo menos bueno para manipulaciones intensivas del DOM.

Es igual de importante tener en cuenta al equipo de desarrollo. Una de las virtudes de un framework es la facilidad para crear equipos grandes, donde el propio frame genera una estructura comprensible por todos, incluso por quien se acaba de incorporar. Y esta es otra de las ventajas de los frames holísticos; sin embargo, los frames experimentales suelen demandar una fuerte curva de aprendizaje solo en la propia herramienta, dado que es más complicado encontrar especialistas, por lo que esta ventaja tiende a disiparse.

El cuarto factor que debemos sopesar es la necesidad de realizar test, un ámbito donde sobresale Angular, el mejor frame para realizar pruebas de distinta naturaleza (unitarias, E2E, etcétera).

Por último en este recuento rápido indicar que si se va a utilizar Node con Mongo DB, es recomendable recurrir a MEAN, que combina estas dos tecnologías con Express y Angular.

En síntesis: no existe una solución universal. Hay que analizar cada caso en particular y ver cuál es la solución apropiada.

|| Tags:

valoración de los lectores sobre ¿Angular o Backbone o…?

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 5 sobre 5 (1 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

4 respuestas a “¿Angular o Backbone o…?

  1. marcos el dijo:

    qué bueno : )

    pues dale un besote tb de mi parte y que siga alegrando el mundo con sus colorinchis ; )