浅谈Angular2 模块懒加载的方法


Posted in Javascript onOctober 04, 2017

当项目变得复杂庞大以后,如果所有页面都在一个模块里,就会出现首页加载慢的问题,因为首页就已经把整个项目加载进来了。所以,很有必要根据业务将不同的功能分模块,以便Angular2按需加载,提升用户体验。

下面的例子是将首页放到home模块里,访问/home时加载home模块内容,仅供学习懒加载,其实首页访问路径应该是/

先看项目文件结构:

浅谈Angular2 模块懒加载的方法

home模块放到src/app/home目录下,里面的home目录是home组件。

home模块有单独的定义和路由(home.module.ts,home-routing.module.ts)

创建HOME模块和HOME组件:

cd src/app/
mkdir home
cd home
ng g module home
ng g component home

创建HOME模块的路由配置模块

创建 home-routing.module.ts:

import {Routes, RouterModule} from "@angular/router";
import {HomeComponent} from "./home/home.component";
import {NgModule} from "@angular/core";

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

@NgModule({
 imports:[RouterModule.forChild(routes)],
 exports:[RouterModule],
 providers:[]

})
export class HomeRoutingModule{}

模块下的页面都可以单独在该模块自己的的路由配置模块上配置,而不用在app-routing.module.ts里配置,注意RouterModule.forChild(routes)

home.module.ts导入路由模块:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HomeComponent } from './home/home.component';
import {HomeRoutingModule} from "./home-routing.module";

@NgModule({
 imports: [
  CommonModule,
  HomeRoutingModule
 ],
 declarations: [HomeComponent]
})
export class HomeModule { }

在app-routing.module.ts配置路由:

import {NgModule} from "@angular/core";
import {Routes, RouterModule} from "@angular/router";
import {UserListComponent} from "./user/user-list/user-list.component";
import {UserDetailComponent} from "./user/user-detail/user-detail.component";
import {RxjsComponent} from "./rxjs/rxjs.component";
import {UserEditComponent} from "./user/user-edit/user-edit.component";
import {environment} from "../environments/environment";

const routes: Routes = [
 {
  path:'home',
  loadChildren:'app/home/home.module#HomeModule'
 }

];

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

配置home路径,使用loadChildren加载home模块

完成后打开chrome的开发者工具,切到Network,看看不同的页面是不是加载了不同的文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
May 22 Javascript
JqGrid web打印实现代码
May 31 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
Sep 09 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
Sep 24 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
微信小程序 自定义弹窗实现过程(附代码)
Dec 05 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
vue项目开启Gzip压缩和性能优化操作
Oct 26 Javascript
浅谈angular2路由预加载策略
Oct 04 #Javascript
浅谈Angular路由复用策略
Oct 04 #Javascript
React-Native之定时器Timer的实现代码
Oct 04 #Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 #Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 #Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
Oct 01 #Javascript
原生js封装运动框架的示例讲解
Oct 01 #Javascript
You might like
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
JavaScript中的undefined学习总结
2013/11/30 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
Python中无限循环需要什么条件
2020/05/27 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
您的网上新华书店:文轩网
2016/08/24 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
国富论读书笔记
2015/06/26 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书