基于浏览器生态的优化
- 图片优化:懒加载、图片压缩/裁剪、精灵图、icon、svg
- 代码压缩
- 列表优化:虚拟列表
- ...
基于小程序架构的优化:
受限于小程序架构,做重交互会比较吃力,因为一次交互 渲染层 -> js 层 需要 4 次通信。
解决方案是:
举例:使用 wxs 模块实现滚动交互,自定义滚动条
<wxs module="scroll">
module.exports = { scroll: function (event, ownerInstance) { var scollInstance =
ownerInstance.selectComponent('.scroll') // scoll-view var inkbarInstance =
ownerInstance.selectComponent('.scroll-inkbar') // scoll-view inkbar var width = 343 //
高版本依赖兼容 if(scollInstance.getBoundingClientRect) { width =
scollInstance.getBoundingClientRect().width } var scrollLeft = event.detail.scrollLeft var
scrollWidth = event.detail.scrollWidth - width var rate = scrollLeft / scrollWidth * 50
inkbarInstance.setStyle({ '--left': rate + '%' }) } }
</wxs>
<-- wrapClass className 来自组件props -->
<View class="{{wrapClass}}">
<scroll-view scroll-x bindscroll="{{scroll.scroll}}" class="scroll {{className}}">
<slot></slot>
</scroll-view>
<view class="scroll-inkbar" />
</View>
基于 Taro 3 架构的优化:
基于以下几点
-
React
-
React -> virtue dom -> Taro virtue dom (wx appData) -> 基于 Template 渲染
-
Taro3 渲染数据全部存放在页面对象
所以:
-
组件抽取粒度:组件抽离
-
保持页面结构:尽量在一开始就借助骨架屏将页面大体结构固定下来
-
部分组件使用CustomWrapper包裹