1. 05 12月, 2018 2 次提交
  2. 03 12月, 2018 1 次提交
  3. 21 11月, 2018 1 次提交
  4. 14 11月, 2018 3 次提交
  5. 12 11月, 2018 5 次提交
  6. 10 11月, 2018 2 次提交
  7. 07 11月, 2018 1 次提交
    • S
      在渲染时使用新的diff算法来减少Vue组件更新引起的Page.setData的实际更新量,达到提升页面性能的目的 · bfb5fdbc
      sexdevil 提交于
      1、core/observer的set方法中,监听对象更新值时,用__keyPath:{key:true}方式把更新的key值绑定在vm数据对象上
      2、每次真实调用setData前,用mp/runtime/diffData.js进行检查优化大小,规则有
         A.第一次vm渲染到小程序上,全量更新,并记下标志
         B.第二次及以后再更新,检查_data对象,如果有__keyPath,跟据__keyPath更新,没有
         __keyPath表示没有更新,不放到Page.setData
         B1._data遇到Object类型,检查Object类型__keyPath,存在的话深度遍历所有属性
         递归检查更新,不存在__keyPath可能是this.obj = {}重新写对象值造成set没捕捉到,
         使用脏检查和页面数据对比更新
         B2._data遇到Array类型,直接脏检查,避免数组不能记录__keyPath造成丢失
         B3._props属性由于父组件传入不走set,所以遍历_props,值类型直接更新,对象类型
         深度遍历进入步骤B1,数组进入B2
         B4.遍历上述后最终更新数据再加入_computedWatchers,_mpProps
         B5.组件树上的节点都完成更新后调用Vue.nextTick钩子,清理所有对象上的__keyPath
         为下次检查更新做准备
         C.diff优化好data后,如果在Vue.config.devtool == true时打印500ms内的更新量
         方便使用者检查页面的更新情况
         D.diff好的JSON中,删掉原来的$root.0={},只把必要的更新给Page.setData使用
      3、使用效果:减少了只改动一个根节点属性却造成整个组件树的数据都传递给
         Page.setData的情况,从而减少因为setData量大引起的真机尤其安卓卡顿的情况
      bfb5fdbc
  8. 31 10月, 2018 1 次提交
  9. 30 10月, 2018 1 次提交
  10. 23 10月, 2018 2 次提交
  11. 22 10月, 2018 1 次提交
  12. 21 10月, 2018 1 次提交
  13. 18 10月, 2018 1 次提交
  14. 11 10月, 2018 1 次提交
  15. 10 10月, 2018 2 次提交
  16. 26 8月, 2018 1 次提交
  17. 17 8月, 2018 2 次提交
  18. 11 8月, 2018 2 次提交
  19. 20 7月, 2018 3 次提交
  20. 05 7月, 2018 3 次提交
  21. 15 6月, 2018 4 次提交