Frameworks de JavaScript en el lado del cliente en 2017

7 septiembre, 2017

En un post anterior ya hablamos sobre la evolución del desarrollo web del lado del cliente. Tal como anunciamos entonces, hoy es el turno de los frameworks del lado del cliente.

Los frameworks no son nuevos en el desarrollo de aplicaciones de gran envergadura. De hecho, la mayoría de lenguajes consolidados tienen una gran variedad de frameworks. Por ejemplo en el mundo Java son ampliamente conocidos Java Server Faces (JSF), Struts o Spring; en PHP encontramos Laravel, Yii o Symfony.

Las principales ventajas que aportan los frameworks son las siguientes:

Desarrollo rápido. Crear un proyecto desde cero suele conllevar un elevado coste en tiempo. Por eso, los frameworks proporcionan la estructura del proyecto y un conjunto de bibliotecas preconfiguradas que ahorran tiempo en el comienzo de los nuevos proyectos. Muchas tareas son delegadas a los frameworks permitiendo a los desarrolladores centrarse exclusivamente en las funcionalidades de su software.

-Incorporación/Rotación de nuevos miembros a los equipos de desarrollo. Uno de los mayores problemas en el desarrollo de software es la rotación de miembros en los equipos de desarrollo, puesto que la incorporación de un nuevo miembro conlleva un coste en aprender la arquitectura del proyecto. Esto es minimizado utilizando un framework, ya que éste obliga a adaptarse a una arquitectura concreta, de modo que cualquier persona que conozca el framework podrá incorporarse rápidamente al desarrollo de cualquier aplicación basada en ella (puesto que conoce la manera de trabajar del framework), minimizando el coste para la empresa.

-Seguridad/Rendimiento. Los frameworks suelen ser creados y mantenidos por equipos de desarrollo diferentes y externos a nuestra organización. Esto permite que esta organización esté completamente centrada en eliminar bugs de seguridad que puedan ir apareciendo a lo largo del tiempo. Y lo mismo sucede en relación al rendimiento.

-Coste. La mayoría de framewoks son de código abierto y gratuitos, lo que supone una gran ventaja, puesto que están siendo actualizados constantemente por la comunidad.

A continuación se van a describir los principales frameworks de JavaScript para el lado del cliente que existen en 2017.

Angular

Angular es el framework estrella hoy en día en demanda de ofertas de trabajo y en comunidad detrás de él. Este framework es la evolución del anterior framework denominado AngularJS.

Eliminar el sufijo JS (referencia a JavaScript) es muy importante puesto que Angular pretende ser una plataforma de desarrollo y no un simple framework. Es decir, con Angular se pueden crear aplicaciones móviles utilizando diferentes tecnologías: Web progresivas (Angular), webview (Ionic) o nativo (Nativescript). Además, hay intentos de crear aplicaciones de escritorio (Angular Universal).

Angular es creado y apoyado por Google, en la actualidad se mantienen los desarrollos de AngularJS y Angular puesto que aún existe una gran comunidad detrás de AngularJS.

La gran crítica de los desarrolladores sobre Angular es su gran curva de aprendizaje, ya que empezar con Angular implica tener unos amplios conocimientos de diferentes tecnologías. En primer lugar, Angular es un framework de JavaScript que se ha apoyado y recomienda el desarrollo sobre TypeScript (superconjunto de JavaScript creado por Microsoft), utiliza la programación funcional o declarativa haciendo uso de funciones lambda, y se basa en el patrón reactivo (RxJS) para la gestión del código asíncrono del lenguaje JavaScript. Además, recomienda fuertemente el desarrollo basado en pruebas utilizando herramientas como Jasmine/Karma para las pruebas unitarias y de integración, y Protractor para las pruebas del sistema.

Por otro lado, las principales características de Angular que lo hacen el framework más utilizado son las siguientes:

-Buenas prácticas de desarrollo. Angular te fuerza o, al menos, te facilita la adopción de buenas prácticas de desarrollo, puesto que proporciona una estructura del proyecto que es fácilmente comprensible por cualquier desarrollador, así como una especificación clara de dónde deben ir los ficheros y cómo deben desarrollarse.

-Multiplataforma. Cuando se refiere a multiplataforma, ya no se está refiriendo a que el código funcionará adecuadamente en los diferente navegadores, sino que con los mismos conocimientos se podrán desarrollar aplicaciones móviles y de escritorio.

-Herramientas que permiten arrancar fácilmente. Oficialmente se mantienen herramientas como angular-cli que permiten crear proyectos y porciones de código de manera rápida que ayudan a crear proyectos desde cero.

-Facilidad para realizar pruebas e incluye aplicar metodologías como TDD. Al forzar a los desarrolladores a aplicar buenas prácticas de desarrollo se facilita la incorporación de pruebas en el código, llegando a poder aplicarse metodologías de desarrollo como TDD (Test-Driven Development) de un modo bastante sencillo.

React

React es la segunda gran apuesta en el desarrollo de aplicaciones del lado de cliente. Ha sido creado por Facebook para el desarrollo de interfaces de usuario en aplicaciones Web. Constantemente se compara React con Angular pero sus objetivos son diferentes: React no es un framework sino una biblioteca que se centra en crear interfaces de usuario, a diferencia de Angular, que trata de abarcar mucho más.

Su incorporación en esta lista se debe a que es ampliamente utilizada y comparada con otros frameworks. El principal objetivo de esta biblioteca es proporcionar a los desarrolladores un entorno fácil para crear aplicaciones con un gran volumen de datos que son modificados en tiempo real y, por tanto, requieren de muchos refrescos en la pantalla (interfaz de usuario).

Es importante remarcar que en el patrón de diseño de aplicaciones MVC (Modelo-Vista-Controlador), React solamente sería la vista (V). Por lo tanto, React puede ser integrado en muchos más proyectos de desarrollo Web, ya que solamente implica una parte del desarrollo.

La razón de la gran popularidad de esta biblioteca es que impulsó el concepto de DOM Virtual (Document Object Model Virtual), por el cual se conseguía un gran rendimiento en las interfaces de usuario que tenían un gran volumen de refrescos, y supuso un cambio importante en el momento de su aparición (dicha característica también es proporcionada hoy en día por otros frameworks).

Otra de las razones de su gran popularidad es que es la biblioteca utilizada para los interfaces de usuario de tres grandes proyectos de la compañía de Facebook: Instagram, Whatsapp y la propia Facebook.

Tal es el éxito de esta biblioteca, que ha surgido un proyecto conocido como React-native para crear aplicaciones móviles utilizando React.

Vue.js

El tercer framework en esta lista es el proyecto de código abierto denominado Vue.js, el cual ha tenido una gran popularidad en los últimos tiempos con la aparición de la versión 2.0 en 2016. Este framework trata de tomar lo mejor de cualquier framework e implementarlo, de hecho, en amplias comparativas entre diferentes frameworks ha conseguido unos resultados extraordinarios en velocidad y ligereza de peso (esa es otra de las grandes críticas a otros frameworks).

Se podría decir que Vue.js se encuentra en un estado de complejidad entre Angular y React puesto que no llega a proporcionar tantos elementos y complejidad como Angular, pero sí se ocupa de tareas que, al ser un framework completo, no son contempladas en React.

Al ser más simple y fácil de aprender que Angular, está siendo adoptado por muchos desarrolladores: entre sus principales alabadores se encuentra la comunidad de Laravel (uno de los principales frameworks de lado de servidor en PHP), que lo ha elegido como el framework del lado del cliente por defecto.

Otros frameworks

No solamente existen tres frameworks del lado del cliente, de hecho, hay un popular chiste entre la comunidad de desarrolladores que cuenta que cada semana aparece un nuevo framework del lado del cliente que hay que aprender. Por lo tanto, describir la larga lista de frameworks que existen no sería provechoso, pero sí es importante remarcar otros frameworks de JavaScript populares:

BackboneJS es uno de los frameworks del lado del cliente con larga vida (más de 7 años), pues su primera versión es de 2010. Este framework está centrado en crear aplicaciones clientes sincronizadas con un servidor, proporcionando una interfaz de comunicación RESTful muy potente. Algunos de los desarrollos más populares que utilizan BackboneJS son AirBnB, Groupon now o LinkedIn.

EmberJS es otro popular framework que vivió su esplendor en 2015, cuando fue considerado uno de los mejores frameworks por la comunidad. Hoy en día es sólo otro framework más con una amplia comunidad de desarrolladores, pero no se puede decir que destaque por una característica novedosa. Eso sí, está centrado en que se apliquen buenas prácticas de desarrollo del mismo modo que Angular.

Conclusiones

El uso de un framework de JavaScript depende de exactamente lo mismo que utilizar un framework en cualquier otra tecnología. La gran diferencia que puede surgir hoy en día es que la fragmentación de dispositivos y navegadores es un gran quebradero de cabeza para los desarrolladores y los frameworks permiten mitigar este problema. La elección de uno u otro depende principalmente del tipo de proyecto que se quiera abordar, puesto que si se va a crear una aplicación de gran envergadura es bueno apostar por un framework que permita aplicar buenas prácticas a todo el equipo de desarrollo, tal y como puede ser Angular o Ember. Por otro lado, si se quiere tener un framework ligero y sin muchas complicaciones quizás sea una buena idea utilizar Vue.js o React.

No obstante, lo que es seguro es que tomar la decisión de utilizar un framework u otro implica un gran coste en el desarrollo y debe ser meditada, puesto que cada uno de ellos proporciona una serie de ventajas, pero fuerzan al proyecto a tomar un rumbo u otro.

Carlos Caballero González es Ingeniero y Doctor en Informática por la Universidad de Málaga. Máster en Ingeniería del Software e Inteligencia Artificial. Es profesor técnico de formación profesional en la especialidad de sistemas y aplicaciones informáticas, profesor colaborador de los estudios de Informática, Multimedia y Telecomunicación de la Universitat Oberta de Catalunya (UOC) e investigador en la Universidad de Málaga.

(Visited 382 times, 1 visits today)
Autor / Autora
Comentarios
Manuel11 noviembre, 2017 a las 6:29 pm

Tenéis algún curso donde se pueda estudiar angular ??

Responder
Deja un comentario