Utilice NuxtJs en el lado del servidor para hidratar un cliente Cordova.
Estoy intentando actualizar una antigua aplicación móvil escrita en Javascript puro + React alojada en Cordova. Esta aplicación aprovecha una API simple en el lado del servidor:
– cuando la aplicación requiere una página, envía una solicitud al servidor
– el servidor elabora la solicitud, busca los recursos y luego responde con un HTML+JS completo. El Javascript es una vista de ReactJs compilada con Gulp/Browserify
– la aplicación toma la respuesta y la guarda en una base de datos local de Sqlite, luego monta el código recibido y la vista se vuelve reactiva.
– si el usuario solicita una vista pero no tiene conectividad, la aplicación busca en la base de datos de Sqlite si hay una vista almacenada en caché y la utiliza en lugar de solicitar una copia nueva al servidor.
Cuando se desarrolla, el código React JSX se compila inmediatamente a JS puro, por lo que, cuando está en producción, la API solo necesita combinar el JS puro con la plantilla HTML. Además, agregar nuevas características y solucionar errores es bastante fácil, porque cada usuario básicamente descarga cualquier vista actualizada cada vez que ingresa en ella.
Los problemas con este enfoque son:
– el desarrollo es doloroso debido a la compilación continua.
– una parte “base” de la aplicación reside en los activos de Cordova (básicamente las utilidades para obtener datos del servidor, almacenamiento en caché, etc.) y solucionar estos problemas requiere una nueva versión de la aplicación o parches de reemplazo poco elegantes.
– la función de almacenamiento en caché a menudo causa problemas en la base de datos de Sqlite (que también se utiliza para otras cosas en la aplicación); como resultado, la base de datos a veces se corrompe y el usuario debe borrar los datos de la aplicación.
– nos gustaría deshacernos de React.
Ya hemos utilizado NuxtJs para generar sitios estáticos, y es genial, pero en este caso no puedo aprovechar el SSG porque la aplicación debe ser casi completamente servida desde la API, para que podamos mantener la facilidad para agregar y corregir características.
Nunca he usado NuxtJs SSR y me pregunto si podría ser adecuado para mi caso de uso, por ejemplo, ¿podría lanzar una instancia de NuxtJs en el lado del servidor que genere la salida HTML y alimente un cliente de Javascript vacío en Cordova? ¿Hay una mejor manera de lograr esta tarea? ¿Debería usar solo Vue en su lugar?
Gracias.
davy.ai
Como experto en IT especializado en javascript, cordova y nuxt.js, aconsejaría que la mejor manera de actualizar la antigua aplicación móvil sería aprovechar NuxtJs SSR.
NuxtJs SSR permite que la aplicación se sirva al cliente en un estado pre-renderizado. Esto significa que el servidor genera la salida de HTML y el cliente solo necesita hidratar un cliente de Javascript ‘casi vacío’ en Cordova, lo que hace que la aplicación sea más rápida y eficiente.
Para lograr esto, puedes iniciar una instancia de NuxtJs en el lado del servidor, que genere la salida de HTML y hidrate el cliente de Javascript ‘casi vacío’ en Cordova. Al hacer esto, puedes deshacerte del framework React y aún mantener la funcionalidad de agregar y corregir fácilmente.
Recomendaría explorar el uso de solo Vue en lugar de React, ya que Vue es ligero y más fácil de usar, especialmente al trabajar con Cordova.
En general, aprovechar NuxtJs SSR y posiblemente utilizar Vue en lugar de React podría resolver los problemas asociados con el enfoque actual mientras se hace que la aplicación sea más eficiente y más fácil de desarrollar.