¿Cómo configurar un SPA en la carga?

Estamos utilizando Webpack, React, Node.JS, pero creo que esta pregunta es más genérica que las tecnologías específicas. Puedo usar Webpack para configurar el SPA cuando se construye para el modo de desarrollo o el modo de producción (por ejemplo, utilizando el DefinePlugin).

¿Cómo puedo configurar un SPA en modo de producción (configurado en la comstackción) para diferentes entornos de implementación (p. Ej., Organización por etapas frente a producción)? Por ejemplo, estas diferentes implementaciones hablarían con diferentes API de servidor backend.

De alguna manera, el SPA tiene que recoger algún contexto local del servidor, ya que el navegador lo está GET. ¿O quizás tenemos que tener un archivo de configuración personalizado en cada servidor que el SPA pueda OBTENER de forma segura?

Estamos utilizando NodeJS en el servidor y este SPA eventualmente se ejecutará como una aplicación isomórfica, por lo que podría ayudar. Estamos implementando estas aplicaciones en imágenes Docker y es fácil configurar su entorno en la implementación.

Gracias por cualquier sugerencia.

Estamos luchando con los mismos conceptos en este momento. La mejor manera que encontré para configurar en el tiempo de ejecución es mediante el uso de variables env (que se pueden configurar en el momento de la creación, pero también se pueden anular en el tiempo de ejecución mediante el uso de docker Native o cualquier otra herramienta de orquestación como ECS o GKE).

Otra forma más sucia que usamos antes es realizar los ajustes de tiempo de ejecución a través de la directiva CMD de la imagen. Esto no es realmente recomendable ya que hace que su imagen sea mutable y puede hacerla propensa a errores. Sin embargo, funciona, y si se usa sabiamente puede lograr lo que usted desea. Un ejemplo simple para esto es reemplazar su CMD actual, que probablemente se parece un poco a este CMD node app.js con algo como esto: bash -c "wget prod.conf && node app.js"

Encontré una forma de hacer lo que se requiere. Es mediante la configuración de una cookie con detalles de configuración al servir el SPA. Luego, el SPA puede leer esa cookie para obtener la configuración (y eliminar la cookie porque ya no es necesaria).

Hay un módulo NPM llamado ClientConfig que lo ayudará a hacer lo que he descrito. Funciona de manera muy similar a un módulo NPM complementario llamado GetConfig que ayuda con la configuración en el lado del servidor. ClientConfig: https://github.com/henrikjoreteg/clientconfig

El uso de ClientConfig y GetConfig (por separado y en conjunto) se describe aquí: http://read.humanjavascript.com/ch12-settings-and-configs.html

Esto me parece una solución, aunque me pregunto sobre posibles problemas de seguridad (que siempre son más complejos de lo que parece) y si no hay un enfoque más fácil. Cualquier comentario o solución adicional sería apreciado.

Nuestro código actual utiliza WebPack DefinePlugin, pero no creo que esto nos permita hacer lo que necesitamos. También encontré el ExtendedDefinePlugin que menciona al cliente pero, nuevamente, no estoy seguro de si es una solución posible:

https://github.com/ArikMaor/extended-define-webpack-plugin https://www.npmjs.com/package/extended-define-webpack-plugin

El DefinePlugin también se discute aquí:

Pasando variables dependientes del entorno en webpack

Pero, una vez más, no creo que esto nos permita configurar el SPA del cliente en función del contexto de implementación en lugar del contexto de comstackción.

    Intereting Posts