Angular 7-将应用程序拆分为模块并延迟加载

时间:2018-12-03 14:35:08

标签: angular7

这是一个描述性问题。我已阅读文档并遇到一些概念性问题:-

1)正在拆分应用程序(用于改进更快的加载和捆绑以及    性能)需要延迟加载的实现?

2)当我正在加载如下组件时:-

   const componentRef = this.componentFactoryResolver.resolveComponentFactory(cmptName).create(this.injector);
        this.appRef.attachView(componentRef.hostView);
        const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;
        document.querySelector('.mydynamicDiv').appendChild(domElem);

通过在不同的不同组件中调用此类onclick组件,需要将应用程序拆分为几个模块(将各个组件保留在单独的模块中)。当前,应用程序只有一个app.module.tsapp.routing.ts。拆分为模块是否可以提高性能。怎么样?

3)我们是否还需要在routing.ts中实现延迟加载路由。

 {
    path: '',
    component: MainLayoutComponent,
    children: [
        { path: '', redirectTo: 'login', pathMatch: 'full' },
        { path: 'login', component: PrgLoginComponent },
        { path: 'login/:token/:id', component: PrgLoginComponent },
 { path: 'calendar', loadChildren: './prg-calendar/prg-calendar.module#PrgCalendarModule', canActivate: [PrgAuthGuardService] },
        { path: 'home', loadChildren: './prg-home/prg-home.module#PrgHomeModule', canActivate: [PrgAuthGuardService] }
    ]
}

但是,是否有必要像上面那样实现上面的延迟加载路由,因为我永远都不会路由到calendar上面的using route这样的模块?

因此,仅使用延迟加载的路由将应用程序分为几个模块(其中一些模块将永远无法通过路由访问,但会如上述第2点那样直接调用),这将提高性能并减小捆绑大小??

请记住上述场景,我应该将我的应用仅拆分为几个模块。还是必须使用loadchildren进行延迟加载才能实现该目标??

注意:-我想更改应用程序视图的路由,就像第一次加载应用程序一样,我想保持网址类似-www.abc.com/home,即/home仅针对每个视图进行路由

有什么建议值得赞赏吗?

1 个答案:

答案 0 :(得分:-1)

您可以为PrgCalendarModule发布代码吗?

日历模块中是否有路线?

const routes: Routes = [
  {
    path: '',
    component: CalendarComponent
  }
];

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

在PrgCalendarModule中

...
@NgModule({
imports: [
PrgCalendarModuleRoutingModule
]
...

从您的描述来看,其他所有内容都很好。