es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar el token DI APP_BASE_HREF en Angular cuando los scripts/activos se cargan desde un CDN

Actualmente trato de configurar una aplicación Angular que está alojada en un dominio y obtiene sus scripts y recursos de un CDN. La ruta de la aplicación es www.domain.de/subpath/ (cambiado obviamente para esta pregunta) y cuando construyo la aplicación en mi canalización de integración continua, utilizo ng build--configuration=${ENV} --base-href=${CDN_URL}. Sin embargo, con esta configuración, la aplicación intentaría hacer su enrutamiento en CDN_URL, por lo que estoy tratando de utilizar el token de inyección APP_BASE_HREF como se describe en la documentación de Angular.

Sin embargo, sin importar cómo configure el token de inyección, siempre obtengo un comportamiento indeseado:

{ provide: APP_BASE_HREF, useValue: ${environment.BASE_URL}/ }
Resultado al navegar a www.domain.de/subpath/ -> www.domain.de/landing-page
{ provide: APP_BASE_HREF, useValue: ${environment.BASE_URL}/subpath }
Resultado al navegar a www.domain.de/subpath/ -> www.domain.de/subpath/subpath/landing-page

El resultado DESEADO sería: www.domain.de/subpath/ -> www.domain.de/subpath/landing-page

Anteriormente tenía una configuración que usaba ng build --configuration=${ENV} --deploy-url=${CDN_URL} --base-href="/subpath/", pero deploy-url está en desuso y solo carga scripts desde el CDN pero no recursos.

¿Me falta algo o simplemente no se puede lograr lo que quiero con este enfoque simple?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el resultado deseado de www.domain.de/subpath/ -> www.domain.de/subpath/landing-page no se puede lograr con la configuración actual utilizando ng build --configuration=${ENV} --base-href=${CDN_URL} y el Token de Inyección de Dependencia APP_BASE_HREF.

    Una solución alternativa sería utilizar ng build --prod --deploy-url=${CDN_URL}/subpath/. Este comando construirá la aplicación con la opción deploy-url, que indica a Angular cargar recursos desde la URL especificada en tiempo de ejecución. La bandera --prod también optimizará la construcción para producción.

    Esto garantizará que tanto los scripts como los activos se carguen desde el CDN y que la ruta subpath sea manejada correctamente por el enrutador de Angular.

    Alternativamente, si deseas tener más control sobre cómo se cargan tus activos, podrías utilizar un trabajador de servicio para cachear y servir tus activos. Esto se puede hacer utilizando el paquete @angular/service-worker, y hay muchos tutoriales disponibles en línea sobre cómo configurarlo.

    En general, la conclusión clave es que si bien el Token de Inyección de Dependencia APP_BASE_HREF puede ser útil para manejar enrutamiento en algunos escenarios, puede no ser la mejor opción para configuraciones más complejas que involucren CDNs y subdominios.

Comments are closed.