国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue經(jīng)典面試題:Vue2和Vue3的區(qū)別

這篇具有很好參考價(jià)值的文章主要介紹了Vue經(jīng)典面試題:Vue2和Vue3的區(qū)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

  • 雙向綁定原理

    • vue2是用過(guò)ES5的一個(gè)API Object.defineProperty()對(duì)數(shù)據(jù)進(jìn)行劫持配合發(fā)布訂閱者模式的方式來(lái)實(shí)現(xiàn)的

    • Vue3是使用了ES6的proxyAPI對(duì)數(shù)據(jù)代理

  • Vue3支持碎片(Fragments)

    • 就是說(shuō)組件可以有多個(gè)根節(jié)點(diǎn)

  • Composition API

  • vue2采用選項(xiàng)類型API,而vue3采用 合成型API。代碼更加的簡(jiǎn)便整潔

  • 生命周期鉤子函數(shù)

    • 若組件被keep-alive包裹,則多出下面兩個(gè)鉤子函數(shù)

    • onActivated() 激活時(shí)執(zhí)行 onDeactivated() 失活時(shí)執(zhí)行

  • setup()函數(shù)新特性

    • 它接受兩個(gè)參數(shù)(props、context(包含attrs、slots、emit))

    • 在beforeCreate和Created 兩個(gè)鉤子函數(shù)之前的函數(shù)

    • 執(zhí)行setup時(shí),組件實(shí)例尚未被創(chuàng)建,在setup內(nèi)部this不指向vue實(shí)例,是undefined

    • 和模板一起使用:需要返回一個(gè)對(duì)象 定義的變量和方法最后都需要return 出去

    • 使用渲染函數(shù):可以返回一個(gè)渲染函數(shù),該函數(shù)可以直接使用在同一作用域中聲明的響應(yīng)式狀態(tài)

      • 注意:

      • setup函數(shù)中的props是響應(yīng)式的,當(dāng)傳入新的prop時(shí),它將被更新 但是因?yàn)閜rops是響應(yīng)式的,所以不能使用ES6解構(gòu),因?yàn)闀?huì)消除prop的響應(yīng)式。可以通過(guò)setup函數(shù)中的toRefs來(lái)完成此操作

      • setup函數(shù)只能是同步的不能是異步的

      • setup函數(shù)只會(huì)在初始化的時(shí)候執(zhí)行一次

  • teleport瞬移組件

  • 如何取舍ref和reactive

    • 優(yōu)先使用ref函數(shù),因?yàn)閞ef函數(shù) 可以處理簡(jiǎn)單數(shù)據(jù)類型,也可以處理復(fù)雜類型,常用于數(shù)據(jù)類型定義響應(yīng)式數(shù)據(jù)

      ref特點(diǎn):在代碼中獲取或者修改值時(shí),需要補(bǔ) .value 但是在template模板中不需要

    • reactive 常用于定義復(fù)雜數(shù)據(jù)類型作為響應(yīng)式數(shù)據(jù)

      特點(diǎn) :不需要 .value,如果明確知道對(duì)象中有什么屬性久使用reactive

  • 父子通信

    • 父?jìng)髯?/p>

      • 在setup函數(shù)中有兩個(gè)參數(shù) 第一個(gè)參數(shù)為props,第二個(gè)參數(shù)為context

- props為一個(gè)對(duì)象,props接收后,內(nèi)部包含了所有傳遞過(guò)來(lái)的prop數(shù)據(jù)
?
- 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}
      }, 
    • 父?jìng)髯樱涸趕etup中使用props數(shù)據(jù) setup(props){ props就是父組件數(shù)據(jù) }

    • 子傳父:觸發(fā)自定義事件的時(shí)候emit來(lái)自 setup(props,{emit}){ emit 就是觸發(fā)事件函數(shù)}

  • performance

  • 原本在vue2中虛擬dom時(shí)進(jìn)行全量的杜比,而在vue3中新增了靜態(tài)標(biāo)記(patchFlag),值對(duì)比帶有PF的節(jié)點(diǎn),并通過(guò)Flag的信息得知當(dāng)前節(jié)點(diǎn)要比對(duì)的內(nèi)容,這樣就無(wú)需遍歷整個(gè)虛擬dom,從而大大提升性能。

  • vue3響應(yīng)式原理

    • 實(shí)現(xiàn)原理

      • 通過(guò)proxy(代理):攔截對(duì)象中任意屬性的變化,包括:屬性值的讀寫、添加和刪除

      • 通過(guò)reflect(反射)ES6:對(duì)源數(shù)據(jù)的屬性進(jìn)行操作。

        proxy: 
         ?  [[handle]]: 增刪改查靠它完成
         ?  [[target]]: 數(shù)據(jù)
        }
    • Object.defineProperty是單線程,不能捕獲錯(cuò)誤 只能通過(guò)try和catch實(shí)現(xiàn)

      Reflect可以捕獲錯(cuò)誤(reflect也具有defineProperty)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-418161.html

      const per 代理數(shù)據(jù) = new proxy 代理對(duì)象 (源數(shù)據(jù)person,操作項(xiàng){         
       ? ?per: 代理數(shù)據(jù)
       ?proxy: 代理對(duì)象,倆個(gè)參數(shù)(源數(shù)據(jù)、操作項(xiàng))
      ?
          get (源數(shù)據(jù)target,屬性名propName) {
       ? ? ? ?return Reflect.get(target,propName)
        }
          
          set (源數(shù)據(jù)target,屬性名propName,操作后的值value) {
       ? ? ? ?追加也能調(diào)用,引起源數(shù)據(jù)的變化
       ? ? ? ?Reflect.set(target,propName,value)
       ?  }
      ?
          deleteProperty (源數(shù)據(jù)target,屬性名propName) {
       ? ? ? ?return Reflect.delete(target,propName)
       ?  }
      })

到了這里,關(guān)于Vue經(jīng)典面試題:Vue2和Vue3的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue雙向數(shù)據(jù)綁定原理(面試必問(wèn))

    Vue雙向數(shù)據(jù)綁定原理(面試必問(wèn))

    1、前端面試題庫(kù) ( 面試必備) ? ? ? ? ? ? 推薦:★★★★★ 地址:前端面試題庫(kù) ? vue.js是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,通過(guò)Object.defineProperty()來(lái)劫持各個(gè)屬性的setter,getter,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽(tīng)回調(diào)來(lái)渲染視圖。 具體步驟

    2023年04月08日
    瀏覽(18)
  • 【Vue3】2-10 : 表單處理與雙向數(shù)據(jù)綁定原理

    【Vue3】2-10 : 表單處理與雙向數(shù)據(jù)綁定原理

    一、表單處理 1.1、【雙向綁定】實(shí)現(xiàn)方式一:v-model >??代碼? >? 效果? 1.2、【雙向綁定】實(shí)現(xiàn)方式二::value屬性 + input事件 >??代碼? >? 效果?(同上) 二、實(shí)戰(zhàn) 2.1 【v-model 示例】輸入框? >??代碼 +?效果 (見(jiàn)1.1) 2.2 【v-model 示例】單選框? >??代碼? >? 效果 2

    2024年01月20日
    瀏覽(30)
  • vue2和vue3關(guān)于class類的綁定以及style的綁定的區(qū)別

    vue2和vue3關(guān)于class類的綁定以及style的綁定的區(qū)別

    本篇為個(gè)人筆記 例如:?jiǎn)蝹€(gè)類綁定 多個(gè)類綁定: ? 例如:?jiǎn)蝹€(gè)綁定 ?多個(gè)綁定

    2024年02月16日
    瀏覽(25)
  • vue面試題_vue2和vue3的區(qū)別

    1、數(shù)據(jù)綁定原理不同 vue2:vue2的數(shù)據(jù)綁定是利用ES5的一個(gè)API:Object.definePropert() 對(duì)數(shù)據(jù)進(jìn)行劫持,結(jié)合發(fā)布訂閱模式的方式來(lái)實(shí)現(xiàn)的。 vue3:vue3中使用了ES6的Proxy API對(duì)數(shù)據(jù)代理。相比vue2.x,使用proxy的優(yōu)勢(shì)如下: defineProperty只能監(jiān)聽(tīng)某個(gè)屬性,不能對(duì)全對(duì)象監(jiān)聽(tīng) 可以省去for

    2024年02月10日
    瀏覽(26)
  • react和vue2/3父子組件的雙向綁定

    react和vue2/3父子組件的雙向綁定

    目錄 Vue3 父子傳值:props(attrs)/emit 父?jìng)髯?props 父child :屬性名=\\\"變量\\\" 子props=defineProps({屬性名:type...}) attrs父作用域(除 class、 style 、?props?)屬性集合 父child :屬性名=\\\"變量\\\",屬性名=\\\"常量\\\" 子?attrs = useAttrs() 子傳父emits+@=v-on: 父child @事件名\\\"=\\\"parentClick\\\",parentClick(msg) 子emi

    2024年02月16日
    瀏覽(29)
  • vue3組件之間雙向綁定

    Vue3中組件的雙向綁定統(tǒng)一使用 v-model 進(jìn)行處理,并且可以和多個(gè)數(shù)據(jù)進(jìn)行綁定,例如 v-model:foo、v-model:bar。 v-model 等價(jià)于 :model-value=\\\"someValue\\\" 和 @update:model-value=\\\"someValue = $event\\\" v-model:foo 等價(jià)于 :foo=\\\"someValue\\\" 和 @update:foo=\\\"someValue = $event\\\" 父子組件之間雙向綁定 子組件可以結(jié)合 i

    2024年02月11日
    瀏覽(23)
  • 在vue2使用v-model對(duì)組件進(jìn)行雙向綁定

    v-model=“visible” 等價(jià)于 :value=“visible” 加上 @input=“visible = $event” 所以 v-model 就是父組件向子組件傳了個(gè) value 字段的值,子組件使用 props 定義 value 字段, 就可以在子組件使用 value 讀取這個(gè)值;子組件使用 $emit(‘input’,值) 就可以改變 v-model 的值 父組件 子組件 父組件 子

    2024年02月10日
    瀏覽(16)
  • 【Vue3 知識(shí)第四講】數(shù)據(jù)雙向綁定、事件綁定、事件修飾符詳解

    【Vue3 知識(shí)第四講】數(shù)據(jù)雙向綁定、事件綁定、事件修飾符詳解

    什么是數(shù)據(jù)雙向綁定? 當(dāng)數(shù)據(jù)發(fā)生變化的時(shí)候,視圖會(huì)相應(yīng)的發(fā)生變化 當(dāng)視圖發(fā)生改變的時(shí)候,數(shù)據(jù)也會(huì)相應(yīng)的同步變化 數(shù)字化管理平臺(tái) Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 權(quán)限系統(tǒng)-商城 個(gè)人博客地址 雙向綁定的指令 ? v-model 指令實(shí)現(xiàn)數(shù)據(jù)雙向綁定 雙向綁定使用場(chǎng)景 ?

    2024年02月09日
    瀏覽(18)
  • VUE數(shù)據(jù)雙向綁定原理解析

    在Vue.js中,數(shù)據(jù)雙向綁定是一項(xiàng)非常強(qiáng)大的功能。它使開(kāi)發(fā)者能夠輕松地將模板與數(shù)據(jù)進(jìn)行動(dòng)態(tài)關(guān)聯(lián),實(shí)現(xiàn)了頁(yè)面和數(shù)據(jù)之間的實(shí)時(shí)同步更新。本文將深入探討VUE中數(shù)據(jù)雙向綁定的原理,并通過(guò)代碼示例演示其工作機(jī)制。 VUE使用了JavaScript對(duì)象屬性的 Object.defineProperty() 方法來(lái)

    2024年02月11日
    瀏覽(19)
  • Vue雙向綁定的原理是什么?

    在 Vue 中,雙向綁定是指數(shù)據(jù)的變化會(huì)同時(shí)反映在視圖上,而視圖的變化也會(huì)同步更新數(shù)據(jù)。Vue 的雙向綁定是通過(guò)以下原理實(shí)現(xiàn)的: 數(shù)據(jù)響應(yīng)系統(tǒng)(Reactivity System):Vue 使用了響應(yīng)式的數(shù)據(jù)綁定機(jī)制。當(dāng)你在 Vue 實(shí)例中的數(shù)據(jù)屬性上使用 data 選項(xiàng)定義數(shù)據(jù)時(shí),Vue 會(huì)通過(guò) Obje

    2024年02月08日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包