Vue 3.0
认识 Vue3
- Performance 比 Vue2 runtime 快了2倍
- 重写了虚拟 dom 的实现
- 编译模板的优化(运行时编译)
- update 性能提高 (在编译时给到需要更新的信息,render中_createVNode的传参,把动态的标记为 PROPS)
- SSR 速度提高
- Tree Shaking 按需编译代码
- TS Support
- Composition Api
- Customer Render API 自定义渲染器
- 内置新特性组件
按需编译代码 (从 Vue 中导出函数来用)
用 TypeScript 重写
ESlint Vue3.x
1 | extends: [ |
VSCode 的 vetur 暂时还不支持 Vue3 或者我哪里配的不对,它总是强行把 Vue2.x 的 lint 给我过一遍,所以就需要在 settings.json
里:
1 | "vetur.validation.template": false, |
Fragment (第一反应 React 的 <></>)
1 | <template> |
Composition API
- 更好的逻辑服用与代码组织
- 更好的类型推导(函数对类型友好)
通过类型来组织代码,Options API
,当代码量小的时候很友好,但代码量大时很难维护,反复横跳,一个功能被拆分到很多地方。
Composition API
解决了这个难题。同时也解决 Mixin
带来的副作用。本质是函数。
1 | // 函数组件,从原生命周期抽离出共用的逻辑,本质是函数,容易复用 |
Vue Test Utils Next(VTU) 单元测试
测试功能,不是测试细节。主要是为了避免新功能影响旧功能。
一个组件:
- 输入 -> props / 用户交互
- 输出 -> dom渲染 / Events(emit)
TDD:Test-driven development 从使用者角度思考
- 先写测试 (根据用户使用的方式 user story)
- 写逻辑让测试通过
- 重构
TDD模式 重构 Element UI Button
- 拆分需要实现的功能
- 可以显示 slot 的内容
- 设置 size
- 设置 type
- 是否 圆角、plain、disabled、…
Proxy
Custom Render API
自定义渲染,用户可自定义渲染目标平台(比如Canvas)
tbc…