
本文主要记录v3.0至v2.0的变动
喜大普庆,vue终于发布3.0版本,代号为One-Piece,原文链接:v3.0.0
slot
适用v2.0与v3.0
slot插槽的改变,在v2.6版本已经在官方文档上支持v-slot,#缩写等,所以不多赘述
原文链接:slot
| 1 | <!-- vue 2.x --> | 
指令动态参数
适用v2.0与v3.0
| 1 | <!-- v-bind with dynamic key --> | 
Tree-shaking
适用v3.0
在vue3.0中api等使用方式有极大变化,而这种变化对文件压缩大小的优化有好处,不便之处就是写起来较麻烦了
| 1 | <!-- vue 2.x --> | 
.sync与v-model
这两项变动是互相影响的,.sync在v3.0直接移除,转而支持v-model多配置,具体代码如下:
| 1 | <!-- vue 2.x --> | 
| 1 | <!-- vue 2.x --> | 
函数组件
适用v3.0
不再需要 functional:true 选项, <template functional>\ 标签也不支持
| 1 | <!-- vue 2.x --> | 
全局api
| 1 | <!-- vue 2.x --> | 
指令钩子函数
适用v3.0
在vue 3.x中指令内部的钩子函数仿照组件声明周期了
| 1 | <!-- vue 2.x --> | 
transition、transition-class
适用v3.0
当template作为组件的根元素时,外部切换不会触发过渡效果
v-enter 重命名为v-enter-from,v-leave重命名为v-leave-from
| 1 | <template> | 
| 1 | .v-enter-from, .v-leave-to { | 
Router
适用v3.0
router-link
router-link 新增 scope-slot 与 custom 属性,移除 tag 和 event
这点对于封装视图组件或菜单组件尤为重要,使组件更具有语义及更纯粹
| 1 | <router-link to="/" custom v-slot="{ href, navigate, isActive }"> | 
路由匹配所有
以往匹配所有路由的写法{ path:'*' }即可,现改为{ path: '/:catchAll(.*)' }
获取当前路由信息
| 1 | import router from '../router' | 
router为定义vue路由的文件
| 1 | import { createRouter, createWebHashHistory } from 'vue-router' | 
异步组件
通过 defineAsyncComponent 函数创建
| 1 | import { defineAsyncComponent } from "vue" | 
动态路由
router.addRoutes 是v2.x版本的新增路由方法,先新增如下方法:
| 1 | // router.addRoute(route: RouteRecord) 动态添加路由 | 
样式 scoped
| 1 | /* 深度选择器 */ | 
emits-option
与v2.x版本相比,多了要先定义emit出去的对象
| 1 | const Foo = defineComponent({ | 
组件根元素数量
template 不在是限制只有一个,在v3.x中可以存在多个根元素
v3.x中废弃
- beforeCreate、created
- filters
- keycode
- inline-template
- data-object
- on,off 和 $once
结语
| 1 | //定义部分 |