#angular #webpack #angular-cli #cdn
Вопрос:
У нас есть угловое приложение, которое мы хотим создать один раз и развернуть в нескольких средах. Мы хотим обслуживать это приложение через CDN, которые мы настроили для каждой среды, базовый URL-адрес для этих CDN неизвестен во время сборки и должен быть установлен динамически в зависимости от среды во время выполнения. Ресурсы сборки развертываются в следующей подпапке «dist» на CDN.
--{root}
|--static
|--dist
Мы предоставляем --deploy-url=static/dist
аргумент angular CLI во время сборки.
теперь, если URL-адрес для нашей среды https://qa.example.com
и базовый URL-адрес для CDN для этой среды https://qa-cdn.example.com
Предполагая, что мы обслужили начальные пакеты, т. е. main.js
и runtime.js
успешно из CDN, т. е. https://qa-cdn.example.com/static/dist/
. Будут ли загружаться ленивые фрагменты и другие ресурсы, такие как изображения, также с CDN? т. Е. при поиске этих ленивых фрагментов и ресурсов Webpack разрешит URL-адрес развертывания быть https://qa-cdn.example.com/static/dist/
или https://qa.example.com/static/dist/
?
P.S. — К сожалению, наше приложение не является СПА-салоном, и установка или изменение <base />
тега не является опцией (если это вообще может нам помочь).
Ответ №1:
Мое понимание (и опыт) заключается в том, что значение --deploy-url
должно быть установлено на URL cdn. Лениво загруженные модули, ресурсы и т.д. Также будут загружаться отсюда. Базовый URL-адрес (base-href) не изменится, если вы не укажете, каким он должен быть во время сборки в качестве флага или в angular.json
файле
Есть также --base-href
флаг, который вы можете установить во время сборки…. который, по-видимому static/dist
, приведен в вашем примере (но здесь мне это кажется неправильным).
Комментарии:
1. Спасибо за ваш ответ, да, я знаю о
background-image: url(../../assets/img.png)
том, что во время сборки нами манипулируют при предоставлении--deploy-url
, и это не проблема для нас. Единственное, в чем я не был уверен, так это в том, будет ли окончательный URL-адрес (во время выполнения)--deploy-url
, указанный выше в вопросе, разрешенhttps://qa-cdn.example.com/static/dist/
вместоhttps://qa.example.com/static/dist/
? Но, судя по вашему ответу, так и будет, поэтому я благодарен вам за разъяснение этого для меня. Спасибо! 🙂