基于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 相关文章推荐
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
May 17 Javascript
点击进行复制的JS代码实例
Aug 23 Javascript
href下载文件根据id取url并下载
May 28 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
js选项卡的制作方法
Jan 23 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 Javascript
JS删除对象中某一属性案例详解
Sep 08 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
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python组合无重复三位数的实例
2018/11/13 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
加薪申请报告范本
2015/05/15 职场文书
2015大学迎新标语
2015/07/16 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers