Mi sitio web realizará operaciones CRUD y funcionará con MongoDB y Firebase storage+auth.
¿Cuáles son las razones/ventajas de desarrollar un servidor Express separado en lugar de integrar todo en mi aplicación next.js?
Por lo que he visto, todo se puede hacer en mi aplicación next.js, pero aún veo muchos proyectos que funcionan con un servidor separado.
Puedo pensar en algunas cosas por las que tendrían un servidor diferente al que proporciona NextJS:
Se basa literalmente en lo que le gustaría hacer, las interacciones adicionales con MongoDB y Firebase serían las mismas en ambas tecnologías, a menos que desee aislar las cosas respectivas por separado, no veo ningún daño en hacer todo junto a continuación.
Dado que la idea de usar next.js, según tengo entendido, sería utilizar la representación del lado del servidor.
Ejecutar Next.Js en un servidor estándar será de poca diferencia si está utilizando /api o expressjs de nextjs.
Sin embargo, si está alojando sin servidor (por ejemplo, Vercel), le recomendaría usar un servidor express separado si tiene muchas operaciones CRUD porque el calentamiento de serverless es una experiencia de usuario realmente mala.
Next/JS: si desea editar algo en el backend e impulsar los cambios, deberá compilar toda la aplicación JS y, según el tamaño de su aplicación, puede llevar mucho tiempo (especialmente si páginas estáticas generadas).
Express: si ejecuta express por separado, puede compilar e implementar el front-end y el back-end por separado. Es un ahorro de tiempo y también puede organizar mejor sus códigos frontend/backend.
Tengo la opción de aprovechar Vercel para alojar mi frontend, con páginas generadas estáticas y algunas páginas generadas del lado del servidor (escalado automático, almacenamiento en caché, CDN, etc.), y alojar mi backend con un grupo de servidores independiente.
PD : Me mudé de la aplicación única Next.JS a NextJs+Express
He estado usando Next.js con Typescript durante bastante tiempo y, a partir de ahora, he encontrado una razón para no incluir express.js en mi proyecto. Y el motivo es Vercel .
Dado que uso Vercel para la implementación continua de mis proyectos, y Vercel no es compatible con ningún servidor personalizado a partir de los documentos aquí , me abstengo de usar Express o cualquier otro servidor personalizado.
No tuve ningún problema al realizar operaciones CRUD con MongoDB, no puedo decir sobre firebase.
En Next.js Docs, encontré estos puntos a considerar:
Pero al final del día, es una opinión muy personal usar un servidor personalizado o no. Puede depender de un caso de uso muy específico que esté buscando.
Personalmente, trato de mantenerlo solo en NextJS, pero si tengo que administrar datos en tiempo real con Socket.io, obtengo un servidor separado porque, además de WebSockets, las funciones sin servidor pueden hacer todo lo demás.