首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack和angular2动态加载模块

webpack和angular2动态加载模块
EN

Stack Overflow用户
提问于 2016-08-18 18:35:35
回答 2查看 1.5K关注 0票数 1

我有一个angular2应用程序结构,有4个子应用程序,需要一些普通的configurations.These子应用程序相互独立。我使用webpack进行动态加载和代码拆分。一旦从.ts文件中转换出来,每个子应用程序都会有自己的js文件。我想将js文件分别绑定到浏览器客户端加载子应用程序。

例如。

App-1 ===> app1.js

App-2 ===> app2.js

App-3 ===> app3.js

App-4 ===> app4.js

现在,如果浏览器客户端想要加载App-1,那么只有app1.js会捆绑并发送到客户端。,这将通过不加载不必要的js模块来提高应用程序的性能。

有没有办法用webpack来达到同样的目的呢?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-01 10:53:49

只有模块才能以角度来延迟加载(按需)。因此,您必须在ore上捆绑更多的组件,这些组件应该按需加载(延迟加载)在模块中。

参见这里的示例模块:

代码语言:javascript
复制
import { NgModule, Component} from '@angular/core';
import { CommonModule }  from '@angular/common';
import { Routes, RouterModule } from '@angular/router';

import { Ng2BootstrapModule } from 'ng2-bootstrap/ng2-bootstrap';

import { POIListeComponent }      from   './poiliste';


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


@NgModule({
    imports: [CommonModule, Ng2BootstrapModule, RouterModule.forChild(routes)],
    declarations: [POIListeComponent]
})

export class myPOIListeModule { } 

要使它自动加载,您必须提供如下路由定义:

代码语言:javascript
复制
export const AppRoutes: Routes = [
      {
        path:       'poiliste',
        loadChildren: () => System.import('./modules/poiliste/poiliste.module').then(m => m.POIListeModule)
    }
];

仅此而已,至少在使用webpack的时候。在运行项目(构建)时,您可以看到webpack为每个延迟加载的模块生成的“块”。

票数 1
EN

Stack Overflow用户

发布于 2017-01-01 10:43:32

您需要通过为每个AppModule在webpack配置中创建一个条目,将代码分成不同的包。然后,当使用loadChildren路由到它们时,您可以动态加载它们。

下面是如何创建一个新条目:How do I do code splitting with webpack on angular 2 app?

下面是如何动态加载模块:https://angular-2-training-book.rangle.io/handout/modules/lazy-loading-module.html

希望这就是你的意思

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39025271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档