浅谈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控制页面链接在新窗口打开具体方法
Aug 16 Javascript
基于Jquery实现表单验证
Jul 20 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
BootStrap selectpicker后台动态绑定数据
Jun 01 Javascript
Vue中封装input组件的实例详解
Oct 17 Javascript
vue移动端路由切换实例分析
May 14 Javascript
Angular(5.2->6.1)升级小结
Dec 27 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
Apr 15 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python+pygame实现坦克大战
2019/09/10 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
工作证明范本(2篇)
2014/09/14 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
MySQL基于索引的压力测试的实现
2021/11/07 MySQL