Изменяет ли —deploy-url базовый URL динамически, если приложение Angular обслуживается с CDN?

#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/ ? Но, судя по вашему ответу, так и будет, поэтому я благодарен вам за разъяснение этого для меня. Спасибо! 🙂