浅谈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 - HTML的request类
Jul 15 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
Dec 16 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
Dec 31 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
从源码看angular/material2 中 dialog模块的实现方法
Oct 18 Javascript
webpack多入口文件页面打包配置详解
Jan 09 Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
vue+django实现一对一聊天功能的实例代码
Jul 17 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中关键字interface和implements详解
2017/06/14 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python学生信息管理系统(完整版)
2020/04/05 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
数据库面试要点基本概念
2013/10/31 面试题
幼儿园毕业园长感言
2014/02/24 职场文书
信仰观后感
2015/06/03 职场文书
班级班风口号大全
2015/12/25 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技