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

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

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

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


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


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


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


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


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



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


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


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


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


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


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

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

目录
相关文章
|
6月前
|
JavaScript
Vue 项目中实现在所有页面固定一个全局对话栏组件
Vue 项目中实现在所有页面固定一个全局对话栏组件
64 0
|
6月前
|
Web App开发 小程序 Android开发
Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件
Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件
171 0
|
2月前
|
前端开发 PHP
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
本文介绍了ThinkPHP6中实现模板布局的三种方式:全局配置方式、模板标签方式和动态方法布局,并通过示例代码展示了如何在项目中应用这些布局方式。
ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局
|
4月前
|
JavaScript 小程序 前端开发
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
【微信小程序-原生开发】实用教程04-启动/欢迎/首屏广告页(含倒计时、添加文字、rpx、定义变量和函数、读取变量、修改变量、wx.reLaunch 页面跳转、生命周期 onReady等)
140 0
|
4月前
|
小程序 JavaScript 前端开发
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
144 0
|
4月前
|
JavaScript
vue【解决方案】页面/路由跳转后,滚动条消失,页面无法滚动
vue【解决方案】页面/路由跳转后,滚动条消失,页面无法滚动
183 0
|
5月前
|
JavaScript 前端开发
技术心得:后台静态弹出窗口
技术心得:后台静态弹出窗口
29 0
|
6月前
|
缓存 JavaScript
js_单例模式制作无限弹窗(3s内销毁)
js_单例模式制作无限弹窗(3s内销毁)
50 0
|
6月前
|
小程序 IDE TensorFlow
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
【社区每周】插件开发支持“静态懒加载”模式;小程序新增“占位组件”(2022年5月第三期)
46 0
|
6月前
|
数据库
Uniapp 横向滚动抽奖页面 组件 引用即可 全端
Uniapp 横向滚动抽奖页面 组件 引用即可 全端
201 0