文章目录

全局API的转移

Vue2.x有许多全局API和配置,例如:注册全局组件,注册全局指令等

//注册全局组件
Vue.component('myButton',{
data:()=>({
count:0
}),
template:'<button @click="count++'>Clicked{{count}}</button>'
})
//注册全局指令
Vue.directive('focus',{
inserted:el=>el.focus()
})

Vue3 中对这些API做出了调整,即​​Vue.xxx​​​调整到应用实例(​​app​​)上

2.x全局API(Vue)

3.x实例API()APP

Vue.config.xxx

app.config.xxx

Vue.config.productionTip

移除

Vue.component

app.component

Vue.directive

app.directive

Vue.mixin

app.mixin

Vue.use

app.use

Vue.prototype

app.config.globalProperties

其他改变

  • data 选项应始终声明为一个函数
  • 过渡类名的修改

Vue2.x 写法

.v-enter,
.v-leave-to {
opacity: 0;
}
.v-leave,
.v-enter-to {
opacity: 1;
}

Vue3.x的写法

.v-enter-from,
.v-leave-to {
opacity: 0;
}
.v-leave-from,
.v-enter-to {
opacity: 1;
}
  • 移除了 keyCode 作为 v-on 的修饰符,同时也不再支持​​config.keyCodes​
  • 移除 v-on.native 修饰符

父组件中绑定事件

<my-component 
v-on:cloce="handleComponentEvent"
v-on:click="handleNativeClickEvent" />

子组件中声明自定义事件

<script>
export default({
emits: ['close']
})
</script>
  • 移除过滤器(filter),用方法调用或计算属性替换过滤器

过滤器虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是“只是JavaScript”的假设,这不仅有学习成本,而且有实现成本!建议用方法调用或计算属性去替换过滤器

2022.4.20晚21:10 刷完。下一个系列开始了。