0

我正在使用 Angular7,并且我正在使用新语法,即 loadChildren 用于延迟加载模块。但是当我提供我的应用程序并检查浏览器时,我发现它没有创建任何块。

在此处输入图像描述

以下是我的应用程序路由

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const routes: Routes = [
  { path: '', loadChildren: './layout/layout.module#LayoutModule' },
  { path: 'auth', loadChildren: './auth/auth.module#AuthModule' },
  { path: 'not-found', loadChildren: './not-found/not-found.module#NotFoundModule' },
  { path: '**', redirectTo: 'not-found' }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

下面是我的应用程序模块我

mport { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

// imports for internationalization i18n
import { HttpClientModule } from '@angular/common/http';
import { LanguageTranslationModule } from './language-translation/language-translation.module';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    LanguageTranslationModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {
}
4

2 回答 2

0

为什么要创建延迟加载的布局模块?延迟加载功能模块的整个想法不是在后台或请求时预加载或加载其他功能模块时快速向用户显示第一页吗?

如果您有一个布局模块,那么从一开始您就至少有 3 个请求:1 个用于您的应用程序,一个用于布局,并且很可能一个用于在布局中呈现的页面。

您可能会提高性能以构建预先加载的模块布局,添加到 AppModule 中,然后使用延迟加载功能模块在布局内路由组件。此外,主页应该包含在 AppModule 中,以便快速呈现,而不是等待浏览器下载延迟加载模块来呈现。

顺便说一句:我已经看到,如果我使用由 AppModule 中的功能模块或 AppModule 中包含的组件导出的组件,那么该功能模块将没有自己的块文件。每个延迟加载功能模块应该是自包含的,不应将组件导出到其他模块。如果你这样做,你可能需要更多地打破你的模块,以便能够在模块之间共享一些组件/提供程序。

此外,请小心在功能模块之间共享提供程序,因为您有子注入器,您最终会得到多个单例实例,每个功能模块一个。要共享提供程序,您应该在共享模块中实现 .forRoot 和 .forChild。

于 2020-11-03T16:40:36.090 回答
0

通过惰性创建的块

如图所示,确实创建了块。

并且没有出现未找到的模块,这是正常的。

于 2019-04-30T08:47:48.890 回答