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

vue2和vue3

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

1. 雙向數(shù)據(jù)綁定原理發(fā)生了改變


vue2的雙向數(shù)據(jù)綁定是利用了es5 的一個(gè)API Object.definepropert() 對(duì)數(shù)據(jù)進(jìn)行劫持 結(jié)合發(fā)布訂閱模式來(lái)實(shí)現(xiàn)的。vue3中使用了es6的proxyAPI對(duì)數(shù)據(jù)進(jìn)行處理。
相比與vue2,使用proxy API 優(yōu)勢(shì)有:defineProperty只能監(jiān)聽(tīng)某個(gè)屬性,不能對(duì)全對(duì)象進(jìn)行監(jiān)聽(tīng);可以省去for in 、閉包等內(nèi)容來(lái)提升效率(直接綁定整個(gè)對(duì)象即可);可以監(jiān)聽(tīng)數(shù)組,不用再去單獨(dú)的對(duì)數(shù)組做特異性操作,vue3可以檢測(cè)到數(shù)組內(nèi)部數(shù)據(jù)的變化。


2.Vue3支持碎片(Fragments)


vue2中必須要有根標(biāo)簽
vue3中可以沒(méi)有根標(biāo)簽,會(huì)默認(rèn)將多個(gè)根標(biāo)簽包裹在一個(gè)fragement虛擬標(biāo)簽中,有利于減少內(nèi)存。
就是說(shuō)在組件可以擁有多個(gè)根節(jié)點(diǎn)。
vue2

<template>
? <div class='form-element'>
? ? ? <h2> {{ title }} </h2>
? </div>
</template>
vue3

<template>
? <div class='form-element'>
? </div>
? <h2> {{ title }} </h2>
</template>


3.v-if和v-for的優(yōu)先級(jí)


在vue2中v-for的優(yōu)先級(jí)高于v-if,可以放在一起使用,但是不建議這么做,會(huì)帶來(lái)性能上的浪費(fèi)
在vue3中v-if的優(yōu)先級(jí)高于v-for,一起使用會(huì)報(bào)錯(cuò)??梢酝ㄟ^(guò)在外部添加一個(gè)標(biāo)簽,將v-for移到外層.

4.key在template和v-if上的使用


vue2中:在使用v-if、vi-else、v-else-if時(shí),為了保證dom節(jié)點(diǎn)渲染的正確性,通常需要在對(duì)應(yīng)的節(jié)點(diǎn)添加不同的key,以確保vue在進(jìn)行虛擬dom對(duì)比時(shí)是準(zhǔn)確的;vue2中template在v-for循環(huán)時(shí)是不能設(shè)置key的,否則會(huì)產(chǎn)生警告(需要給子節(jié)點(diǎn)設(shè)置key)。
vue3中:在使用v-if、vi-else、v-else-if時(shí),不用提供唯一的key對(duì)dom節(jié)點(diǎn)進(jìn)行區(qū)分,因?yàn)関ue內(nèi)部會(huì)自動(dòng)生成唯一的key,如果你提供了key,那你就要保證它的唯一性;vue3中template在v-for循環(huán)時(shí),key應(yīng)該設(shè)置在template標(biāo)簽上

5.$listeners被移除


vue2中:使用$attrs訪問(wèn)傳遞給組件的屬性,使用$listeners訪問(wèn)傳遞給組件的事件(需要結(jié)合inheritAttrs:false)。
vue3中:虛擬dom中,事件監(jiān)聽(tīng)器僅僅是以on為前綴的屬性

6.Teleport


允許我們將指定內(nèi)容渲染在指定的html標(biāo)簽上
Teleport一般被翻譯成瞬間移動(dòng)組件,實(shí)際上是不好理解的.我把他理解成"獨(dú)立組件",
他可以那你寫(xiě)的組件掛載到任何你想掛載的DOM上,所以是很自由很獨(dú)立的

7. Composition API


組合式API和選項(xiàng)式API
在vue2中采用選項(xiàng)式API,將數(shù)據(jù)和函數(shù)集中起來(lái)處理,將功能點(diǎn)切割了當(dāng)邏輯復(fù)雜的時(shí)候不利于代碼閱讀。
在vue3中采用組合式API,將同一個(gè)功能的代碼集中起來(lái)處理,使得代碼更加有序,有利于代碼的書(shū)寫(xiě)和維護(hù),更加簡(jiǎn)便和整潔

8.sync修飾符


vue2中:由于vue中是單向數(shù)據(jù)流,父子組件在傳值時(shí)想要實(shí)現(xiàn)v-model的效果就要用到.sync修飾符來(lái)實(shí)現(xiàn)“雙向綁定”
vue3中:對(duì)v-model進(jìn)行了改造,不再需要 .sync 修飾符即可達(dá)到數(shù)據(jù)雙向綁定的效果。在vue3中支持多個(gè) v-model屬性,默認(rèn)使用 modelValue 作為 prop,update:modelValue作為事件,當(dāng)多個(gè)v-model綁定時(shí),書(shū)寫(xiě)為例:v-model:title="title",此時(shí) title 作為prop,update:title 作為事件

9.全局API


vue2中:有許多的全局API,如:Vue.directive、Vue.component、Vue.config、Vue.mixin等
vue3中:提供的是實(shí)例API,通過(guò)createApp創(chuàng)建vue實(shí)例,原來(lái)在Vue原型上的API都被掛載到了vue實(shí)例上,如:app.directive、app.component、app.config、app.mixin等

10.Vue.prototype 替換為 config.globalProperties


vue2中:綁定全局的變量、方法等:Vue.prototype.$ajax = xxxx
vue3中:const app = createApp({}); app.config.globalProperties.$ajax = xxxx


11. 建立數(shù)據(jù)data


vue2是把數(shù)據(jù)放入data中,vue3就需要使用一個(gè)新的setup()方法,此方法在組件初始化構(gòu)造得時(shí)候觸發(fā)。使用一下三個(gè)步驟來(lái)簡(jiǎn)=建立反應(yīng)性數(shù)據(jù): 1. 從vue引入reactive;使用reactive() 方法來(lái)聲明數(shù)據(jù)為響應(yīng)性數(shù)據(jù);3. 使用setup()方法來(lái)返回我們得響應(yīng)性數(shù)據(jù),從而template可以獲取這些響應(yīng)性數(shù)據(jù)。

12.生命周期


vue2 ? ? --------------- vue3
beforeCreate ? ? ? ? ? ? ? ? ? ? ? ? -> ? setup()
Created ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> ? setup()
beforeMount ? ? ? ? ? ? ? ? ? ? ? ? ?-> ? onBeforeMount
mounted ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-> ? ?onMounted
beforeUpdate ? ? ? ? ? ? ? ? ? ? ? ?-> ? ?onBeforeUpdate
updated ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> ? ?onUpdated
beforeDestroyed ? ? ? ? ? ? ? ? ? ?-> ? ?onBeforeUnmount
destroyed ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-> ? ? onUnmounted
activated ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-> ? ? onActivated
deactivated ? ? ? ? ? ? ? ? ? ? ? ? ? ?-> ? ? onDeactivated

13.this


vue2中:無(wú)時(shí)無(wú)刻都要使用this
vue3中:因?yàn)閟etup函數(shù)的存在,所有的props、data等都不需要用this進(jìn)行訪問(wèn)(vue3對(duì)vue2絕大多數(shù)是兼容的,如果你用了vue2相關(guān)的東西,那你還是需要像vue2一樣書(shū)寫(xiě))

13.typescript支持


vue2中:默認(rèn)是不支持typescript的。
vue3中:支持使用typescript,使用typescript在構(gòu)建大型項(xiàng)目時(shí),能夠很好的提高項(xiàng)目開(kāi)發(fā)的質(zhì)量。

14. 父子傳參不同,setup()函數(shù)特性


setup()函數(shù)接收兩個(gè)參數(shù):props、context(包含attrs、slots、emit)
setup函數(shù)是處于生命周期beforeCreated和created倆個(gè)鉤子函數(shù)之前
執(zhí)行setup時(shí),組件實(shí)例尚未被創(chuàng)建(在setup()內(nèi)部,this不會(huì)是該活躍實(shí)例得引用,即不指向vue實(shí)例,Vue為了避免我們錯(cuò)誤得使用,直接將setup函數(shù)中得this修改成了undefined)
與模板一起使用時(shí),需要返回一個(gè)對(duì)象
因?yàn)閟etup函數(shù)中,props是響應(yīng)式得,當(dāng)傳入新的prop時(shí),它將會(huì)被更新,所以不能使用es6解構(gòu),因?yàn)樗鼤?huì)消除prop得響應(yīng)性,如需解構(gòu)prop,可以通過(guò)使用setup函數(shù)中得toRefs來(lái)完成此操作。
父?jìng)髯樱胮rops,子傳父用事件 Emitting Events。在vue2中,會(huì)調(diào)用this$emit然后傳入事件名和對(duì)象;在vue3中得setup()中得第二個(gè)參數(shù)content對(duì)象中就有emit,那么我們只要在setup()接收第二個(gè)參數(shù)中使用分解對(duì)象法取出emit就可以在setup方法中隨意使用了。
在setup()內(nèi)使用響應(yīng)式數(shù)據(jù)時(shí),需要通過(guò) .value 獲取
import { ref } from 'vue'
const count = ref(0)
console.log(count.value)
從setup() 中返回得對(duì)象上得property 返回并可以在模板中被訪問(wèn)時(shí),它將自動(dòng)展開(kāi)為內(nèi)部值。不需要在模板中追加.value。
setup函數(shù)只能是同步的不能是異步的。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-660365.html

到了這里,關(guān)于vue2和vue3的文章就介紹完了。如果您還想了解更多內(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)文章

  • 從Vue2到Vue3, 一鍵升級(jí)前端開(kāi)發(fā)技能

    本文的目的,是為了讓已經(jīng)有 Vue2 開(kāi)發(fā)經(jīng)驗(yàn)的 ? 人 ? ,快速掌握 Vue3 的寫(xiě)法。 因此, ? 本篇假定你已經(jīng)掌握 Vue 的核心內(nèi)容 ? ,只為你介紹編寫(xiě) Vue3 代碼,需要了解的內(nèi)容。 首先,Vue3 新增了一個(gè)叫做組合式 api 的東西,英文名叫 Composition API 。因此 Vue3 的? script ?現(xiàn)在支

    2024年02月08日
    瀏覽(26)
  • 關(guān)于前端框架vue2升級(jí)為vue3的相關(guān)說(shuō)明

    關(guān)于前端框架vue2升級(jí)為vue3的相關(guān)說(shuō)明

    一些框架需要升級(jí) 當(dāng)前(202306) Vue 的最新穩(wěn)定版本是 v3.3.4 。Vue 框架升級(jí)為最新的3.0版本,涉及的相關(guān)依賴變更有: 前提條件:已安裝 16.0 或更高版本的Node.js(摘) 必須的變更:核心庫(kù)vue@23、路由vue-router@34、狀態(tài)管理vuex@34 構(gòu)建工具鏈: Vue CLI Vite(摘) 狀態(tài)管理: Vuex Pi

    2024年02月15日
    瀏覽(63)
  • uniapp引入全局js,vue2/vue3不同方式引入

    uniapp引入全局js,vue2/vue3不同方式引入

    Hi I’m Shendi uniapp引入全局js,vue2/vue3不同方式引入 最近寫(xiě)小程序,個(gè)人開(kāi)發(fā),選用了 uni-app 進(jìn)行開(kāi)發(fā) 選用的 vue3 版本 因?yàn)槲矣玫?vue3 版本,在這里踩了沒(méi)學(xué)過(guò)vue3的坑,用vue2引入全局js的方式使用,導(dǎo)致undefined… Vue2 版引入全局js的方法如下 將js放到項(xiàng)目?jī)?nèi),一般放到自建的

    2024年02月03日
    瀏覽(28)
  • 前端vue2、vue3去掉url路由“ # ”號(hào)——nginx配置

    前端vue2、vue3去掉url路由“ # ”號(hào)——nginx配置

    大家好,我是yma16,本文分享關(guān)于vue2、vue3去掉url路由 # 號(hào)——nginx配置。 html的 hash模式 HTML的hash模式指的是URL中的錨點(diǎn)部分(#后面的內(nèi)容)被用于在單個(gè)頁(yè)面中顯示不同的內(nèi)容,而不是導(dǎo)航到不同的頁(yè)面。例如: 在這個(gè)示例中, #about 部分是一個(gè)錨點(diǎn),用于在頁(yè)面上顯示關(guān)

    2024年02月11日
    瀏覽(101)
  • Vue2和Vue3是Vue.js框架的兩個(gè)主要版本,它們之間有以下區(qū)別

    性能優(yōu)化:Vue3在內(nèi)部進(jìn)行了重寫(xiě),采用了更高效的虛擬DOM算法,使得渲染速度更快,性能更好。 更小的體積:Vue3的體積比Vue2更小,這意味著更快的下載和加載速度。 Composition API:Vue3引入了Composition API,它是一種新的組合式API,可以更好地組織和重用組件邏輯,使得代碼更

    2024年02月15日
    瀏覽(26)
  • 前端經(jīng)典面試題 | 吊打面試官系列 之 Vue2和Vue3的區(qū)別

    ??? 前端經(jīng)典面試題 吊打面試官 專欄:Vue2和Vue3的區(qū)別 ????? 個(gè)人簡(jiǎn)介:一個(gè)不甘平庸的平凡人?? ? 個(gè)人主頁(yè):CoderHing的個(gè)人主頁(yè) ?? 格言: ?? 路漫漫其修遠(yuǎn)兮,吾將上下而求索?? ?? 你的一鍵三連是我更新的最大動(dòng)力?? 目錄 一、回答點(diǎn) 二、深入回答 監(jiān)測(cè)機(jī)制

    2024年01月16日
    瀏覽(21)
  • vue3前端開(kāi)發(fā),感受一下組合式api和VUE2選項(xiàng)式的差異

    vue3前端開(kāi)發(fā),感受一下組合式api和VUE2選項(xiàng)式的差異

    vue3前端開(kāi)發(fā),感受一下組合式api和VUE2選項(xiàng)式的差異!今天開(kāi)始,正式開(kāi)始,進(jìn)入學(xué)習(xí)Vue3的內(nèi)容。以后代碼,案例分享,都會(huì)采用組合式api的模式為大家做展示。 今天是第一節(jié),帶大家感受一下,Vue3的組合式api和之前傳統(tǒng)的vue2版本選項(xiàng)式api的差別。 首先,大家需要提前使用

    2024年01月19日
    瀏覽(32)
  • 微前端-qiankun:vue3-vite 接入 vue3、nuxt3、vue2、nuxt2等子應(yīng)用

    一、了解qiankun.js qiankun - qiankun 1.1、簡(jiǎn)單, 任意 js 框架均可使用。微應(yīng)用接入像使用接入一個(gè) iframe 系統(tǒng)一樣簡(jiǎn)單,但實(shí)際不是 iframe。 1.2、完備, 幾乎包含所有構(gòu)建微前端系統(tǒng)時(shí)所需要的基本能力,如 樣式隔離、js 沙箱、預(yù)加載等。解耦,與技術(shù)無(wú)關(guān)。 1.3、生產(chǎn)可用, 已

    2024年02月03日
    瀏覽(47)
  • 前端技術(shù)Html,Css,JavaScript,Vue3

    1.基本標(biāo)簽 2.文本格式化 3.鏈接 4.圖片 5.無(wú)序列表 6.有序列表 7.表格 8.表單 1.選擇器 2.文本和字體 3.鏈接 4.隱藏 5.定位position 6.浮動(dòng) 7.對(duì)齊 8.圖像 1.輸出 2.函數(shù) 3.常用事件 4.DOM 5.改變Html 6.DOM 元素 (節(jié)點(diǎn)) 尾部創(chuàng)建新的 HTML 元素 (節(jié)點(diǎn)) - appendChild() 頭部創(chuàng)建新的 HTML 元素 (節(jié)點(diǎn))

    2024年02月13日
    瀏覽(53)
  • Vue2和vue3中雙向數(shù)據(jù)綁定的原理,ES6的Proxy對(duì)象代理和JavaScript的Object.defineProperty,使用詳細(xì)

    簡(jiǎn)介: Object.defineProperty大家都知道,是vue2中雙向數(shù)據(jù)綁定的原理,它 是 JavaScript 中一個(gè)強(qiáng)大且常用的方法,用于定義對(duì)象屬性,允許我們精確地控制屬性的行為,包括讀取、寫(xiě)入和刪除等操作; 而Proxy是vue3中雙向數(shù)據(jù)綁定的原理,是ES6中一種用于創(chuàng)建代理對(duì)象的特殊對(duì)象,

    2024年02月15日
    瀏覽(46)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包