说一下对vue3的了解
-
性能更高了。
-
响应式的原理变成了 Proxy;
-
VNode Diff 算法进行了优化;
-
-
体积更小了。
-
所有的 API 都是按需导入,能配合 Webpack 支持 Tree Shaking;
-
删除了不常用的一些特性 / API,filter、Event Bus...
-
-
对 TS 支持更好了。
- 本身就是用 TS 写的。
-
Composition API(组合 API)。
- 对于开发大型项目更利于代码的组织和复用。
- 把同一功能的数据和处理数据的业务逻辑组合到一起
- vue2对于小型项目一目了然,很适合上手
-
新增加了一些特性(Fragment、Suspense、Teleport...)
vite
-
下一代的打包构建工具
-
特点:快,冷启动
-
npm init vite-app 项目名
选项API和组合API
-
Vue2是选项API,当项目打包之后,你会发现同一功能的数据和业务逻辑太过于分散,不利于维护,不方便复用
-
组合API就解决了上面的问题
setup
-
相当于beforeCreate 和 created
-
执行时机比 beforeCreate 还要早,意味着它执行的时候实例根本没有被创建
-
内部的this是undefined, 模板中要想使用setup中的数据或方法,一定要通过return 返回
-
返回的值不一定是一个对象,可以是一个渲染函数
reactive
-
作用 : 可以把数组或对象包装成响应式的数据
-
注意点: reactive 内部的对象其实也是给reactive 类型的数据
-
isReactive : 判断数据是否是 reactive 类型的
ref
-
作用 : 包装任意类型为响应式的数据
-
注意点: 在setup 中使用ref 数据的时候一定要加 .value .模板中不要加,内部会自动加( 解包)
-
推荐 : 除非明确知道这个数据就是一个对象或数组,使用reactive,其他情况一律使用ref,甚至整个项目一律使用ref,在Vue3.2之后性能更高
-
toRef :可以把响应式对象中的某一个属性变为单独的响应式的ref对象,并且转换之后的数据和原来的响应式对象中的数据是关联的
-
toRefs
-
isRef: 判断是否是ref 类型的
computed
-
如何对computed 进行赋值
const fullName = computed({ get() { return state.firstName + ' ' + state.lastName }, set(newValue) { // newValue 就是输入的新值 // console.log(newValue) const arr = newValue.split(' ') state.firstName = arr[0] state.lastName = arr[1] }, })
watch
-
监听 reactive 内部数据 默认是深度监听,并且配置无效 ,对监听的reactive 本身赋值不能被监听到
-
监听ref 数据 , 默认只监听第一层, .value才是第一层 , ref内部的对象也是一个reactive 类型
-
监听普通数据 watch( ( )=> 普通数据 )
声明周期
-
把beforeCreate 和 created 组合成了setup
-
相同的声明周期可以写多次,不会覆盖
setup 参数
- props
- context => 对象 { emit , attrs , slots }