У меня есть основной модуль с подмодулями, изначально я хотел, чтобы эти модули были загружены, поэтому я сделал:
Попытка 1 – быстрая загрузка
import {DashboardModule} from './module/dashboard/dashboard.module';
export const _dashboardModule = () => DashboardModule;
export const routes: Routes = [
{
path: '',
children: [
{
path: 'dashboard',
loadChildren: _dashboardModule
}
]
}
];
У меня это работало нормально, пока я не начал собирать сборку продукта с компиляцией aot. В этот момент я сталкиваюсь с проблемой, которая упоминается здесь: https://github.com/angular/angular-cli/issues/4192
2-я попытка – отложенная загрузка
Основываясь на билете, который я связал выше, я начинаю использовать строковые пути для модулей, например.
loadChildren: './path/to/module/dashboard.module#DashboardModule'
которые генерируют отдельный пакет для каждого модуля. Для сборки я использовал команду angular-cli
ng build --output-path=../my/ouput/path --prod --aot --output-hashing none --vendor-chunk
Поскольку мое приложение является частью огромного существующего приложения, я не могу использовать сгенерированный файл index.html
, но я использую файл .ftl
, в котором я указываю, откуда должны быть загружены все скрипты, например:
<body>
<my-app></my-app>
<script src="<@versionedUri src="${base}/path/to/file/runtime.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/polyfills.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/styles.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/vendor.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/main.js"/>"></script>
</body>
И это проблема, если вы пытаетесь отложить загрузку, потому что выходные файлы моей сборки находятся в другой папке, а мой файл .ftl
, который я использую вместо index.html
, проблема заключается в том, что когда вы открываете приложение в браузере, оно пытается загрузить фрагменты из той же папки, где находится .ftl
расположены, и их там нет.
Каковы мои вопросы:
- Есть ли способ указать путь для файлов кусков?
- Или есть какой-то другой способ загрузить модуль без импорта дочерних маршрутов и использовать их, например:
children: dashboardRoutes