Comparativa de frameworks de JavaScript para frontend: Angular5, ReactJS y Vue.js, ¿cuál elegir?

En el artículo de esta semana nos ponemos algo más técnicos de lo que viene siendo habitual en este blog de temática TIC, pero, pensamos que también es importante adentrarnos en el “corazón” de la tecnología, en el propio funcionamiento de los organismos de las soluciones tecnológicas con las que interactuamos a diario,  para tratar de comprender por qué el usuario percibe una mejor experiencia de navegación en unas aplicaciones o plataformas web y no ocurre lo mismo en otras.

En esta lucha constante se encuentran los desarrolladores web, cuyo trabajo ha cambiado mucho desde la década de los noventa. Las posibilidades que ofrece el desarrollo web se han ampliado mucho con la finalidad de crear experiencias completas y satisfactorias para los usuarios de las tecnologías de la información y la comunicación, que son, por cierto, cada vez más exigentes. Pero no sólo se han incrementado las posibilidades que los desarrolladores tienen a la hora de construir aplicaciones y plataformas web, el cambio va más allá. De hecho, el proceso que siguen los desarrolladores para la creación de estas soluciones digitales también ha cambiado mucho. El trabajo del desarrollo web de frontend ya no se limita a escribir código, probarlo y cargarlo en el servidor por FTP.

Y en este punto entramos en una disyuntiva recurrente que se produce en los departamentos de TI de muchas empresas. ¿Utilizar frameworks de frontend o no utilizarlos? Si decidimos optar por esta alternativa, ¿cuál de ellos emplear para desarrollar nuestros proyectos digitales?

En este sentido, según datos recogidos por The State of JavaScript,la encuesta anual sobre JavaScript que recoge las opiniones de desarrolladores de todas las latitudes mundiales, alrededor de 9.500 desarrolladores consultados prefiere no emplear ningún framework para frontend y optan por escribir JavaScript puro a través de código Vanilla. Esto tiene ventajas e inconvenientes.

Como principal ventaja, trabajar con JavaScript puro da como resultado aplicaciones y plataformas web que cargan con mayor rapidez y ofrecen, en términos generales, un mejor rendimiento. Al no tener que “comunicar” el framework con la API, los tiempos se reducen, ya que contactamos directamente con la API en cuestión, sin pasar por el framework. Sin embargo, encontramos un inconveniente de peso en el día a día. Sabemos que los clientes quieren sus desarrollos listos para antes de ayer, lo que empuja a los equipos de TI a explorar alternativas que les permitan trabajar con mayor agilidad y realizar las entregas en el menor tiempo posible. Ante esta necesidad, los frameworks de JavaScript para frontend como Angular5, ReactJS y, más recientemente, Vue.js, agilizan los procesos de desarrollo de apps y plataformas web. Utilizar frameworks de JavaScript puede ofrecer al cliente una sensación instantánea de progreso en el proyecto, al contrario de lo que ocurriría trabajando en base a código JavaScript puro.

Los frameworks de JavaScript, ya sean para frontend o backend, ofrecen rapidez a los proyectos, cuentan con una amplia comunidad de respaldo en todo el mundo para resolver posibles “atascos” que puedas tener en las diferentes fases del proyecto, y utilizan estándares que consiguen que los miembros del equipo de IT trabajen en sintonía y casi al mismo ritmo, independientemente de su nivel de habilidad. Se consigue, por tanto, un mayor grado de estandarización en los proyectos, lo que también tiene sus contras: estos frameworks o marcos de frontend o backend difícilmente tendrán todo aquello que necesites para tu proyecto y es muy probable que te veas “obligado” a recurrir a complementos y bibliotecas que amplíen el alcance del framework. En ocasiones, esta búsqueda para resolver la forma en la que encajar las bibliotecas y complementos al marco que estamos utilizando, puede ralentizar el proyecto más de lo esperado…

Partiendo de la base que los frameworks de JavaScript para backend son los que trabajan del lado del servidor (en lo que no se ve, detrás del escenario para que el trabajo del frontend tenga el sostén necesario), y los frameworks de JavaScript para frontend trabajan en el lado del navegador (en lo que se ve, en los componentes externos que forman una app o plataforma web), en este artículo vamos a realizar una comparativa entre los frameworks de JavaScript para frontend, los que actúan en aquello que se ve a simple vista, en los componentes externos. Repasaremos las ventajas e inconvenientes de trabajar con Angular5, ReactJS y Vue.js.

Angular

Este framework puede ser ideal para dar forma a aplicaciones y plataformas web que sean altamente interactivas. Empresas como Google, Telegram, YouTube o Paypal utilizan este framework de JavaScript para frontend. Fue creado por Google en 2009.

Ventajas: una de las principales ventajas la encontramos en el uso del patrón MVVM (Model View Model) que permite a varios desarrolladores trabajar en la misma sección del proyecto de forma simultánea y en base al mismo conjunto de datos. Esto, sin duda, agiliza mucho los procesos. Además, la compilación se realiza de forma más rápida (aproximadamente en tres segundos) e incluye documentación explicativa que permite al desarrollador formarse a la par que lleva a cabo el proyecto, sin necesidad de recurrir a otros colegas.

Inconvenientes: cuando se creó la primera versión de Angular presentaba una sintaxis bastante compleja que se ha intentado simplificar con nuevas versiones. En este sentido, a partir de la versión 5 de Angular, se utiliza TypeScript 2.4 que presenta una menor curva de aprendizaje, aunque sigue siendo complejo. También podemos encontrarnos con problemas de migración cuando cambiamos de versión. 

ReactJS

ReactJS es una librería Javascript que suele utilizarse para desarrollar aplicaciones o plataformas web con amplia variedad de contenidos y funcionalidades que requieran, además, de cambios constantes. Se trata de una librería de vistas de JavaScript de código abierto creada por Facebook en 2013. Empresas como Facebook, Instagram, Yahoo, WhatsApp, The New York Times, Dropbox, Microsoft o Netflix utilizan ReactJS, siendo el favorito por los desarrolladores.

Ventajas: como principal ventaja podemos señalar que resulta más sencillo de comprender respecto a Angular, ya que su sintaxis es más simple. Los desarrolladores no necesitarán aprender TypeScript en profundidad. Además, React destaca por la capacidad de respuesta que ofrece y por su flexibilidad. Cuenta con un DOM virtual que permite organizar documentos en diferentes formatos y, al ser una biblioteca de código abierto, recibe actualizaciones y mejoras a diario por parte de desarrolladores de todo el mundo. La migración de versiones resulta más sencilla y a través de los “codemods” podemos automatizar algunas partes del proceso.

Inconvenientes: el inconveniente fundamental lo encontramos en la gran documentación que existe, y la inexistencia hasta la fecha de una fuente oficial que ofrezca un discurso unificado. Ante esta situación, los desarrolladores pueden perderse en un mar de opiniones.

Vue.js

Este framework de JavaScript para frontend suele emplearse para crear interfaces destinadas a aplicaciones altamente adaptables. Fue creado en 2014 por un ex trabajador de Google que pretendía extraer las ventajas de Angular, pero creando un framework más ligero. De ese deseo nació Vue.js, framework utilizado por empresas como Xiaomi, Adobe, Reuters o WizzAir.

Ventajas: teniendo conocimientos de JavaScript y HTML, el desarrollador o desarrolladora que utilice Vue.js tendrá una curva de aprendizaje reducida ya que Vue.js incluye documentación adaptada que permite ahorrar tiempo al equipo. Además, presenta similitudes con los anteriores frameworks en cuanto a arquitectura y diseño. Pesa poco, pero mantiene su velocidad y flexibilidad.

Inconvenientes: en comparación con Angular y ReactJS, Vue.js todavía cuenta con una cuota de mercado bastante reducida, especialmente si lo comparamos con ReactJS, lo que se traduce en escasa documentación disponible ante la resolución de problemas que podamos tener al integrarlo en nuestros proyectos. Pero, debemos tener en cuenta que este framework cada vez cuenta con más adeptos, por lo que ya se están generando nuevos materiales.

Tras realizar esta comparativa podemos concluir que cada uno de estos frameworks presenta ventajas e inconvenientes, por lo que no podemos decir que haya uno mejor que otro. La elección debería basarse en las necesidades del proyecto de desarrollo que tengamos entre manos. Cada uno de ellos requerirá de un tiempo de adaptación, por lo que es recomendable poner el foco en los objetivos que queremos cumplir con cada desarrollo particular para tomar la decisión más adecuada.