体验Vue3
vue-cli
1 | npm install -g @vue/cli |
webpack
git clone https://github.com/vuejs/vue-next-webpack-preview.git vue3-webpack
vite
拦截 import 发送 http 请求加载文件,进行预编译
1 | npm install -g create-vite-app |
Composition api
1 | <template> |
setup
composition 入口,函数在 beforecreate 前调用,函数返回值作为模板渲染上下文
reactive
等同于 Vue.observerable 产生响应式数据
computed
计算属性
全局 import
vue2 data、methods、computed 挂载在 this 上的缺点:
1、不利于类型推导
2、没办法做到按需加载,没有使用的功能代码也会被打包
ref
将基本数据包装成响应式,模板中直接使用,JS 中使用 .value
新组件
Fragment
vue 组件不需要一个根节点
好处:
1、少了很多无意义节点
2、组件递归可以实现平级递归
Teleport
等同于 React[Protal],可以渲染 vue 组件内容到指定 dom 节点
Suspense
异步组件
1 | <Suspense> |
稳定 RFC
- v-slot:合并slot、slot-scope,# 缩写
- directive:动态调用
- 全局 import
- v-model:title 取代 v-bind.sync,支持多个 v-model
- 函数式组件必须写成函数
1 | import { h } from 'vue' |
- 全局 api 不在挂在到 Vue,现在挂在 app 实例
- 自定义 directive api 重新设计
1 | const mDirective = { |
- 删除 filter,method、计算属性取代
- 删除内联模板
- Events 支持变化
删除 $on、$once、$off,$emit 促发 emit配置
- defineAsyncComponent 创建异步组件
vue2\3对比
vue3 内置 @vue/server-renderer (服务器渲染解析) @vue-compiler-ssr (解析 template 为 render 函数)
在 setup 中不可以调用 getCurrentInstance().ctx 来获取组件内部数据,因为在 prod 环境会被干掉
Vue 3.0 新特性
- 易维护,基于 TS 更好的数据类型推到
- 更快,基于 Proxy 数据代理,更好的虚拟 DOM 和 SSR 渲染
- 更小,Tree-Shaking、时间切片
- 更好的规划,CompositionApi
- Better DX,组件改进