本文分享并演示了在 Ionic 3 框架中如何进行模块的延迟加载(Lazy Load)开发。

在我的实战课程「快速上手Ionic3 多平台开发企业级问答社区」中,因为开发的仿知乎 App 模块间的加载没有使用到延迟加载(懒加载,Lazy Load)的技术,而当有些同学在开发自己的 App 越来越复杂的时候,发现了模块加载的性能问题。

这时就出现了需要将模块延迟加载的需求,而 Ionic 3 的一个特性就是支持延迟加载,而且代码的变动非常小。

为了给各个阶段的同学一个开发演示,本文就直接给大家演示一下 Ionic 3 的模块延迟加载开发。

关于 Ionic 框架学习过程中遇到的各种常见问题,可以参见我从一千多个课程提问中给大家整理出来的常见问题 Q&A 文章。

1. 项目初始化

首先通过 Ionic CLI 新建一个空项目,命令为 ionic start lazyLoad blank

空项目启动后如下图所示。

src/app/app.module.ts 文件中的 declarationsentryComponents 节点下可以看到 Ionic 自动声明了 MyAppHomePage 两个模块。

这样的默认配置方式,就会让所有声明的页面模块在 App 启动时一次加载起来,可能会造成相关的性能问题。

2. 模块的延迟加载

我们首先删除 src/app/app.module.ts 文件中的 HomePage 模块的声明以及调用。

然后在文件 src/pages/home/home.module.ts 中去单独定义 HomePage 模块的声明,代码如下图所示。

并修改 src/pages/home/home.ts 添加 @IonicPage 装饰器的导入与调用,代码如下图所示。

并修改 src/app/app.component.ts 文件中的 rootPage 的定义。

rootPage:any = 'HomePage';

至此,我们就轻松地配置好了 HomePage 模块的延迟加载功能。

3. 测试延迟加载

我们打开 Chrome 的网络监控模板,刷新 App,可以看到 JavaScript 文件的请求与加载。

main.js 文件是整个 App 框架以及相关依赖的打包文件,而 0.js 就是分离后的 HomePage 模块的代码,我们可以看到对应的模块已经在 main.js 之后进行了延迟加载。

而当你的 App 包含非常多页面的时候,你肯定不希望所有的页面模块一次都打包在 main.js 中并一次请求加载进来,所以,延迟加载可以实现「用到哪个页面模块就去加载哪个模块的代码」,可以大大提高 App 的运行性能。

后续的文章我们还将深入探究延迟加载的原理以及更加复杂的应用场景。

Ionic 3 延迟加载(Lazy Load)实战(一)的更多相关文章

  1. Hibernate延迟加载Lazy

    Hibernate延迟加载Lazy 延迟加载(lazy load)又称为懒加载,延迟加载的机制是为了避免一些无谓性能的开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作 如 ...

  2. Lazy Load, 延迟加载图片的 jQuery 插件.

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  3. jQuery延迟加载插件(Lazy Load)详解

    最 新版本的Lazy Load并不能替代你的网页.即便你使用JavaScript移除了图片的src属性,有些现代的浏览器仍然会加载图片.现在你必须修改你的html代 码,使用占位图片作为img标签的s ...

  4. 延迟加载图片的 jQuery 插件:Lazy Load

    网站的速度非常重要,现在有很多网站优化的工具,如 Google 的Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it这个工具对图片进行批量压缩,但是对 ...

  5. Lazy Load 图片延迟加载(转)

    jQuery Lazy Load 图片延迟加载来源 基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载. 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度. ...

  6. jQuery Lazy Load 图片延迟加载

    基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载. 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度. 版本: jQuery v1.4.4+ jQuery ...

  7. Lazy Load, 延迟加载图片的 jQuery 插件 - NeoEase

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  8. about hibernate lazy load and solution

    about hibernate lazy load is that used when loaded again.it can increase efficienty and sava memory. ...

  9. 提示29. 怎样避免延迟加载或Load()阅读器问题

    提示29. 怎样避免延迟加载或Load()阅读器问题 如果你有如下这样的代码: 1 var results = from c in ctx.Customers 2 where c.SalesPerso ...

随机推荐

  1. python格式化字符串format函数

    1. format可以接受无限个的参数,位置可以不按顺序: In [1]: "{} {}".format("hello","world") ...

  2. < meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />的意义

    X-UA-Compatible是神马? X-UA-Compatible是IE8的一个专有<meta>属性,它告诉IE8采用何种IE版本去渲染网页,在html的<head>标签中 ...

  3. 如何用vmware workstation来做虚拟化实验

    前言 以前做用vmare只是简单的实验,但是随着现在虚拟化的兴起,我们的开始要开始虚拟化的实验了. 我们看到有些windows 2012的书上面说用hyper-v来实验,但是hyper-v只能做一些列 ...

  4. Django框架的使用教程--环境的搭建和项目的创建[一]

    Django环境的搭建 Django 常用的命令 # 创建一个名为Django_test子应用 python manage.py startapp Django_test # 生成迁移文件 pytho ...

  5. js实现Mac触摸板双指事件(上/下/左/右/放大/缩小)

    前言 这几天在修复一个web问题时,需要捕获Mac触摸板双指事件(上.下.左.右.放大.缩小),但发现并没有现成的轮子,还是要自己造. 例如:jquery.mousewheel.js(添加跨浏览器的鼠 ...

  6. 阿里八八β阶段Scrum(2/5)

    今日进度 黄梅玲:尝试修复日程界面的不可点击问题 李嘉群:修改数据库,增加写入识别功能临时文本存入的项 张岳:信息抽取算法的编写 叶文滔:尝试侧边栏的信息调用,但因为侧边栏不是单独的活动,调用碰到了困 ...

  7. Java7/8 中 HashMap 和 ConcurrentHashMap的对比和分析

    大家可能平时用HashMap比较多,相对于ConcurrentHashMap 来说并不是很熟悉.ConcurrentHashMap 是 JDK 1.5 添加的新集合,用来保证线程安全性,提升 Map ...

  8. mysql中case的一个例子

    最近遇到一个问题: year amount num 1991 1 1.1 1991 2 1.2 1991 3 1.3 1992 1 2.1 1992 2 2.2 1992 3 3.3 把上面表格的数据 ...

  9. Sketch webView方式插件开发技术总结

    相信大家都对Sketch有一定的了解和认识.除了基础的矢量设计功能以外,插件更是让Sketch保持强大的独门秘籍.Sketch开放了第三方插件接口,设计师可以在几百种的插件中轻松找到适合自己工作方式的 ...

  10. vue中使用baidushare分享到微信无法显示bug解决方案

    最近vue单页面项目中有个页面分享的功能需求,按以往经验,选择了百度开源的baidushare.js 经过一天的挣扎,终于弄清楚了分享到微信后无法显示的原因. 对比分析: 以往成功使用:另写了一个专门 ...