本文主要记录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 | //定义部分 |