9月6日 - 9月20日,我们发起 分包异步化 有奖调研活动。在此期间,我们收到了开发者朋友们的热切反馈。每一条对分包异步化功能的期盼、建议、吐槽我们都认真看过。同时大家也分享了自己对新能力的疑问。微信团队整理出以下常见问题及解决方法,让大家更高效地应用新能力!
• • 分包异步化常见疑问 • •
Q:基础库版本低于 2.10.4 可以使用分包异步化吗?A:可以,通过 js 判断基础库版本号来兼容使用跨分包方法。但是跨分包组件可能导致低版本出现白屏,因此不建议使用。A:小程序支持 分包预下载 能力,配置 app.json 即可。Q:能否不使用 require.async 异步接口,直接使用原来的同步接口?A:不能,进行 require 的时候,分包还没有下载,而下载必然需要时间;为了避免将 js 直接挂起等待网络,只能使用异步接口。A:可以,基于 require.async 触发其他分包的下载原理,先调用 require.async 进行目标分包,然后调用接口读取其他分包的文件即可。除此以外,组件需要的文件(例如 <image src="">)也可以用类似方式处理,调用 require.async 后将其他分包的文件路径 setData 写到组件上。A:由于 usingComponents 使用的组件样式和不使用异步分包的情况一样,分包加载完成并替换组件后直接生效;不属于组件的样式暂时无法支持用 @import 触发下载,可以考虑将需要异步的其他分包的样式放在某个空白组件中,设置 styleIsolation: 'shared',通过 usingComponents 来使样式异步生效。Q:异步使用组件或 js 时,是否有分包页面跳转时的加载提示?A:没有,异步分包场景下的分包加载对于用户是静默的。A:暂时不能,理论上一个组件、一个 js 可以做成一个分包,整个小程序也可以做成一个分包(不分包),但是实际上难以找到一种策略满足各种不同的情况。A:占位组件可以配置 properties、响应 observer、配置 class, style 来调整样式。大家可以理解成占位组件和普通组件基本一样,只是在分包加载完成后会被替换掉而已。A:在分包加载过程中,渲染占位组件(不等于不渲染)能够帮助展示组件 slot 的内容,同时能够在加载过程中完成一些定制的展示和逻辑。在简单的情况下,将占位组件设置为 view 等内置组件即可,无需专门写一个组件来做占位组件。后续我们将配合工具新增快速配置或者一键配置的能力,便于开发者设置默认占位组件。A:如上条所说,可以尝试在占位组件上做一些展示或者逻辑来避免加载过程中完全白屏的情况(例如 loading 态、骨架屏)。开发者工具目前有内置 骨架屏 能力,我们也会持续关注骨架屏和异步分包的结合和适配情况。A:在加载分包并展示组件的时候,如果引用一个其他分包的组件,但没有展示(例如 wx:if="{{ false }}"),那么分包是不会加载的。A:我们有计划进行一些配合构建工具的尝试,例如在 dynamic import 或者其他场景配置下自动做异步分包配置,后续能力更新会同步给开发者朋友们。
• • 获奖名单 • •
抽取方式:利用 Excel 中的 RANDBETWEEN 函数进行随机抽取
我们将于 2021 年 9 月 28 日前通过短信联系以上得奖者确定邮寄地址,如一周内未收到回复(即2021/10/05 0点前),视为放弃奖品。如有其他小程序相关问题,可在 微信小程序交流专区 中发帖互动,将有技术专员为大家解答并进行深度交流。再次感谢所有参与本次调研活动的开发者朋友们,我们下次活动再见!阅读原文