
获得徽章 0
- 今天看了一篇 Vue.js 3.0 新特性的译文,文中提到 “在当前的 Vue 版本中,当父组件重新渲染时,其子组件也必须重新渲染。 使用 Vue 3 ,可以单独重新渲染父组件和子组件”。
这句话是不严谨的,非常容易产生误导,我觉得有必要说明一下: 2.0 组件的重新渲染就是组件粒度的,除非修改的数据是子组件的 props,才会触发子组件的重新渲染。
那么尤大的 PPT 中提到的场景是 Optimized Slots Generation。在 Vue.js 2.0 中,当父组件数据更新的时候执行会触发重新渲染,最终执行父组件的 patch,在 patch 过程中,遇到组件 vnode,会执行新旧 vnode 的 prepatch,这个过程又会执行 updateChildComponent, 这个时候如果这个子组件 vnode 如果有孩子(插槽内容)的时候,会重新 resolve slot 并执行一次子组件的 forceUpdate(),这种情况下才会触发子组件的重新渲染。而尤大所说的优化应该就是特指插槽的场景。
如果说任何场景下父组件的重新渲染就会触发子组件的数据渲染,那 Vue 的性能得有多差,记住 Vue 2.0 的重新渲染就是组件粒度的。
另外关于插槽的源码实现我的《Vue.js 技术揭秘》电子书有分析,关于插槽数据的更新实现我的源码课程视频里也有提到。所以你对源码感兴趣,可以戳下方电子书链接,电子书是开源免费的。视频课程是收费的,你可以按需购买学习,但请务必去官方购买正版喔~展开755 - 我是开源库 better-scroll 的作者 -- 黄轶,你有什么问题要问我?
大家好,我是黄轶,目前就职于 Zoom 公司担任前端架构师,曾就职于滴滴和百度,毕业于北京科技大学。我是开源库 better-scroll 的作者,也是慕课网的老师,相信有很多同学通过我的课程学习掌握了 Vue.js 这门技术。
我在 2012 年毕业加入百度后,才开始正式接触 Web 前端,上学期间主要接触的是 .net,写过几个小作品到 CSDN,我非常庆幸转行,如果毕业还坚持做 .net 可能早就凉了。在百度的 3 年工作经历,我写过页面,写过网页游戏、写过chrome插件、写过组件、写过框架。
15 年 7 月份我加入滴滴,成为当时公共部门第一个前端。在滴滴的 3 年,我造过很多公司级别轮子(登录 sdk、jsbridge-sdk,地图 sdk 等),作为技术负责人主导过 2 次滴滴 WebApp 重构,负责架构设计和实现。在 16 年初把 Vue.js 引入滴滴的生产环境项目中,并在 WebApp 5.0 的重构项目得到全面应用。在滴滴的后期我负责 WebApp 架构组,开源了 cube-ui,折腾了多个技术方向(自动化测试框架、小程序框架)。
18 年 9 月,为追求喜欢的生活方式,我离开生活 12 年的帝都,回到家乡合肥,加入了目前的公司 Zoom。结合 Zoom Web 产品的特点我设计了一整套前后端分离的架构设计方案,包括了项目初始化、本地开发、联调、测试、上线等各个环节,并在多个项目中落地。同时,我们基于 element-ui fork 出 zoom-ui,并致力解决和优化 aceesibility 问题,另外除了基础组件之外我们针对一些业务场景设计了业务组件。
我在工作外也不忘发挥余热,从做兼职,到写书,做课程。它们不仅带来额外收入,也促进了我能力的提升,比如 Angular.js 的学习就是兼职中边做边学的;通过写书和做课程,我把 Vue.js 的源码翻烂了。我的理念是挣外快可以,但同时一定要提升自己,否则就是浪费时间。由于篇幅原因,完整介绍见图2
我在 2019.06.18 - 2019.06.20 期间挑选有趣、有典型性、有意义的问题回答,你们可以问我 「前端开发」、「Vue.js」、「源码」、「前端架构」、「性能优化」、「个人成长」等相关问题。展开366337 - 118