Esta es la pregunta más básica.
En cada ejemplo en línea que veo, para ejecutar un sitio web con NodeJS y React, se crean dos programas/servidores separados. Uno se ejecuta en el puerto 3000 y el otro en el 3001. ¿Es necesario? Si react es un motor frontend, ¿por qué tiene que ejecutarse en un puerto o en un servidor?
Estoy confundido en cuanto a por qué siempre usan create-react-app que puede estar ejecutándose en su propio servidor, no estoy seguro.
Me gustaría crear app.js import 'express' para manejar solicitudes y también importar React en el mismo archivo, pero me encuentro con errores de compilación, ¿funcionará este enfoque?
¿Es esto necesario?
No, esto nunca es necesario y normalmente solo se hace en desarrollo.
Si react es un motor frontend, ¿por qué tiene que ejecutarse en un puerto o en un servidor?
Webpack (lo que normalmente agrupa su código React para el uso del navegador, herramientas similares son vite/snowpack) crea un servidor para actualizaciones en vivo y errores, por lo que los cambios en su React se propagan automáticamente a la interfaz de usuario.
Esto solo se hace durante el desarrollo y no en producción. Es una característica de conveniencia mientras se desarrolla el código.
Me gustaría crear app.js import 'express' para manejar solicitudes y también importar React en el mismo archivo, pero me encuentro con errores de compilación, ¿funcionará este enfoque?
El código frontend generalmente tiene un paso de compilación en el que ejecuta npm run build que ejecuta webpack --production sobre su código (o esbuild u otras herramientas similares). Después de este punto, todo su código de interfaz suele ser archivos estáticos (.js, .html, .css, etc.), desde cuyo punto simplemente los sirve desde el almacenamiento de archivos estáticos (generalmente un CDN para tiempos de carga más rápidos en diferentes geografías).
Trabajar con React y Express funcionaría, de hecho, es una pila tecnológica muy popular.