静态懒加载+占位组件,让页面打开“快人一步”

简介: 静态懒加载+占位组件,让页面打开“快人一步”

支付宝开发者日讲师小翊曾介绍了两项小程序开发新能力:插件静态懒加载以及占位组件。今天,我们将邀请小翊来深入讲解一下这两项新能力——对开发者而言有何价值,如何使用以及接入过程中的注意事项。

学会偷“懒”,提升页面打开速度


小翊:聊“静态懒加载”的产品价值前,需要先回顾一下插件加载的两种方式:


① 静态加载:也就是让小程序包和插件代码包一起下载,如果使用插件数量过多,会影响启动性能,并且加载过程任何一个包下载失败,都会导致小程序无法启动,这是静态加载的缺点。


② 动态加载:对此我们推出动态加载方式,让部分关键插件可以和小程序包一起下载,另一些则在使用时再动态进行下载,由此优化了页面加载体验,但动态加载的开发体验不好,代码逻辑复杂。


我们想,是否有将二者优点结合的方式,“静态懒加载”应运而生。


“静态懒加载”的产品价值是:在静态加载的较为简单的配置方式下,也能实现异步加载功能,提升页面加载效率。



具体来说,通过“静态懒加载”功能,我们可以将所有的插件都后置加载,打开页面时只要下载小程序本体的代码包即可。


同时,开发者也可以配置指定插件的预加载,提前下载插件包,在实际使用时体感更好。


如果你没有配置预加载,只是在静态插件声明的基础上开启了懒加载,那么就会在实际使用到插件时,自动下载插件包。


由此一来,哪些插件应提前加载,哪些用到时再下载,都由开发者根据业务情况决定。


就好比现在很火的新能源汽车,你可以选择手动驾驶,在“关键路段”由自己自定义操作,也可以选择在安全性高,不紧要的路段开启“自动驾驶”,交给机器来判断、运行,增加了插件加载的灵活程度。


配置方式:在现有静态声明基础上,新增 lazy 标识以及preloadRule字段即可,代码如下:


{
  "plugins": {
    "lazyPlugin": {
      "lazy": true, // 开启懒加载模式
      "version": "*", // 目前只支持设置 * ,自动选择版本
      "provider": "2021003126623373"
   }
 },  
 // 配置懒加载插件预加载
  "preloadRule": {
    "pages/index/index": {
      "network": "all",
      "plugins": [
        "lazyPlugin"
      ]
    }
  }
}


同时,各位开发者可在“支付宝开发助手”小程序中找到“小程序官方示例”体验使用了“静态懒加载”的小程序。



打开路径:扫描下方二维码或上支付宝搜“开发助手”。



自动检测,“占”据先机


说完静态懒加载,开发者肯定会有疑惑:“静态懒加载”模式下,当插件还未下载完成时,页面上该如何显示?


针对这个问题,我们推出了“占位组件”,“静态懒加载”和“占位组件”组合使用的优势在于:


① 可以在插件未下载完成时,用占位组件内容代替渲染。


②  使用方式比动态加载更加简单易用:上述问题在动态加载模式中也会出现,一般处理办法是使用components.is的组件辅助渲染,同时需要开发者自己定义的标记位来说明插件是否加载完成,当加载完成后,把标记位标为true,才是真正完成插件组件的渲染。


这种模式中,标记位只对当前页面生效,如果多个页面都使用了相同插件组件,需要多次重复这一过程,非常繁琐。



而通过“占位组件”,框架就会在渲染到插件组件时,自动检测插件是否下载完成,如果没有下载完成,则用占位组件的内容来填充,然后由框架来发起插件的下载请求。


配置方法:只要在usingcomponents里声明插件组件的同时,声明占位组件,并且在componentplaceholder的属性里做一个关联即可。代码如下:


{
  "usingComponents": {
    "lazy-plugin-hello": "plugin://lazyPlugin/hello",
    "hello": "/components/hello"
  },
  "componentPlaceholder": {
    "lazy-plugin-hello": "hello"
  }
}


我们希望这些新特性,可以让插件使用更加简单,提升大家的开发体验。


注意事项


最后,想使用以上能力有一些固定的限制:


  • 小程序基础库 >= 2.7.18
  • IDE版本 >= 3.0.0
  • 想使用预加载功能,需要支付宝版本 >= 10.2.63 才会生效

以上就是插件静态懒加载以及占位组件的解读,各位开发者有相关问题可在下方回帖,或在小程序“支付宝开发助手”里提出。

目录
相关文章
|
Android开发 开发者
Android基础知识:什么是Intent?有哪些类型的Intent?
Android基础知识:什么是Intent?有哪些类型的Intent?
1435 0
|
SQL 网络协议 程序员
计算机网络体系结构图解
计算机网络体系结构图解
2762 0
|
6月前
|
SQL 数据采集 存储
六、Hive 分桶
在 Hive 的世界里,除了常见的分区,分桶也是一项非常实用的数据优化方式。它能帮助我们将数据按某个字段均匀划分到多个“桶”中,不仅能提升大表连接的效率,还特别适合做数据抽样和精细管理。本文将带你一步步了解分桶表的创建方法、数据加载过程和常见应用场景,配有丰富示例和练习题,帮助你在实战中轻松掌握这项技能。
575 7
|
消息中间件 数据挖掘 程序员
【建议收藏】高并发下的分布式事务:如何选择最优方案?
本文介绍了分布式事务的三种常见解决方案。在分布式系统中,事务处理变得复杂,需确保ACID特性。TCC(Try-Confirm-Cancel)方案适用于严格资金要求的场景,如银行转账,通过预留、确认和取消步骤确保一致性。可靠消息最终一致性方案适合一致性要求较低的场景,如电商积分处理,通过消息中间件实现最终一致性。最大努力通知方案则用于允许不一致的场景,如数据分析,通过重复通知尽可能达成一致性。选择合适的方案取决于具体应用场景。
891 5
|
9月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
运维 Kubernetes 安全
推荐3个开源好用的堡垒机
【7月更文挑战第11天】
6300 0
推荐3个开源好用的堡垒机
|
JavaScript Java CDN
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
本文提供了Vue 3从入门到精通的完整教程,涵盖了创建Vue应用、通过CDN使用Vue、定义网站以及使用ES模块构建版本的步骤和示例代码。
11122 1
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
|
机器学习/深度学习 人工智能 并行计算
GPU 和 CPU 处理器的架构
CPU(中央处理器)和 GPU(图形处理单元)是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。
1172 1
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
736 1
|
安全 机器人 程序员
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
3525 2