Vue3 优点:
性能的提升:
打包和渲染更快;
内存更小
源码升级:
使用Proxy代替defineProperty实现响应式;
重写虚拟DOM的实现和tree-Shaking。
更好的支持TypeScript;
新的特性。
Composition API (组合式API):
setup配置
ref与active
watch和watchEffect
provide与inject
新的内置组件:
Fragment
Teleport
Suspense
其他改变:
新的生命周期钩子
data选项始终被声明为一个函数
移除keyCode支持v-on的修饰符
vite的优势:
开发环境中,vite无需打包,可快速的冷启动
轻量快速的热重载(HMR)
真正的按需编译,不需要等待整个应用编译完成
setup:
setup是vue3的一个新配置项,值是一个函数;
执行时间:在beforeCreate之前,即组件创建之前;
在setup函数中 this 还不是组件实例,this 此时是 undefined;
在模板中需要使用的数据和函数,需要在setup 返回;
setup 的参数:
props: 值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性;
context:上下文对象
attrs: 值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性,相当于this.$attrs。
slots: 收到的插槽内容,相当于this.$slots。
emit:分发自定义事件的函数,相当于this.$emit。
setup是所有组合式API表演的舞台,是组合式API的起点;
组件中所用到的:数据(vue2.0中的data)、方法(vue.2.0中的methods)、生命周期等,均需要写在setup中,且需要被返回后才可以在模板中使用。
setup有两种返回值:
返回一个对象,则对象中的属性、方法,在模板中可以直接使用;
返回一个渲染函数,则可以自定义渲染的内容。
尽量不要vue2和vue3混用:
vue3可以向下兼容vue2的data、methods,vue2的data、methods可以通过this获取setup中的数据和方法。
setup里面不可以读取data、methods中数据、方法。
如果vue2和vue3有重名,setup优先。
setup 不能是一个async函数。如果使用了async返回的就不是一个对象,而是promise。模板中也就不能使用。但是可以和Suspense、异步组件搭配使用async。
ref函数:
作用:定义响应式数据(一般用于基本类型)。
语法:
import { ref } from 'vue'
export default {
setup () {
// const 定义的对象可以修改里面的属性
const xxx = ref(initValue)
return {
xxx
}
}
}
· 创建一个包含响应式数据的引用对象(reference对象);
· js操作数据:xxx.value;
· 模板中读取数据不需要 .value。
c . 备注: