基于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 相关文章推荐
jQuery 使用手册(五)
Sep 23 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
探究JavaScript函数式编程的乐趣
Dec 14 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
Feb 03 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
JS控制下拉列表左右选择实例代码
May 08 Javascript
jQuery实现评论模块
Aug 19 jQuery
vue $mount 和 el的区别说明
Sep 11 Javascript
详解 javascript对象创建模式
Oct 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
PHP的SQL注入过程分析
2012/01/06 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
Javascript Math对象
2009/08/13 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
原生js实现照片墙效果
2020/10/13 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
python分布式环境下的限流器的示例
2017/10/26 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python3中列表list合并的四种方法
2019/04/19 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
在django模板中实现超链接配置
2019/08/21 Python
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
美术教师岗位职责
2014/03/18 职场文书
小学生期末评语大全
2014/04/21 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
大学活动总结范文
2014/04/29 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers