«React es mejor que Angular» y otras tonterías

«Guerra. La guerra nunca cambia» ©Bethesda

Una historia de un desarrollador cansado de artículos confusos e inútiles

Lo diré de una forma muy simple: estoy cansado, cansado y desilusionado. Estoy cansado de leer cada día los mismos artículos. Cansado del síndrome de «y el ganador es».
No necesitamos otro ganador, y no necesitamos que los desarrolladores nos digan que herramienta será mejor para nuestro trabajo.
En realidad entiendo el clickbaiting, de veras que lo entiendo. Y no me molestan los artículos titulados «Esto contra Aquello», ya que se suponen que lo leerán desarrolladores curiosos e inexpertos que buscarán en Google esa misma frase.
Pero ese es exactamente el problema: los desarrolladores inexpertos tienden a creer lo que la comunidad diga. Por esa razón, si te tomas en serio tu trabajo y tu importancia como persona influyente, no deberías declarar ningún ganador, ¡porque no hay ninguno! Esto no es una guerra, esto es un momento realmente fructifero para construir aplicaciones web, con una gran variedad de herramientas disponibles.
Así que, vamos a intentar ser honestos y decir lo que los desarrolladores necesitan escuchar, a través de una entrevista imaginaria.

Estoy pensando en estudiar un nueva framework de JavaScript, ¿cuál debería elegir?

Sin ninguna otra información, es imposible contestar, pero entiendo que querrás aprender algo nuevo y es admirable que pidas consejos, ya que hay multitud de nuevas herramientas y sólo entenderlas ya puede ser complicado. Por el momento, elige uno de los importantes y pruébalo durante varios días. ¿Te ha gustado? ¿Cree que te da soluciones a tus problemas?

He probado Angular durante una semana, ¡pero hay mucho que aprender! Me preocupa el tiempo que voy a necesitar para dominarlo… Por otro lado, React parece más sencillo, ¿verdad?

Sí y no. Angular es un framework, ofrece un montón de características por defecto, como el sistema de Enrutamiento, manejo de Formularios, peticiones HTTP, Animaciones, así como un robusto sistema de módulos con carga en diferido, Inyección de Dependencias, soporte para i18n y otros. En React, tendrás que elegir tendrás que elegir entre una buena cantidad de librerías de terceros para tener todas estas características, y es tu responsabilidad mantenerlas, lo cual no es sencillo. Además, Angular te obliga a usar TypeScript y RxJS, que son muy buenos, pero necesitarás entenderlos ya que forman parte del ecosistema.
Así pues, entender Angular no es tarea sencilla, hay mucho que aprender, pero al final tendrás una estructura robusta para tu aplicación: esa es la mejor parte de Angular, aplicaciones de empresa complejas. Debe quedar claro que no se necesita Angular para una web sencilla.
Por otro lado, React te da mucha flexibilidad, pero ¿es eso bueno? ¡Esa es tu elección! Serás responsable de crear un ecosistema específico dirigido por React. Para mi, la flexibilidad que ofrece React es fenomenal, pero sigamos.

¿Cuál es la principal diferencia entre Angular y React a la hora de escribir componentes?

Angular tiene su propio motor de plantillas, lo cual está bien y mantiene el HTML separado del JavaScript. Esto es especialmente importante para los desarrolladores que no les gusta mezclarlos, y ESTE podría ser uno de los puntos críticos de Angular sobre React, pero es cuestión de preferencias, o podría ser justo al revés.
Por otro lado, React usa JSX que básicamente es una forma declarativa de escribir HTML en JavaScript: para mi, esto es muy bueno. JSX es lo que hace que los componentes de React sean fáciles de entender y de trabajar con ellos. JSX trata de expresión y flexibilidad. ¿He oído instanciación dinámica de componentes? Aquí es donde React es mucho más potente que Angular, donde la instanciación dinámica es más verbosa (aunque podría cambiar en el futuro).

¿Qué es Redux, y necesito aprenderlo para usar React?

Redux es la librería más famosa para manejar el estado de las aplicaciones JavaScript. Ayuda a mantener nuestra aplicación React bien estructurada y organizada (si se usa como es debido), pero me parece que se ha perdido el sentido: ¡las herramientas deberían inspirarnos y no asustarnos! Además, no creas que no podrás vivir sin ella. Redux no es esencial para una buena aplicación React. Por otro lado, si te gusta el método Redux de hacer las cosas, nada te impida usarla también en Angular. Una aplicación bien estructurada, lo es con o sin Redux, y esta afirmación es válida para React y Angular.

¿Qué framework es el más maduro?

A menudo veo comparaciones de estrellas de Github, y me dan pesadillas. En primer lugar, las dos están demasiado fragmentadas como para hacer comparaciones: el ecosistema de React es un montón de librerías y Angular es bastante reciente, ya que ha cambiado completamente desde el anterior AngularJS. Obbservar su popularidad no nos dice nada acerca del propio proyecto y no vas a decidir que framework resolverá tus problemas mirando un número. Sin embargo, además de la popularidad, React es hoy en día más maduro. Lleva fuera más tiempo y Facebook está haciendo un buen trabajo con él. Hay muchos más Kits de IU disponibles, el renderizado del lado del servidor (Server Side Rendering) sencillamente funciona (Angular Universal aún es inestable, desgraciadamente) y React Native es probablemente la mejor herramienta para aplicaciones móviles multiplataforma (¡Lo siento, NativeScript!)
Por otro lado, el equipo de Angular está haciendo un gran trabajo, pero les llevará tiempo alcanzar el nivel de madurez de React. Creo que es sólo una cuestión de tiempo.

Angular 2, 4, 5… ¿qué pasa aquí? ¡Tanto número me asusta!

¿Sabes que en realidad React está en su versión 16? Que los números no te asusten. Angular cambia de versión cada seis meses, asegurando actualizaciones. Admito que los cambios de Angular han sido un poco difíciles de seguir, pero al final, es una buena señal que indica que hay un buen trabajo detrás. Un proyecto que evoluciona es MUCHO mejor que un proyecto que se muere. Angular aún esta en sus primeras versiones y los cambios son comprensibles. Aunque por cierto, no he tenido grandes problemas desde Angular 4.

¿Qué es el DOM Virtual? ¿Hace que React tenga mejor rendimiento que Angular?

Sí y no. El DOM Virtual es una abstracción, React construye por detrás un árbol lógico que representa la estructura real del DOM. En otras palabras, tenemos una especie de «copia» del DOM en memoria, y… bueno, consume memoria. Pero el DOM Virtual se trata de hacer lo correcto para actualizar la estructura de tu aplicación: React conoce que ha cambiado después de cada evento, modifica el DOM Virtual y realiza las operaciones necesarias para modificar el DOM real en concordancia con el virtual. Así pues, el DOM virtual es a la vez más rápido y más lento, dependiendo de la estructura de tu aplicación. En general, React es realmente rápido, ¡pero no esperes ver milagros si tú código es un lío!
Angular no tiene un DOM Virtual, usa sus propios mecanismos de detección de cambios, combinado con Zones, que ayuda a Angular a navegar por el árbol de detección de cambios.
Que no te preocupe el rendimiento: ¡los dos son bastante rápidos!

Entonces, al final, ¿qué sugieres?¿Cuál debería ser mi criterio?

Lo importante es elegir la herramienta correcta para cada trabajo. Esto se resumen en:

  • Tus preferencias o las de tu equipo.
  • ¿Prefieres un framework todo-en-uno o montar tu propia estructura con librerías?
  • ¿Tu aplicación depende mucho de la instanciación dinámica de componentes?
  • ¿Necesitas una versión para móviles de tu aplicación? En ese caso puedes reutilizar mucho código con React y React Native.
  • ¿Estás obligado a tener renderizado del lado del servidor?En estos momentos, React funciona mejor (ver Next.js)
  • ¿Trabajas con clientes locales? ¿Cuál es el más usado (o mejor pagado) en tu país?

Pero el más importante es el primero, tus preferencias. Estás te dirán cual es el mejor framework para ti. Y si resulta que te gustan los dos… ¡mejor para ti!
PD. No he mencionado Vue porque sencillamente, no me ha gustado. Se trata de una preferencia personal, ¿verdad? Sin embargo, es otra gran herramienta a la que deberías echarle un vistazo.

Nota: puedes encontrar el artículo original en https://medium.com/@michelestieven/react-is-better-than-angular-and-other-nonsense-6ff752161cfd

Deja un comentario

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