Как мне загрузить только один модуль из библиотеки Angular вместо всех модулей - PullRequest
0 голосов
/ 20 июня 2020

Я создал библиотеку 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?

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вам нужно изучить ленивую загрузку. С его помощью вы можете загружать свои модули приложения, когда они потребуются. Но ваша первая цель - разделить ваше приложение на красивые модули, управляемые доменом, и настроить основную конфигурацию маршрутизации для загрузки с 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

0 голосов
/ 20 июня 2020

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

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

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