浅谈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 add event remove event
Apr 07 Javascript
JavaScript CSS修改学习第六章 拖拽
Feb 19 Javascript
JavaScript事件委托技术实例分析
Feb 06 Javascript
jQuery中noConflict()用法实例分析
Feb 08 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
vue.js实现二级菜单效果
Oct 19 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 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
星际中的相关伤害
2020/03/04 星际争霸
PHP也可以?成Shell Script
2006/10/09 PHP
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
jQuery 联动日历实现代码
2012/05/31 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
实例讲解React 组件
2020/07/07 Javascript
Python 对象中的数据类型
2017/05/13 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
医学专业职业生涯规划范文
2014/02/05 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
开除通知书范本
2015/04/25 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
幸福来敲门观后感
2015/06/04 职场文书
二胎满月酒致辞
2015/07/29 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers