1.template
标签模版这块,Vue2和Vue3区别不大,Vue3反对碎片(Fragments),就是说template下能够有多个根节点。
Vue2
Vue2 template下只能蕴含一个根节点。
<template> <div> 显示区域 </div> </template>
Vue3
Vue3 template下能够蕴含多个根节点。
<template> <div>显示区域</div> <div>显示区域</div> <div>显示区域</div> </template>
2.data
Vue2和Vue3区别很大,咱们代码看。
Vue2
Vue2是选项类型API(Options API),在代码里宰割了不同的属性(properties):data,computed属性,methods,等等。
export default { data () { return { userName: '', password: '' } } }
Vue3
Vue3合成型API(Composition API),须要应用一个新的setup()办法,此办法在组件初始化结构的时候触发。
import { reactive } from 'vue' export default { setup () { const data = reactive({ userName: '', password: '' }) return { data } } }
3.methods
这个写法上也有很大区别。
Vue2
Vue2把methods宰割到独立的属性区域。
export default { data () { return {} }, methods: { // 办法 login () {} } }
Vue3
Vue3不须要把办法写在methods内,在setup()办法中申明,最初返回(return)
import { reactive } from 'vue' export default { setup () { const data = reactive({ userName: '', password: '' }) // 登陆办法 const login = () => {} return { login, data } } }
4.Lifecyle Hooks
这个区别也很大。
Vue2
Vue2能够间接在组件属性中调用Vue的生命周期的钩子。
export default { data () { return { userame: '', password: '' } }, beforeCreate() {}, created() {}, beforeMount() {}, mounted() {}, beforeUpdate() {}, updated() {}, beforeDestroy() {}, destroyed() {} }
Vue3
Vue3 的合成型API外面的setup()办法能够蕴含了根本所有货色。生命周期的钩子就是其中之一。
import { reactive, onMounted } from 'vue' export default { setup () { // .. onMounted(() => {}) // ... } }
与 2.x 版本生命周期绝对应的组合式 API。
1、beforeCreate -> 应用 setup() 2、created -> 应用 setup() 3、beforeMount -> onBeforeMount 4、mounted -> onMounted 5、beforeUpdate -> onBeforeUpdate 6、updated -> onUpdated 7、beforeDestroy -> onBeforeUnmount 8、destroyed -> onUnmounted 9、errorCaptured -> onErrorCaptured