基于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 相关文章推荐
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
Dec 21 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 Javascript
jquery实现点击页面回到顶部
Nov 23 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 Javascript
axios post提交formdata的实例
Mar 16 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
详解jenkins自动化部署vue
May 14 Javascript
Node.js从字符串生成文件流的实现方法
Aug 18 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 Javascript
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP教程 变量定义
2009/10/23 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
python实现中文输出的两种方法
2015/05/09 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
元宵节晚会主持人串词
2014/03/25 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis