基于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 相关文章推荐
JS trim去空格的最佳实践
Oct 30 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
canvas简单快速的实现知乎登录页背景效果
May 08 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 Javascript
Vue源码解读之Component组件注册的实现
Aug 24 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
详解Bootstrap 学习(一)入门
Apr 12 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
JS性能优化实现方法及优点进行
Aug 30 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
linux下 C语言对 php 扩展
2008/12/14 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
js实现登录与注册界面
2017/11/01 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
如何通过python实现人脸识别验证
2020/01/17 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
超市促销活动方案
2014/03/05 职场文书
团代会主持词
2014/04/02 职场文书
相亲大会策划方案
2014/06/05 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
Selenium浏览器自动化如何上传文件
2022/04/06 Python