浅谈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 相关文章推荐
给Function做的OOP扩展
May 07 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
JavaScript移除数组内重复元素的方法
Mar 18 Javascript
jquery对象访问是什么及使用方法介绍
May 03 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
微信小程序实现文字跑马灯效果
May 26 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 Javascript
微信小程序实现文字从右向左无限滚动
Nov 18 Javascript
详解vue-property-decorator使用手册
Jul 29 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支持时的替代方案
2006/10/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
看了就知道什么是JSON
2007/12/09 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
python实现图片批量剪切示例
2014/03/25 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python如何进行矩阵运算
2020/06/05 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
百思买美国官网:Best Buy
2016/07/28 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
白血病捐款倡议书
2014/05/14 职场文书
大学英语专业求职信
2014/06/21 职场文书
小学体育课教学反思
2016/02/16 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL