基于angular6.0实现的一个组件懒加载功能示例


Posted in Javascript onApril 12, 2018

我们常常会遇到这样一个问题,当我们使用一个第三方控件库的时候,我们只用到了其中 1 个或某几个组件,会连带一大堆无用的东西,造成体积臃肿不堪。又或者首页用到的组件较多,首页加载速度缓慢,这个时候,我们或许需要加载用户可视范围内用到的组件,随着用户的浏览下拉,我们再去加载这些组件,渐进式加载,渐进式体验,这个时候你或许就用到了本工具所实现的功能。或者一个页面的某些不重要区域,比如第三方广告又或者不重要的元素,可以采用懒加载懒渲染,降低用户首屏等待时间。一切都在用户不知不觉中进行。大大增加用户体验,特别是中大型项目,优化必备!

项目地址github

安装

yarn add iwe7-lazy-load

使用

import { Iwe7LazyLoadModule, LazyComponentsInterface } from 'iwe7-lazy-load';
// 用到的懒加载组件
let lazyComponentsModule: LazyComponentsInterface[] = [
 {
 // 组件的selector
 path: 'lazy-test',
 // 组件的相对地址
 loadChildren: './lazy-test/lazy-test.module#LazyTestModule'
 }
];
@NgModule({
 imports: [Iwe7LazyLoadModule.forRoot(lazyComponentsModule)],
 // 注意加上这些
 schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
})
export class AppModule {}
<div #ele>
 <lazy-test></lazy-test>
</div>
import { LazyLoaderService } from 'iwe7-lazy-load';

@ViewChild('ele') ele: ElementRef;
constructor(
 public lazyLoader: LazyLoaderService,
 public view: ViewContainerRef
) {}

ngOnInit() {
 // 开始渲染懒组件
 this.lazyLoader.init(this.ele.nativeElement, this.view);
}

定义懒加载组件 demo

import { LazyComponentModuleBase } from 'iwe7-lazy-load';
@Component({
 selector: 'lazy-test',
 template: ` i am a lazy`
})
export class LazyTestComponent {}

@NgModule({
 imports: [
 RouterModule.forChild([{
  path: '',
  component: LazyTestComponent
 }])
 ],
 declarations: [LazyTestComponent]
})
export class LazyTestModule extends LazyComponentModuleBase {
 getComponentByName(key: string): Type<any> {
 return LazyTestComponent;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 时间比较实现代码
Oct 28 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
js获取url参数代码实例分享(JS操作URL)
Dec 13 Javascript
整理Javascript流程控制语句学习笔记
Nov 29 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
从源码角度来回答keep-alive组件的缓存原理
Jan 18 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 #Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 #jQuery
Koa项目搭建过程详细记录
Apr 12 #Javascript
React props和state属性的具体使用方法
Apr 12 #Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 #Javascript
关于vue中 $emit的用法详解
Apr 12 #Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 #Javascript
You might like
[转帖]PHP世纪万年历
2006/12/06 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python集合操作方法详解
2020/02/09 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
村级环境卫生整治方案
2014/05/04 职场文书
2014年教师节寄语
2014/08/11 职场文书
上班离岗检讨书
2014/09/10 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
保送生自荐信范文
2015/03/26 职场文书
社会实践心得体会范文
2016/01/14 职场文书
《搭石》教学反思
2016/02/18 职场文书
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python
利用Apache Common将java对象池化的问题
2022/06/16 Servers