vue3的面试题

vue3的考试题

一、vue2和vue3的区别(这个题录入系统时,只写标题就行)

答案:

1、双向数据绑定原理不同

vue2:vue2的双向数据绑定是利用ES5的一个API:Object.definePropert() 对数据进行劫持,结合发布订阅模式的方式来实现的。

vue3:vue3中使用了ES6的Proxy API对数据代理。相比vue2.x,使用proxy的优势如下:

  • defineProperty只能监听某个属性,不能对全对象监听

  • 可以省去for in,闭包等内容来提升效率(直接绑定整个对象即可)

  • 可以监听数组,不用再去单独的对数组做特异性操作vue3.x可以检测到数组内部数据的变化。

2、是否支持碎片

vue2:vue2不支持碎片。

vue3:vue3支持碎片(Fragments),就是说可以拥有多个根节点。

3、API类型不同

vue2:vue2使用选项类型api,选项型api在代码里分割了不同的属性:data,computed,methods等。

vue3:vue3使用组合式api,新的合成型api能让我们使用方法来分割,相比于旧的api使用属性来分组,这样代码会更加简便和整洁。

4、定义数据变量和方法不同

vue2:vue2是把数据放入data中,在vue2中定义数据变量是data(){},创建的方法要在methods:{}中。

vue3:,vue3就需要使用一个新的setup()方法,此方法在组件初始化构造的时候触发。使用以下三个步骤来建立反应性数据:

  • 从vue引入reactive

  • 使用reactive() 方法来声明数据为响应性数据;

  • 使用setup()方法来返回我们的响应性数据,从而template可以获取这些响应性数据。

5、生命周期钩子函数不同

vue2vue2中的生命周期

  • beforeCreate 组件创建之前

  • created 组件创建之后

  • beforeMount 组价挂载到页面之前执行

  • mounted 组件挂载到页面之后执行

  • beforeUpdate 组件更新之前

  • updated 组件更新之后

vue3vue3中的生命周期

  • setup 开始创建组件前

  • onBeforeMount 组价挂载到页面之前执行

  • onMounted 组件挂载到页面之后执行

  • onBeforeUpdate 组件更新之前

  • onUpdated 组件更新之后

而且vue3.x 生命周期在调用前需要先进行引入。除了这些钩子函数外,vue3.x还增加了onRenderTracked 和onRenderTriggered函数。

6、父子传参不同

vue2:父传子,用props,子传父用事件 Emitting Events。在vue2中,会调用this$e

### Vue 3 面试题及答案 #### 1. Vue 3 的核心特性有哪些? Vue 3 引入了 Composition API,提供了更灵活的逻辑复用方式。此外,Vue 3 使用了 Proxy 替代 Object.defineProperty 来实现响应式系统,提升了性能和功能[^1]。Vue 3 还支持 Fragments、Teleport 和更好的 TypeScript 支持。 #### 2. Vue 3 中如何实现表单验证? 在 Vue 3 中可以使用第三方库如 VeeValidate 或 Vue-Form-Validation 实现表单验证。另一种方法是手动编写验证逻辑,在提交前检查表单状态。还可以利用 Vue 的计算属性和自定义指令来实现表单验证[^3]。 #### 3. Vue 3 中的生命周期钩子有哪些变化? Vue 3 的生命周期钩子名称保持不变,但部分钩子的行为有所调整。例如,`beforeDestroy` 被重命名为 `beforeUnmount`,`destroyed` 被重命名为 `unmounted`。此外,Vue 3 引入了新的钩子 `onRenderTracked` 和 `onRenderTriggered`,用于调试响应式依赖关系[^1]。 #### 4. Vue 3 中如何优化大型应用的性能? Vue 3 提供了多种性能优化手段,包括: - 使用 `<KeepAlive>` 组件缓存动态组件。 - 使用 `v-once` 指令渲染静态内容。 - 利用 Tree Shaking 移除未使用的代码。 - 使用 `Suspense` 组件处理异步依赖。 - 在模板中避免不必要的复杂计算,改用计算属性或方法[^3]。 #### 5. Vue 3 中的 Teleport 是什么? Teleport 是 Vue 3 引入的新功能,允许将组件的内容渲染到 DOM 的其他位置。这在需要将模态框或提示框渲染到 body 标签时非常有用[^1]。 #### 6. Vue 3 中的 Fragment 是什么? Fragment 允许组件返回多个根节点,而不需要额外的包装元素。这减少了 DOM 结构的复杂性,并提高了渲染性能[^1]。 #### 7. Vue 3 中的响应式系统是如何工作的? Vue 3 使用 Proxy 替代了 Vue 2 中的 Object.defineProperty 来实现响应式系统。Proxy 提供了更全面的拦截能力,支持数组和嵌套对象的检测[^1]。 #### 8. Vue 3 中的 Composition API 是什么? Composition API 是 Vue 3 引入的新特性,提供了一种更灵活的方式来组织和复用组件逻辑。通过 `setup` 函数,开发者可以使用 `ref`、`reactive` 等函数来管理状态和逻辑。 #### 9. Vue 3 中的自定义指令如何实现? 自定义指令可以通过 `app.directive` 方法注册。每个指令对象可以包含 `created`、`beforeMount`、`mounted`、`beforeUpdate`、`updated` 和 `unmounted` 钩子函数[^2]。 #### 10. Vue 3 中的路由守卫有哪些? Vue Router 4(适用于 Vue 3)提供了全局守卫、路由独享守卫和组件内守卫。常用的守卫包括 `beforeEach`、`afterEach` 和 `beforeRouteEnter` 等[^2]。 ```javascript // 示例:全局前置守卫 router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requiresAuth)) { if (!isAuthenticated) next({ name: &#39;Login&#39; }); else next(); } else { next(); } }); ``` ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值