基于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 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
JavaScript检查某个function是否是原生代码的方法
Aug 20 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
详解VUE项目中安装和使用vant组件
Apr 28 Javascript
vue使用微信JS-SDK实现分享功能
Aug 23 Javascript
TypeScript中条件类型精读与实践记录
Oct 05 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使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
js资料toString 方法
2007/03/13 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
分享ES6的7个实用技巧
2018/01/18 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
python执行get提交的方法
2015/04/29 Python
Python实现批量下载文件
2015/05/17 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python自省及反射原理实例详解
2020/07/06 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
面试后的英文感谢信
2014/02/01 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
党员创先争优心得体会
2014/09/11 职场文书
员工手册编写范本
2015/05/14 职场文书
寻找成龙观后感
2015/06/12 职场文书
会议主持词结束语
2015/07/03 职场文书