Экспорт разных объектов из одного файла в разные NgModules - PullRequest
1 голос
/ 26 апреля 2019

Справочная информация:

Я занимаюсь разработкой приложения, которое будет использовать механизм отложенной загрузки angular (я использую 7.2.0).У меня есть несколько feature-routing.module.ts, которые обрабатывают маршрутизацию упомянутых лениво загруженных модулей.

На стороне AppModule я хотел бы использовать описанный шаблон здесь ;то есть импортировать части массива маршрутов (путь js) из другого файла, который экспортирует (js) фрагмент конфигурации (вместо того, чтобы создавать много модулей маршрутизации, которые не нужны - никаких специальных провайдеров или сервисов на подстроки -).

Вопрос: Что произойдет с точки зрения комплектации, если я поместу часть конфигурации маршрута приложения, касающуюся функции, в тот же файл, что и модуль маршрутизации лениво загруженного модуля?

file экспортирует модуль маршрутизации, используемый только ленивым функциональным модулем, а также экспортирует некоторое const, которое используется только модулем app-routing.Итак, будет ли весь файл (следовательно, включая ОБА и модуль маршрутизации функций и другие объекты) ДВАЖДЫ: один раз в модуль приложения и один раз в функцию?Или ng build будет настолько умным, чтобы связывать только ОДИН РАЗ с модулем приложения и только ОДИН РАЗ модуль маршрутизации функций с модулем функций?

Мне кажется, это хорошая идея, потому что все проблемы маршрутизации конкретной функции будут в одном файле, и любые соответствующие модули будут использовать его оттуда.Я отчаянно пытаюсь минимизировать количество файлов, потому что оно выходит из-под контроля.

Например, user-routing.module.ts:

// This one is meant for the AppRoutingModule, and should only be bundled with that.
export const user_routes: Routes = [
    {
        path: 'users',
        loadChildren: './users/users.module#UsersModule'
    }
// ...
];
// The rest should only be bundled with the UsersModule and NOT with the app module
const routes: Routes = [
// ...
];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UsersRoutingModule { }

1 Ответ

0 голосов
/ 26 апреля 2019

Вопрос: Что произойдет с точки зрения комплектации, если я помещу часть конфигурации маршрута приложения, касающуюся функции, в тот же файл, что и модуль маршрутизации лениво загруженного модуля?

Нет проблем со сборкой, если хранить их вместе в одном модуле.

Итак, будет ли весь файл (следовательно, включая ОБА и модуль маршрутизации объектов и другие объекты) ДВАЖДЫ: один раз в модуль приложения и один раз в функцию?

Операторы импорта TypeScript сопоставляются с одиночной ссылкой в пакет посредством WebPack. Поэтому вы не можете дублировать исходный код TypeScript, импортируя его несколько раз.

Или ng build будет настолько умен, чтобы связывать только ОДИН РАЗ с модулем приложения и только ОДИН РАЗ модуль маршрутизации функций с функциональным модулем?

Да, он будет упакован только один раз, потому что так его обрабатывает TypeScript.

Посмотрите на Инспектора угловых пучков. Эти инструменты визуализировали, что находится внутри ваших пакетов, что они используют и насколько они велики. Это прояснит ситуацию.

https://coryrylan.com/blog/analyzing-bundle-size-with-the-angular-cli-and-webpack

...