基于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据option的value值快速设定初始的selected选项
Aug 13 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
Jan 16 Javascript
js字符串转成JSON
Nov 07 Javascript
JQuery基础语法小结
Feb 27 Javascript
jquery使用经验小结
May 20 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
Node.js中的cluster模块深入解读
Jun 11 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 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得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
浅谈Python中数据解析
2015/05/05 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
创业计划书的写作技巧及要点
2014/01/31 职场文书
检查接待方案
2014/02/27 职场文书
平面设计求职信
2014/03/10 职场文书
物流管理专业求职信
2014/05/29 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
财务会计实训报告
2014/11/05 职场文书
学校安全管理制度
2015/08/06 职场文书
关于的python五子棋的算法
2022/05/02 Python