小程序 琐碎
微信小程序的原理
小程序其实本质上来说也是一种单页面的应用,所有的页面渲染和事件的处理,都在一个页面内进行,但是又可以通过微信客户端调用原生的各种接口;
功能上可以分为渲染层 webview 和 逻辑层 appService 两个部分;webview 用来展现 ui,appService 用来处理业务逻辑、数据及接口的调用;两个部分在两个进程中运行,通过系统层 JSBridge 实现通信,实现 ui 的渲染、事件的处理等;
为什么 setData 操作会很昂贵?
频繁的用户交互效果在小程序上表现是比较卡顿的,比如页面上有两个元素 A 和 B;用户在 A 上做 touchmove 手势,要求 B 也跟着移动;一次 touchmove 事件的响应过程为: 1)、touchMove 事件从视图层 webview 抛给逻辑层 appService;2)、逻辑层处理 touchumove 事件,在通过 setDate 来改变 B 的位置;
一次 touchmove 的响应需要经过两次的逻辑层和渲染层的通信以及一次渲染,通信的耗时比较大;