根据组件拆分角度应用程序的主JS包

时间:2018-11-27 14:27:41

标签: javascript angular webpack angular-cli angular-components

我开发了一个angular 4 Web应用程序,它包含3个组件,并且都是独立组件。

LoginPage
FormPage
Dashboard

LoginPage和FormPage是小的组件,但是Dashboard是一个很大的模块。

我的问题是我不想在登录页面上下载整个主捆绑包(1.5mb)(页面加载会花费更多时间下载整个内容)。我想在仪表板组件加载时下载与仪表板组件相关的JS文件块。

我正在使用ng-build --prod进行生产构建

是否可以根据组件拆分主包js?我也可以在供应商JS中进行相同的拆分吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Angular路由器loadChildren延迟加载模块。根据用户访问URL,将按需加载其相应模块。

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

const app_routes: Routes = [
  {
    path: 'login',
    loadChildren: 'app/login/login.module#LoginModule'
  },
  {
    path: 'dashboard',
    loadChildren: 'app/dashboard/dashboard.module#DashboardModule'
  },
  { path: '', pathMatch: 'full', redirectTo: '/login' },
  { path: '**', pathMatch: 'full', redirectTo: '/login' }
];

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