diff.md
November 21, 2019 · View on GitHub
这是关于 diff 原理相关的介绍
由于小程序的架构是分为两条不同的线程来处理渲染和 js 逻辑,数据在他们之间通信需要转为 json,这样带来的通信消耗比较大,为了尽可能的减少通信的压力,我们对组件新旧两组数据进行 diff,我们只把真正变动的数据进行更新
与普通 js 对象之间 diff 的区别
- 如果新的数据中,数组变小,也就是
newArray.length < oldArrar.length,将会直接替换为新数组 - 如果新的数据中,数组变大,也就是
newArray.length > oldArrar.length,将会对两组数据中的每一个 item 进行 diff - 如果是
Date, 将会直接替换 - 如果是
function,将会直接替换 - 如果是正则,将会使用旧值,不做替换
- 不会对
symbol类型的数据做 diff
因为不会对 symbol 做 diff,所以 partialState 中定义的 symbol 将会出现一些不可预测的行为,比如 partialState 中只有 symbol 类型的数据时,将不会被添加到 store.state 中去