基于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中的数学函数集合
May 08 Javascript
JavaScript的面向对象方法以及差别
Mar 31 Javascript
学习ExtJS Column布局
Oct 08 Javascript
Javascript跨域请求的4种解决方式
Mar 17 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
JavaScript数组常用方法
Mar 02 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
Mar 08 Javascript
如何根据业务封装自己的功能组件
Apr 19 Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 Javascript
微信小程序实现禁止分享代码实例
Oct 19 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 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
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
重新认识php array_merge函数
2014/08/31 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
linux下python使用sendmail发送邮件
2018/05/22 Python
多个应用共存的Django配置方法
2018/05/30 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python将字母转化为数字实例方法
2019/10/04 Python
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
怎么写好自荐信
2013/10/30 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
python缺失值填充方法示例代码
2022/12/24 Python