vue3

134 阅读3分钟

Vue3比Vue2有哪些优势

  • 性能更好
  • 体积更小
  • 更好的ts支持
  • 更好的代码组织
  • 更好的逻辑抽离
  • 更多新功能

描述Vue3的生命周期

  • Options生命周期
    1. befoteDestroy改为beforeUnmount
    2. destroyed改为unmouted
    3. 其他沿用Vue2的生命周期
  • Composition生命周期
    1. 在vue2的基础上都加了on
    2. setUp从生命周期上来讲,等于beforeCreate和created,所以composition API是没有beforeCreate和created生命周期

如何看待Composition Api和Options Api

  • 更好的代码组织(相关逻辑代码可以集中放在一块,而不是分散存在)
  • 更好的逻辑复用
  • 更好的类型推导 1.比如options api中,方法被定义在methods中,但是调用时直接使用this来调用,不符合js语法规范,也不利于我们使用语法的方式来推导类型及属性。
  • 适用于大型复杂的项目
  • 不建议共用,小型项目用Options API,因为使用起来简单,门槛低。中大型项目逻辑复杂使用Composition Api
  • Composition Api是为了解决复杂业务逻辑而设计的

如何理解ref toRef和toRefs

ref

  • 生成值类型的响应式数据
  • 用于模版和reactive(响应式数据)
  • 通过.value修改值
  • ref可以获取dom元素dom节点,在onMounted之后。

toRef与toRefs

  • toRef如果用于普通对象(非响应式对象),产出的结果不具备响应式。
  • toRefs将响应式对象(reactive封装)转换为普通对象
  • toRefs对象的每个prop都对应的ref,两者保持引用关系

Vue3升级了哪些重要功能

  • createApp
  • emits属性
    1. 父组件事件名在子组件里面emits声明(事件名加on),然后在setup里面可以拿到emits
  • 生命周期
  • 多事件
    1. @click里面可以写多个事件
  • Fragment
    1. template里面可以多个组件模板,在vue2里面只能用一个div套住全部的组件
  • 移除.syc、移除filter
    1. vue2写法时 v-bind:title.sync。在vue3中 v-model:title
  • 异步组件的写法
    1. vue2的时候componts:{ 'my-zhujian':()=>('./../url')}
    2. vue3的时候需要引用defineAsyncComponent
  • Teleport
    1. 弹窗可以直接 to=“body”
  • Suspense
    1. 异步加载 先加载一个loading。。。再加载内容。实现逻辑就是内部有两个slot其中一个fllback具名插槽
  • Composition API
    1. reactive
    2. ref
    3. readonly
    4. watch和wacthEffect
    5. setup
    6. 生命周期钩子函数

Composition Api如何实现代码逻辑复用

1. 抽离逻辑代码到一个函数
2. 函数命名约定为useXxxxx格式
3. 在setup中引用该函数

Vue3如何实现响应式

1. proxy只有在get的时候才做递归,获取到哪一层,才开始做响应式处理
2. vue2时在函数一开始就用Object.defineProperty把对象的所有属性做了getter和setter的处理

watch和watchEffect的区别是什么

1. 两者都可以监听到data变化
2. watch需要明确监听哪个属性
3. watchEffect会根据其中的属性,自动化监听,在初试分的时候一定会执行一次

setup中如何获取组件实例

  1. 在setup和其他Composition Api中没有this
  2. 可通过getCurrentInstance获取当前实例
  3. 若是用Options API可照常使用this

Vue3为何比Vue2快

Vite是什么

  1. web构建工具,前端打包工具
  2. 开发环境下无需打包,因为开发环境下使用的是ES6 Module
  3. 生产环境下使用rollup,并不快很多

Composition API和React Hooks的对比