Categorías
Desarrollo

5 motivos por lo que prefiero Angular a React para la empresa

¡Desarrolladores, Arquitectos y otros seres del IT! Es hora de sacar las banderas y encorrernos defendiendo nuestra tecnología como si no existiesen las gamas de colores. En serio, siempre que saco este debate se vuelve bastante intenso… Pero me encanta, me apasiona, ¡la capa de presentación es creatividad pura! y las tecnologías actuales están madurando en bibliotecas y frameworks muy interesantes.

Por acotar el debate, lo voy a centrar a un público y situación concreta:

  • Es una empresa de tamaño medio o grande con una demanda alta de servicios digitales. Pero que su negocio core no es la tecnología
  • Que necesita una solución de Frontend que pueda reutilizar en todo su negocio. Para dar servicio tanto al cliente externo como al interno, tanto en web como en movilidad.
  • Que dispone de un equipo de desarrollo o arquitectura interno, pero que necesitan apoyarse en diferentes equipos externos para extender sus capacidades.
  • Y como no, que lo desean rápido, barato, resiliente y si es posible, anti-frágil

Podríamos decir que, con ambas tecnologías, tanto Angular como React se pueden alcanzar los objetivos, ambas son Javascript, utilizadas universalmente y por grandes empresas respaldándolas. Vas a poder reutilizar casi todo el código en Web, en aplicaciones móviles, en Desktop e incluso en tu Backend, todo es organizar bien la arquitectura.

Ambas me gustan, y las he usado, pero para el caso del que hablamos, me decanto claramente por Angular por los siguientes 5 motivos y una conclusión

1. Frameworks vs Libraries

Angular es un Framework, esto significa que no tendrás que decidir qué conjunto de bibliotecas agregar a tu proyecto para hacer el enrutamiento, los formularios, traducción, pwa, server-side rendering, UI con material, webcomponents, testing, cli, seguridad, etc. Viene con todas estas funcionalidades ‘out of the box’.

¡Y esto es una maravilla cuando toca actualizar y debes de tener en cuenta las particularidades que cada biblioteca que decidiste incluir! React es una biblioteca que deja abiertos todos estos temas.

2. Arquitectura

Va de la mano del punto 1, en Angular ya viene de serie con un conjunto de patrones de desarrollo, en ambas tecnologías vas a utilizar componentes, que podrás reutilizar con bibliotecas, pero Angular va un paso más allá y nos define estos elemento dentro de un patrón MVVM (o MVW), pero que nos facilita saber dónde poner las cosas de presentación, la lógica de estos elementos de presentación y lo que es negocio puro.

Además, plantea de inicio como serán los test unitarios y los test end to end

Esto es esencial cuando los proyectos se vuelven grandes y los grupos de desarrollo son heterogéneos, o definimos patrones o acabaremos enterrados en nuestro código.

Esto al final, se traduce en productividad, calidad y resiliencia ante los cambios.

Con React queda en nuestra mano definir esta arquitectura, se centra en la vista. Lo cual suena divertido, hasta que… ¡explota!

3. Typescript

A pesar de que es posible utilizarlo en ambas tecnologías, Angular nace con typescript de serie. Esto viene a decir, que en lugar de utilizar Javascript, se utiliza una ‘vitaminazación‘ de este para hacerlo más cercano a la programación orientada a objetos, forzar el tipado de objetos, entre otras cosas. Solo veo beneficios, especialmente si vienes de backend y has pasado por Java, .Net,…

https://es.wikipedia.org/wiki/TypeScript

4. WebComponents

¡Ay!, ¿en que lio me voy a meter!… Angular tiene soporte, aunque un poco obsoleto para construir WebComponents. Lo que nos deja la opción de reutilizar nuestro código para construir un componente agnóstico a la tecnología donde se vaya a incluir. Que has desarrollado un componente y quieres utilizarlo en otro proyecto no Angular, pues lo construyes como WebComponents y se lo facilitas al equipo integrador. React da muchas menos facilidades, incluso algunas funcionalidades no están soportadas.

https://developer.mozilla.org/es/docs/Web/Web_Components

5. Ionic

Es un Framework que siempre ha ido de la mano de angular, aunque ahora es poliglota, nos va a permitir convertir nuestra aplicación en una app móvil (con las funcionalidades nativas), o desktop (con Electron) o seguir en web. ¡Y esta es una maravilla!, una tecnología para controlar todos los canales. Si estás famializado con Angular enseguida te encuentras cómodo con Ionic.

En react, también puedes utilizarlo, pero siempre ha estado más cercano a React Native (también de Facebook), pero por lo menos a mí, me duele solo de pronunciarlo. 🙂

Conclusiones

Me dejo muchas cosas en el tintero; los flujos, el two-way data binding, las templates, los schematics, el encapsulamiento de componentes, la inyección de dependencias y un sin fin de características.

Si me montará una Start-Up, es más que probable que me decidiera por React, me encanta como gestiona los estados nativamente, lo flexible y sencillo que es, pero para una empresa menos tecnológica, donde es importante definir arquitecturas, patrones y ¡mantenerlos en el tiempo!, donde los equipos de desarrollo pueden ser muy variopintos y donde las aplicaciones crecen y crecen ¡Pero deben seguir pareciendo la misma cosa! De cabeza a Angular.

La popularidad de React crece de forma imparable, pienso que se debe a que la curva de aprendizaje de Angular es más pendiente, tiene mucha funcionalidad por defecto, y que angularJS, la primera versión que no tiene ya nada que ver con la versión 9, era muy ‘especial’ y la sufrió mucha gente.

¡A darle caña!

2 respuestas a «5 motivos por lo que prefiero Angular a React para la empresa»

Deberias ir dejando el frontend, empiezas a hablar muy raro, xD. Me quedo con Angular también, pero no pierdo de vista Blazor, tanto en modo cliente SPA como en Servidor.

Gracias por el comentario Jesús! Tengo pendiente probar a fondo Blazor. Para los .NET suena a panacea total, pero no sé si los javascript lo verán así. 🙂 ¡Tiempos emocionantes!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *