У меня есть проект Vue / Webpack, который состоит из основного приложения и набора фирменных модулей. Эти модули не просто логотип и тема; они включают в себя набор значений хранилища по умолчанию и определение используемых маршрутов / представлений.
Весь пакет находится в корзине s3, и мы маскируем перенаправление различных URL-адресов, чтобы указать на него.
Когда пользователь попадает на сайт: 1) загружается основное приложение, 2) он просматривает домен, чтобы определить, какой фирменный модуль требуется, и 3) выполняет асинхронный запрос для соответствующего модуля.
Мой код в настоящее время выглядит примерно так:
App.vue
...
.mounted () {
if (this.$route.params.sitename === 'strawberry') {
import(/* webpackChunkName: "strawberry" */ '@/strawberry');
}
else if (this.$route.params.sitename === 'chocolate') {
import(/* webpackChunkName: "chocolate" */ '@/chocolate');
}
else {
import(/* webpackChunkName: "vanilla" */ '@/vanilla');
}
}
В идеале я бы заменил вышеперечисленное на что-то вроде:
...
.mounted () {
import('@/' + this.$route.params.sitename);
}
Но если я не укажу явно все возможные импорты, webpack не скомпилирует эти куски при сборке.
Итак, возможно ли что-то подобное? Есть ли способ дать webpack список файлов без ссылок для его компиляции при сборке? и если да, то как мне ссылаться на них в моем коде? Будет ли оно автоматически совпадать с @/strawberry
с strawberry.chunk
?
Менее важные последующие действия: является ли app.mounting лучшим местом для этого?