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

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

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

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


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


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


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


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


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



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


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


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


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


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


配置方式:在现有静态声明基础上,新增 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 才会生效

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

目录
相关文章
|
3月前
|
前端开发 PHP
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
本文介绍了ThinkPHP6中实现模板布局的三种方式:全局配置方式、模板标签方式和动态方法布局,并通过示例代码展示了如何在项目中应用这些布局方式。
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
|
5月前
|
JavaScript 小程序 前端开发
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
160 0
|
5月前
|
小程序 JavaScript 前端开发
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
177 0
|
6月前
|
JavaScript 前端开发
技术心得:后台静态弹出窗口
技术心得:后台静态弹出窗口
36 0
|
7月前
|
小程序 IDE TensorFlow
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
52 0
|
JavaScript
fastadmin 自定义 按钮 动态切换数据 TAB切换
fastadmin 自定义 按钮 动态切换数据 TAB切换
294 0
|
JavaScript 网络架构
Vue实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案2
Vue实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案2
192 0
|
前端开发 开发者 索引
轮播图-动态响应轮播图-动态渲染 |学习笔记
快速学习 轮播图-动态响应轮播图-动态渲染
轮播图-动态响应轮播图-动态渲染  |学习笔记
|
JavaScript 前端开发
中高级前端应该必会,js实现事件委托代理、切换样式、元素获取相对于文档位置等
1、介绍   随着组件开发大流行,现在三大框架已经基本占领了整个前端。   这时候,我们要是引入一个 jq 是不是先得你的项目非常臃肿,jq 也很不适合。   这个时候,你就需要来增加你 js 的功底。
1496 0
|
前端开发 容器
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机
原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机       在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
831 0