浅谈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 相关文章推荐
js 编程笔记 无名函数
Jun 28 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
Aug 23 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
在 Node.js 中使用 async 函数的方法
Nov 17 Javascript
详解 vue better-scroll滚动插件排坑
Feb 08 Javascript
vue keep-alive请求数据的方法示例
May 16 Javascript
详解js实时获取并显示当前时间的方法
May 10 Javascript
js实现滑动滑块验证登录
Jul 24 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反射机制用法实例
2014/08/28 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
动态加载js的几种方法
2006/10/23 Javascript
javascript编程起步(第四课)
2007/01/10 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
python迭代器与生成器详解
2016/03/10 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
Pycharm中如何关掉python console
2020/10/27 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
公司财务工作总结的自我评价
2013/11/23 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
python图片灰度化处理的几种方法
2021/06/23 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python
redis lua限流算法实现示例
2022/07/15 Redis