¿Está mal usar reactjs pero la aplicación no es isomorfa?

Hay muy poco en el desarrollo web que esté mal y si la gente te dice lo contrario, ten cuidado con su dogma. El desarrollo web, como muchos campos en la ingeniería de software, consiste en conocer varias soluciones diferentes y elegir una cuyas ventajas se alineen con sus objetivos y cuyos inconvenientes sean agradables.

El JavaScript isomorfo es sorprendente … en teoría. Sin embargo, el problema radica en el hecho de que el navegador no es el servidor y viceversa. Si bien se pueden emular ciertos aspectos entre los dos, no deberíamos quedar atrapados en la emulación por el isomorfismo. Deberíamos emular porque es lo mejor para nuestros usuarios (y, si es posible, nuestro desarrollo).

A saber, el JavaScript isomorfo solo ha mostrado una gema real (general) y esa es la representación del lado del servidor:

  1. brinda la información necesaria para iniciar su aplicación
  2. todo hecho en el servidor
  3. evita viajes de ida y vuelta innecesarios del cliente al servidor

Pero si prestas atención, estamos haciendo algunas suposiciones serias aquí:

  1. Suponemos que tenemos toda la información necesaria sobre nuestro usuario de su solicitud de red inicial, que no podemos tener si no estamos usando cookies.
  2. Suponemos que nuestro servidor está mejor equipado para producir el primer render que su navegador
  3. suponemos que nuestro servidor es la opción más óptima para invocar esos viajes de ida y vuelta de red que su navegador

En el caso de una aplicación como un blog, muchas de estas suposiciones son ciertas: realmente no nos importa quién es el usuario desde el punto de vista de la aplicación, es bastante trivial producir el marcado necesario para el contenido, y es probable que la fuente de datos sea colocado con el servidor.

Pero, ¿qué pasa si no almacenamos los datos del usuario en las cookies? ¿Qué sucede si estamos usando hardware básico y / o es probable que nuestro grupo demográfico de usuarios esté usando hardware de rendimiento en redes excelentes? ¿Qué sucede si estamos aprovechando las API de terceros para una variedad de servicios diferentes y ellos harán su propio almacenamiento en caché? Hay muchos casos en los que la representación del lado del servidor puede ser una solución sobredimensionada para un problema que no existe, y debemos reconocerlo y evitarlo.

Reaccionar es genial, pero de ninguna manera hereda esa grandeza del isomorfismo, eso es solo una característica adicional. Úselo como mejor le parezca.

Gracias por el A2A!

No, no está mal. El siguiente paso suele ser una aplicación universal (el isomorfismo es matemático específico y tiene más significado).

Si no confía en muchas llamadas al servidor para representar el estado inicial de su aplicación, es posible que no necesite la representación del lado del servidor.

De lo contrario, es una opción viable para mejorar el rendimiento, optimizar el SEO (pre-renderizado) y, en última instancia, proporcionar una experiencia de usuario más fluida.

No hay nada de malo en crear una aplicación no isomorfa. Si crees que es más trabajo de lo que vale, o si la aplicación que estás construyendo no se beneficia de ninguna de las cosas buenas que te brinda el isomorfismo, simplemente no lo hagas. Un ejemplo de eso es una aplicación con un único punto de entrada (es decir, una aplicación a la que solo puede acceder mediante una URL). En ese caso, el marcado que devuelve el servidor es, en algunos casos, solo serán los mismos datos estáticos. El isomorfismo sería un desperdicio aquí.

En algunos casos, como cuando su back-end no es JavaScript, el isomorfismo simplemente no es posible. Eso también está totalmente bien.

Una aplicación en la que trabajé recientemente evitó el isomorfismo, a pesar de que nuestro marco lo hizo fácil de hacer. No persistimos una sesión de usuario por razones de seguridad, por lo que el usuario tuvo que iniciar sesión cada vez que cargó la aplicación. Si solo vamos a devolver un formulario de inicio de sesión estático cada vez que se carga la página, no tiene sentido construir toda la tubería para el isomorfismo solo para cargar un par de entradas y un botón.