基于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 表单规则集合对象
Jul 21 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
checkbox使用示例
Aug 23 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
JavaScript获取网页支持表单字符集的方法
Apr 02 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
JQuery省市联动效果实现过程详解
May 08 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
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
PHP内核探索:变量概述
2014/01/30 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
vue二级路由设置方法
2018/02/09 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python素数检测的方法
2015/05/11 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
python基于socket函数实现端口扫描
2020/05/28 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
开学典礼演讲稿
2014/05/23 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书