浅谈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 相关文章推荐
学习ExtJS border布局
Oct 08 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
jquery+css3问卷答题卡翻页动画效果示例
Oct 26 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
浅谈在node.js进入文件目录的问题
May 13 Javascript
JavaScript对象属性操作实例解析
Feb 04 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
Apr 13 Javascript
JS实现4位随机验证码
Oct 19 Javascript
vue 页面跳转的实现方式
Jan 12 Vue.js
浅谈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实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP session 会话处理函数
2016/06/06 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python中assert用法实例分析
2015/04/30 Python
python计算方程式根的方法
2015/05/07 Python
Python IDLE入门简介
2017/12/08 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
班级聚会策划书
2014/01/16 职场文书
研讨会主持词
2014/04/02 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
音乐剧猫观后感
2015/06/04 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS