Как я могу загрузить только один модуль из библиотеки Angular вместо всех модулей

Я создал библиотеку angular и создал в ней два модуля с именами Admin и Client. В каждом модуле у меня одна услуга.

lib
   admin
      admin.service.ts
      amdin.module.ts
   client
      client.service.ts
      client.module.ts
public-api.ts 

Содержимое public-api.ts:

export * from './lib/admin/admin.module';
export * from './lib/admin/admin.service';

export * from './lib/admin/client.module';
export * from './lib/client/client.service';

Потом:

ng build core

Таким образом, если я импортирую AdminModule в AppModule, как показано ниже:

import { AdminModlue } from 'core';

Почему Angular загружает AdminModule и ClientModuel и их службы, в то время как он должен загружать только AdminModule?

Если мы проверим вкладку «Сеть» в нашем браузере, мы увидим main.js.

Как загрузить только AdminModule?


person Community    schedule 20.06.2020    source источник
comment
Почему вы не создали отдельную библиотеку для каждого из модулей?   -  person R. Richards    schedule 20.06.2020
comment
@Р. Ричардс - потому что у меня много разделов, и невозможно создать одну библиотеку для каждого, а затем некоторые разделы большие, я хочу разделить их на несколько модулей в их библиотеке, чтобы иметь идеальную производительность при их загрузке   -  person    schedule 20.06.2020


Ответы (2)


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

Некоторые ссылки:

https://angular.io/guide/lazy-loading-ngmodules

https://khalilstemmler.com/articles/typescript-domain-driven-design/chain-business-logic-domain-events/

https://medium.com/angular-in-depth/angular-code-splitting-or-how-to-share-components-between-lazy-modules-432c755e389c

https://blog.bitsrc.io/boost-angulars-performance-by-lazy-loading-your-modules-ca7abd1e2304

person Juan Antonio    schedule 20.06.2020

Не вызывайте какие-либо компоненты модуля в модуле маршрутизации (app-routing-module.ts).

Просто позвоните по методу loadChildren. Вы также можете выполнить поиск по запросу отложенная загрузка.

const routes: Routes = [
    { path: 'login', loadChildren: './login/login.module#LoginModule' },
];
person kk4You    schedule 20.06.2020