分享几个常问的vue3面试题!

一、说一下Vue3的新特性?

    1、新增组合API

        常用的有setup、reactive、ref、toRefs

    2、生命周期变化

        创建:

            beforeCreate和created被setup替代了

        挂载:

            onBeforeMount

            onMounted

        更新:

            onBeforeUpdate

            onUpdated

        销毁:

            onBeforeUnmount

            onUnmounted

    3、响应式原理变化

        用Proxy代理配合Reflect反射代替了v2中的Object.defineProperty()实现数据的响应式

    4、更好的支持TS

        因为源码用TS写的

    5、新增内置组件

        Fragment(片段)、Teleport(瞬移)、Suspense(不确定)

    6、新的脚手架工具vite

    7、可以设置多个根节点

    8、重写虚拟DOM的实现和Tree-Shaking,渲染速度更快、打包体积更小

    9、移除了一些东西

        移除v-on的键盘修饰符

        移除过滤器filter

二、说一下reactive和ref的区别?

    ref:

        通过Object.defineProperty()给value的属性添加getter、setter来实现响应式

        一般用来处理基本数据类型,也能处理复杂数据类型,只不过内部会自动将对象转换为reactive的代理对象

        在js中要加.value,在模版中不需要

    reactive:

        通过Proxy对目标对象中的所有属性动态地进行数据劫持,并通过Reflect操作对象内部数据来实现响应式

        一般用来处理复杂数据类型,会实现递归深度响应式

三、说一下Vue3的响应式原理?

    vue3采用数据代理+数据劫持+发布订阅模式的方法。

    在初始化vue实例时,通过Proxy进行数据代理,用Proxy对象来代理目标对象,

    并且对目标对象中的所有属性动态地进行数据劫持,动态地指定一个getter、setter,并通过Reflect操作对象内部数据。

    当Proxy对象属性或Proxy数组元素发生变化时,会触发Proxy属性的setter方法,然后通过Reflect操作目标对象属性,同时触发它Dep实例的notify方法进行依赖分发,通知所有依赖的Watcher实例执行内部回调函数。

    最后会触发renderWatcher回调,会重新执行render函数,重新对比新旧虚拟DOM,重新渲染页面。

    当读取Proxy对象属性时,会触发Proxy属性的getter方法,然后触发它Dep实例的depend方法进行依赖收集。

    

四、说一下组合式API写法对比选项式API写法的优点?

    组合式API写法将组件的逻辑按照功能进行划分,将相关逻辑放在一起,使得代码更加清晰和易于维护

五、说一下常用的一些组合API及作用?

    ref:定义一个基础数据类型的响应式数据

    reactive:定义一个复杂数据类型的响应式数据

    toRefs:把响应式数据对象中的所有属性变成ref对象,常用于解构响应式对象属性

    

    computed:计算属性

    watch:变化时监听

    watchEffect:立即监听

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前端Vue常见的面试题中,有以下几个常见问题: 1. v-show和v-if的区别是什么? v-show和v-if都是Vue中用于控制元素显示与隐藏的指令,但它们的工作原理有所不同。 v-show是通过CSS的display属性来控制元素的显示与隐藏,当条件为真时,元素会显示,条件为假时,元素会隐藏。v-show适用于频繁切换元素显示与隐藏的情况。 v-if是根据条件动态地渲染或销毁元素,当条件为真时,元素会渲染到DOM中,条件为假时,元素会从DOM中移除。v-if适用于在显示逻辑复杂、切换频率较低的情况下使用。 2. Vue中如何监听数据变化? Vue提供了多种方式来监听数据的变化,其中包括: - 使用watch属性来监听特定数据的变化。 - 使用computed属性来计算派生数据,当依赖的数据发生变化时,计算属性会重新计算。 - 使用Vue提供的$watch方法来手动监听数据的变化。 3. Vue中如何编写可复用的组件? 在Vue中,可以通过编写可复用的组件来提高代码的重用性和可维护性。编写可复用的组件需要遵循以下几个步骤: - 将组件的逻辑和样式封装在一个.vue文件中。 - 使用props属性来接收父组件传递的数据。 - 使用emit方法触发自定义事件,让父组件可以监听子组件的状态变化。 - 使用slot插槽来实现组件的灵活性,让父组件可以自定义子组件的内容。 这些是前端Vue常见的面试题,希望对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前端vue经典面试题78道(重点详细简洁)](https://blog.csdn.net/weixin_59519449/article/details/123636668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大澈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值