基于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 相关文章推荐
OfflineSave离线保存代码再次发布使用说明
May 23 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
加随机数引入脚本不让浏览器读取缓存
Sep 04 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
js判断输入字符串是否为空、空格、null的方法总结
Jun 14 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
js实现模糊匹配功能
Feb 15 Javascript
JavaScript实现修改伪类样式
Nov 27 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
JavaScript简单编程实例学习
Feb 14 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
检测png图片是否完整的php代码
2010/09/06 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php实现简单加入购物车功能
2017/03/07 PHP
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Python数据结构之Array用法实例
2014/10/09 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
小学生家长寄语
2014/04/02 职场文书
完整版商业计划书
2014/09/15 职场文书
台风停课通知
2015/04/24 职场文书
盲山观后感
2015/06/11 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js