浅谈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 相关文章推荐
javascript document.referrer 用法
Apr 30 Javascript
JavaScript 的继承
Oct 01 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
bootstrap paginator分页前后台用法示例
Jun 17 Javascript
js移动端事件基础及常用事件库详解
Aug 15 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
async/await让异步操作同步执行的方法详解
Nov 01 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
PHP session会话的安全性分析
2011/09/08 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
javascript知识点收藏
2007/02/22 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
一道SQL存储过程面试题
2016/10/07 面试题
2014年中班元旦活动方案
2014/02/14 职场文书
机关办公室岗位职责
2014/04/16 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
天河观后感
2015/06/11 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
Java 数组的使用
2022/05/11 Java/Android