基于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 相关文章推荐
使用firebug进行调试javascript的示例
Dec 16 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
微信小程序  checkbox组件详解及简单实例
Jan 10 Javascript
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 Javascript
模块化react-router配置方法详解
Jun 03 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 Javascript
js 函数性能比较方法
Aug 24 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
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
python 5个实用的技巧
2020/09/27 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
生日宴会主持词
2014/03/20 职场文书
空气的环保标语
2014/06/12 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
美丽人生观后感
2015/06/03 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript