如何正确学习vue3.0源码

本文详细介绍了学习Vue3.0源码的重要性,包括技术成长、API设计目的和源码调试。分析了Vue3相对于Vue2的优化,如更小的打包体积、更快的渲染速度,并探讨了新特性如Teleport和Suspense。针对一些质疑,文章解释了Composition API如何改善逻辑复用和项目维护性,反驳了关于Vue3复杂化的误解,强调正确使用新API能提高代码质量。
摘要由CSDN通过智能技术生成

为什么要学源码

  • 技术是第一生产力
  • 学习 API 的设计目的、思路、取舍
  • 学习优秀的代码风格
  • 学习组织代码的方式
  • 学习实现方法的技巧
  • 学习 ES67 新 API、TS 高级用法
  • 不给自己设限,不要让你周围人的技术上限成为你的上限
  • 面试加分项
  • 装逼利器

学习源码副作用

  • 画虎不成反类犬(强行上马 vue3,自己焦头烂额、项目难以维护、同事苦不堪言)
  • 为了用而用,而不是因地制宜
  • 喜欢炫技写一下看似搞大上,实际没有可读性,影响团队协作的奇技淫巧

vue3 设计动机与目的

  • 更好的逻辑复用与代码组织
    • vue2 option api 的代码风格将同一逻辑点的代码分散在各处,会导致读者关注点分离,也不利于代码的逻辑复用;而 vue3 composition api 将同一业务逻辑的代码聚合在一起命名为 useXXX 函数,再通过 setup 将不同的逻辑组装起来并返回给组件 data,明显更方便逻辑复用。
    • vue2 mixin 用于逻辑复用的时候容易导致命名冲突和数据来源不清晰;而 vue3 provide/inject 配合 composition api 可以很方便的找到数据来源并通过解构重命名,明显更方便逻辑复用。
  • 更好的类型推导
    • 在 methods 中 this 指向组件实例而不是 method 本身,不利于类型推导。
    • 例如 this.router、this.store,每个新的插件都会需要向 Vue 追加类型定义。

更新前后对比

优化

  • 打包更小(全局 API tree-shaking)
  • 渲染、更新更快,内存占用减少
  • 使用 proxy 取代 Object.defineProperty
  • v-model 代替以前的 v-model 和.sync
  • 生命周期变更 例如 destroyed beforeDestroy 改为 unmounted beforeUnmount
  • 自定义指令 API 与生命周期保持一致
  • Diff 算法的提升(静态标记、静态提升)

新特性

  • Template 支持多个根标签
  • composition API 实现逻辑模块化和复用
  • Teleport 传送门组件 代码块挂载到任意位置
  • Suspense 悬停组件 异步加载组件使用(实验属性)
  • 使用 @vue/runtime-core 的 createRenderer 自定义渲染器(跨平台利器)
  • 使用 ts 编写源码,更好的类型推导、更好的适配 ts

更多变化

  • v3.cn.vuejs.org/guide/migra…

疑问解答

问题一:compostion api 根本没有解决任何问题,只是追逐新玩意的东西

尤雨溪: 不同意这个观点。
Vue 最开始很小,但是现在被广泛应用到不同级别复杂度的业务领域,有些可以基于 option API 很轻松处理,但是有些不可以。例如下面的场景:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值