基于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 RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
Apr 23 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
javascript实现3D变换的立体圆圈实例
Aug 06 Javascript
Bootstrap布局方式详解
May 27 Javascript
微信小程序 教程之事件
Oct 18 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 jQuery
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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python字典操作简明总结
2015/04/13 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Django 用户认证组件使用详解
2019/07/23 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
应聘美工求职信
2013/11/07 职场文书
教师应聘个人求职信
2013/12/10 职场文书
企业文化演讲稿
2014/05/20 职场文书
建筑管理专业求职信
2014/07/28 职场文书
创先争优活动个人总结
2015/03/04 职场文书
运动会运动员赞词
2015/07/22 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
一篇文章带你复习java知识点
2021/06/28 Java/Android