Vue经典面试题:Vue2和Vue3的区别

这篇具有很好参考价值的文章主要介绍了Vue经典面试题:Vue2和Vue3的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 双向绑定原理

    • vue2是用过ES5的一个API Object.defineProperty()对数据进行劫持配合发布订阅者模式的方式来实现的

    • Vue3是使用了ES6的proxyAPI对数据代理

  • Vue3支持碎片(Fragments)

    • 就是说组件可以有多个根节点

  • Composition API

  • vue2采用选项类型API,而vue3采用 合成型API。代码更加的简便整洁

  • 生命周期钩子函数

    • 若组件被keep-alive包裹,则多出下面两个钩子函数

    • onActivated() 激活时执行 onDeactivated() 失活时执行

  • setup()函数新特性

    • 它接受两个参数(props、context(包含attrs、slots、emit))

    • 在beforeCreate和Created 两个钩子函数之前的函数

    • 执行setup时,组件实例尚未被创建,在setup内部this不指向vue实例,是undefined

    • 和模板一起使用:需要返回一个对象 定义的变量和方法最后都需要return 出去

    • 使用渲染函数:可以返回一个渲染函数,该函数可以直接使用在同一作用域中声明的响应式状态

      • 注意:

      • setup函数中的props是响应式的,当传入新的prop时,它将被更新 但是因为props是响应式的,所以不能使用ES6解构,因为会消除prop的响应式。可以通过setup函数中的toRefs来完成此操作

      • setup函数只能是同步的不能是异步的

      • setup函数只会在初始化的时候执行一次

  • teleport瞬移组件

  • 如何取舍ref和reactive

    • 优先使用ref函数,因为ref函数 可以处理简单数据类型,也可以处理复杂类型,常用于数据类型定义响应式数据

      ref特点:在代码中获取或者修改值时,需要补 .value 但是在template模板中不需要

    • reactive 常用于定义复杂数据类型作为响应式数据

      特点 :不需要 .value,如果明确知道对象中有什么属性久使用reactive

  • 父子通信

    • 父传子

      • 在setup函数中有两个参数 第一个参数为props,第二个参数为context

- props为一个对象,props接收后,内部包含了所有传递过来的prop数据
​
- context包含了attrs,slots,emit属性,其中emit方法可以完成子传父
  • 子传父

    • setup(props,context) {
          context.emit('name','李雷')
      }
    • <template> <Son @name="name" ></Son> </template>
       
      setup() {
         const name = (name)=>console.log(name);
           return {name}
      }, 
    • 父传子:在setup中使用props数据 setup(props){ props就是父组件数据 }

    • 子传父:触发自定义事件的时候emit来自 setup(props,{emit}){ emit 就是触发事件函数}

  • performance

  • 原本在vue2中虚拟dom时进行全量的杜比,而在vue3中新增了静态标记(patchFlag),值对比带有PF的节点,并通过Flag的信息得知当前节点要比对的内容,这样就无需遍历整个虚拟dom,从而大大提升性能。

  • vue3响应式原理

    • 实现原理

      • 通过proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写、添加和删除

      • 通过reflect(反射)ES6:对源数据的属性进行操作。

        proxy: 
            [[handle]]: 增删改查靠它完成
            [[target]]: 数据
        }
    • Object.defineProperty是单线程,不能捕获错误 只能通过try和catch实现

      Reflect可以捕获错误(reflect也具有defineProperty)文章来源地址https://www.toymoban.com/news/detail-418161.html

      const per 代理数据 = new proxy 代理对象 (源数据person,操作项{         
          per: 代理数据
        proxy: 代理对象,俩个参数(源数据、操作项)
      ​
          get (源数据target,属性名propName) {
              return Reflect.get(target,propName)
        }
          
          set (源数据target,属性名propName,操作后的值value) {
              追加也能调用,引起源数据的变化
              Reflect.set(target,propName,value)
          }
      ​
          deleteProperty (源数据target,属性名propName) {
              return Reflect.delete(target,propName)
          }
      })

到了这里,关于Vue经典面试题:Vue2和Vue3的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue双向数据绑定原理(面试必问)

    1、前端面试题库 ( 面试必备)             推荐:★★★★★ 地址:前端面试题库   vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。 具体步骤

    2023年04月08日
    浏览(36)
  • 【Vue3】2-10 : 表单处理与双向数据绑定原理

    一、表单处理 1.1、【双向绑定】实现方式一:v-model >  代码  >  效果  1.2、【双向绑定】实现方式二::value属性 + input事件 >  代码  >  效果 (同上) 二、实战 2.1 【v-model 示例】输入框  >  代码 + 效果 (见1.1) 2.2 【v-model 示例】单选框  >  代码  >  效果 2

    2024年01月20日
    浏览(47)
  • vue2和vue3关于class类的绑定以及style的绑定的区别

    本篇为个人笔记 例如:单个类绑定 多个类绑定:   例如:单个绑定  多个绑定

    2024年02月16日
    浏览(29)
  • vue面试题_vue2和vue3的区别

    1、数据绑定原理不同 vue2:vue2的数据绑定是利用ES5的一个API:Object.definePropert() 对数据进行劫持,结合发布订阅模式的方式来实现的。 vue3:vue3中使用了ES6的Proxy API对数据代理。相比vue2.x,使用proxy的优势如下: defineProperty只能监听某个属性,不能对全对象监听 可以省去for

    2024年02月10日
    浏览(35)
  • react和vue2/3父子组件的双向绑定

    目录 Vue3 父子传值:props(attrs)/emit 父传子 props 父child :属性名=\\\"变量\\\" 子props=defineProps({属性名:type...}) attrs父作用域(除 class、 style 、 props )属性集合 父child :属性名=\\\"变量\\\",属性名=\\\"常量\\\" 子 attrs = useAttrs() 子传父emits+@=v-on: 父child @事件名\\\"=\\\"parentClick\\\",parentClick(msg) 子emi

    2024年02月16日
    浏览(33)
  • vue3组件之间双向绑定

    Vue3中组件的双向绑定统一使用 v-model 进行处理,并且可以和多个数据进行绑定,例如 v-model:foo、v-model:bar。 v-model 等价于 :model-value=\\\"someValue\\\" 和 @update:model-value=\\\"someValue = $event\\\" v-model:foo 等价于 :foo=\\\"someValue\\\" 和 @update:foo=\\\"someValue = $event\\\" 父子组件之间双向绑定 子组件可以结合 i

    2024年02月11日
    浏览(23)
  • 在vue2使用v-model对组件进行双向绑定

    v-model=“visible” 等价于 :value=“visible” 加上 @input=“visible = $event” 所以 v-model 就是父组件向子组件传了个 value 字段的值,子组件使用 props 定义 value 字段, 就可以在子组件使用 value 读取这个值;子组件使用 $emit(‘input’,值) 就可以改变 v-model 的值 父组件 子组件 父组件 子

    2024年02月10日
    浏览(34)
  • 【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

    什么是数据双向绑定? 当数据发生变化的时候,视图会相应的发生变化 当视图发生改变的时候,数据也会相应的同步变化 数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 双向绑定的指令 ​ v-model 指令实现数据双向绑定 双向绑定使用场景 ​

    2024年02月09日
    浏览(58)
  • VUE数据双向绑定原理解析

    在Vue.js中,数据双向绑定是一项非常强大的功能。它使开发者能够轻松地将模板与数据进行动态关联,实现了页面和数据之间的实时同步更新。本文将深入探讨VUE中数据双向绑定的原理,并通过代码示例演示其工作机制。 VUE使用了JavaScript对象属性的 Object.defineProperty() 方法来

    2024年02月11日
    浏览(31)
  • Vue双向绑定的原理是什么?

    在 Vue 中,双向绑定是指数据的变化会同时反映在视图上,而视图的变化也会同步更新数据。Vue 的双向绑定是通过以下原理实现的: 数据响应系统(Reactivity System):Vue 使用了响应式的数据绑定机制。当你在 Vue 实例中的数据属性上使用 data 选项定义数据时,Vue 会通过 Obje

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包