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

從Vue2到Vue3, 一鍵升級前端開發(fā)技能

這篇具有很好參考價值的文章主要介紹了從Vue2到Vue3, 一鍵升級前端開發(fā)技能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文的目的,是為了讓已經(jīng)有 Vue2 開發(fā)經(jīng)驗的??,快速掌握 Vue3 的寫法。

因此,?本篇假定你已經(jīng)掌握 Vue 的核心內(nèi)容?,只為你介紹編寫 Vue3 代碼,需要了解的內(nèi)容。

一、Vue3 里 script 的三種寫法

首先,Vue3 新增了一個叫做組合式 api 的東西,英文名叫 Composition API。因此 Vue3 的?script?現(xiàn)在支持三種寫法,

1、最基本的 Vue2 寫法

<template>
?<div>{{?count?}}</div>
?<button?@click="onClick">
?增加?1
?</button>
</template>
<script>
export?default?{
?data()?{
?return?{
?count:?1,
?};
?},
?methods:?{
?onClick()?{
?this.count?+=?1;
?},
?},
}
</script>

2、setup() 屬性

<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
import { ref } from 'vue';
export default {
 // 注意這部分
 setup() {
 let count = ref(1);
 const onClick = () => {
 count.value += 1;
 };
 return {
 count,
 onClick,
 };
 },
  
}
</script>

3、<script setup>

<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
</script>

正如你看到的那樣,無論是代碼行數(shù),還是代碼的精簡度,<script setup>?的方式是最簡單的形式。

如果你對 Vue 很熟悉,那么,我推薦你使用?<script setup>?的方式。

這種寫法,讓 Vue3 成了我最喜歡的前端框架。

如果你還是前端新人,那么,我推薦你先學(xué)習(xí)第一種寫法。

因為第一種寫法的學(xué)習(xí)負(fù)擔(dān)更小,先學(xué)第一種方式,掌握最基本的 Vue 用法,然后再根據(jù)我這篇文章,快速掌握 Vue3 里最需要關(guān)心的內(nèi)容。

第一種寫法,跟過去 Vue2 的寫法是一樣的,所以我們不過多介紹。

第二種寫法,所有的對象和方法都需要?return?才能使用,太啰嗦。除了舊項目,可以用這種方式體驗 Vue3 的新特性以外,我個人不建議了解這種方式。反正我自己暫時不打算精進(jìn)這部分。

所以,接下來,我們主要介紹的,也就是?<script setup>?,這種寫法里需要了解的內(nèi)容。

注意:?<script setup>?本質(zhì)上是第二種寫法的語法糖,掌握了這種寫法,其實第二種寫法也基本上就會了。(又多了一個不學(xué)第二種寫法的理由)。

二、如何使用 <script setup> 編寫組件

學(xué)習(xí) Vue3 并不代表你需要新學(xué)習(xí)一個技術(shù),Vue3 的底層開發(fā)思想,跟 Vue2 是沒有差別的。

V3 和 V2 的區(qū)別就像是,你用不同的語言或者方言說同一句話。

所以我們需要關(guān)心的,就是 Vue2 里的內(nèi)容,怎么用 Vue3 的方式寫出來。

1、data——唯一需要注意的地方

整個?data?這一部分的內(nèi)容,你只需要記住下面這一點。

以前在?data?中創(chuàng)建的屬性,現(xiàn)在全都用?ref()?聲明。

?template?中直接用,在?script?中記得加?.value?

在開頭,我就已經(jīng)寫了一個簡單的例子,我們直接拿過來做對比。

1)寫法對比

// Vue2 的寫法
<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return {
 count: 1,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
}
</script>
// Vue3 的寫法
<template>
<div>{{ count }}</div>
<button @click="onClick">
增加 1
</button>
</template>
<script setup>
import { ref } from 'vue';
// 用這種方式聲明
const count = ref(1);
const onClick = () => {
// 使用的時候記得 .value
count.value += 1;
};
</script>

2)注意事項——組合式?api?的心智負(fù)擔(dān)

a、ref 和 reactive

Vue3 里,還提供了一個叫做?reactive?的?api

但是我的建議是,你不需要關(guān)心它。絕大多數(shù)場景下,ref?都夠用了。

b、什么時候用?ref()?包裹,什么時候不用。

要不要用ref,就看你的這個變量的值改變了以后,頁面要不要跟著變。

當(dāng)然,你可以完全不需要關(guān)心這一點,跟過去寫?data?一樣就行。

只不過這樣做,你在使用的時候,需要一直?.value。

c、不要解構(gòu)使用

在使用時,不要像下面這樣去寫,會丟失響應(yīng)性。

也就是會出現(xiàn)更新了值,但是頁面沒有更新的情況

xml

復(fù)制代碼

// Vue3 的寫法
<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref } from 'vue';
const count = ref(1);
const onClick = () => {
 // 不要這樣寫?。? const { value } = count;
 value += 1;
};
</script>

注意:?學(xué)習(xí) Vue3 就需要考慮像這樣的內(nèi)容,徒增了學(xué)習(xí)成本。實際上這些心智負(fù)擔(dān),在學(xué)習(xí)的過程中,是可以完全不需要考慮的。

這也是為什么我推薦新人先學(xué)習(xí) Vue2 的寫法。

2、methods

聲明事件方法,我們只需要在?script?標(biāo)簽里,創(chuàng)建一個方法對象即可。

剩下的在 Vue2 里是怎么寫的,Vue3 是同樣的寫法。

xml

復(fù)制代碼

// Vue2 的寫法
<template>
 <div @click="onClick">
 這是一個div
 </div>
</template>
<script>
export default {
 methods: {
 onClick() {
 console.log('clicked')
 },
 },
}
</script>
//?Vue3?的寫法
<template>
?<div?@click="onClick">
?這是一個div
?</div>
</template>
<script?setup>
//?注意這部分
const?onClick?=?()?=>?{
?console.log('clicked')
}
</script>

3、props

聲明?props?我們可以用?defineProps(),具體寫法,我們看代碼。

1)寫法對比

// Vue2 的寫法
<template>
 <div>{{ foo }}</div>
</template>
<script>
export default {
 props: {
 foo: String,
 },
 created() {
 console.log(this.foo);
 },
}
</script>
// Vue3 的寫法
<template>
 <div>{{ foo }}</div>
</template>
<script setup>
// 注意這里
const props = defineProps({
 foo: String
})
// 在 script 標(biāo)簽里使用
console.log(props.foo)
</script>

2)注意事項——組合式?api?的心智負(fù)擔(dān)

使用 props 時,同樣注意不要使用解構(gòu)的方式。

<script setup>
const props = defineProps({
 foo: String
})
 // 不要這樣寫
const { foo } = props;
console.log(foo)
</script>

4、emits 事件

與?props?相同,聲明?emits?我們可以用?defineEmits(),具體寫法,我們看代碼。

// Vue2 的寫法
<template>
 <div @click="onClick">
 這是一個div
 </div>
</template>
<script>
export default {
 emits: ['click'], // 注意這里
 methods: {
 onClick() {
 this.$emit('click'); // 注意這里
 },
 },
  
}
</script>
// Vue3 的寫法
<template>
 <div @click="onClick">
 這是一個div
 </div>
</template>
<script setup>
// 注意這里
const emit = defineEmits(['click']);
const onClick = () => {
 emit('click') // 注意這里
}
</script>

5、computed

直接上寫法對比。

// Vue2 的寫法
<template>
 <div>
 <span>{{ value }}</span>
 <span>{{ reversedValue }}</span>
 </div>
</template>
<script>
export default {
 data() {
 return {
 value: 'this is a value',
 };
 },
 computed: {
 reversedValue() {
 return value
 .split('').reverse().join('');
 },
 },
}
</script>
// Vue3 的寫法
<template>
 <div>
 <span>{{ value }}</span>
 <span>{{ reversedValue }}</span>
 </div>
</template>
<script setup>
import {ref, computed} from 'vue'
const value = ref('this is a value')
// 注意這里
const reversedValue = computed(() => {
 // 使用 ref 需要 .value
 return value.value
 .split('').reverse().join('');
})
</script>

6、watch

這一部分,我們需要注意一下了,Vue3 中,watch 有兩種寫法。一種是直接使用?watch,還有一種是使用?watchEffect。

兩種寫法的區(qū)別是:

  • watch?需要你明確指定依賴的變量,才能做到監(jiān)聽效果。

  • 而?watchEffect?會根據(jù)你使用的變量,自動的實現(xiàn)監(jiān)聽效果。

1)直接使用?watch

// Vue2 的寫法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return { 
 count: 1,
 anotherCount: 0,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
 watch: {
 count(newValue) {
 this.anotherCount = newValue - 1;
 },
 },
}
</script>
// Vue3 的寫法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref, watch } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
const anotherCount = ref(0);
// 注意這里
// 需要在這里,
// 明確指定依賴的是 count 這個變量
watch(count, (newValue) => {
 anotherCount.value = newValue - 1;
})
</script>

2)使用?watchEffect

// Vue2 的寫法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return { 
 count: 1,
 anotherCount: 0,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
 watch: {
 count(newValue) {
 this.anotherCount = newValue - 1;
 },
 },
}
</script>
// Vue3 的寫法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref, watchEffect } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
const anotherCount = ref(0);
// 注意這里
watchEffect(() => {
 // 會自動根據(jù) count.value 的變化,
 // 觸發(fā)下面的操作
 anotherCount.value = count.value - 1;
})
</script>

7、生命周期

Vue3 里,除了將兩個?destroy?相關(guān)的鉤子,改成了?unmount,剩下的需要注意的,就是在?<script setup>?中,不能使用?beforeCreate?和?created?兩個鉤子。

如果你熟悉相關(guān)的生命周期,只需要記得在?setup?里,用?on?開頭,加上大寫首字母就行。

// 選項式 api 寫法
<template>
 <div></div>
</template>
<script>
export default {
 beforeCreate() {},
 created() {},
  
 beforeMount() {},
 mounted() {},
  
 beforeUpdate() {},
 updated() {},
  
 // Vue2 里叫 beforeDestroy
 beforeUnmount() {},
 // Vue2 里叫 destroyed
 unmounted() {},
  
 // 其他鉤子不常用,所以不列了。
}
</script>
// 組合式 api 寫法
<template>
 <div></div>
</template>
<script setup>
  import {
   onBeforeMount,
   onMounted,
   onBeforeUpdate,
   onUpdated,
   onBeforeUnmount,
   onUnmounted,
  } from 'vue'
  onBeforeMount(() => {})
  onMounted(() => {})
  onBeforeUpdate(() => {})
  onUpdated(() => {})
  onBeforeUnmount(() => {})
  onUnmounted(() => {})
</script>

三、結(jié)語

好了,對于快速上手 Vue3 來說,以上內(nèi)容基本已經(jīng)足夠了。

這篇文章本身不能做到幫你理解所有 Vue3 的內(nèi)容,但是能幫你快速掌握 Vue3 的寫法。

?

如果想做到對 Vue3 的整個內(nèi)容心里有數(shù),還需要你自己多看看 Vue3 的官方文檔。文章來源地址http://www.zghlxwxcb.cn/news/detail-481142.html

到了這里,關(guān)于從Vue2到Vue3, 一鍵升級前端開發(fā)技能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何升級Vue的版本 vue2.9.6升級到vue3.0

    如何升級Vue的版本 vue2.9.6升級到vue3.0

    背景:電腦使用多年,一直使用vue 2.x版本,項目開發(fā)過程中由于一個模塊涉及的集成模塊過多,導(dǎo)致需要進(jìn)行定義的變量越來越多,代碼出現(xiàn)冗余,因此在同事的推動下,鑒于vue 3.x的優(yōu)化,故對自己本來使用的vue 2.9.6升級到vue 3.0版本。那么如何升級呢,請查閱如下步驟:

    2023年04月08日
    瀏覽(21)
  • VUE3相比VUE2升級了哪些內(nèi)容

    VUE3相比VUE2升級了哪些內(nèi)容

    目錄 一、Vue 3 、Vue 2 對比及提升項 二、? Vue 3 創(chuàng)建app.vue示例 ?三、Vue3 的setup、Vue2 的 data對比 一、Vue 3 、Vue 2 對比及提升項 性能提升:Vue 3 做了大量的優(yōu)化工作,提升了運行時的性能。例如,在模板編譯時進(jìn)行的靜態(tài)分析和優(yōu)化,以及使用了更高效的響應(yīng)式系統(tǒng),使得數(shù)據(jù)

    2024年01月22日
    瀏覽(21)
  • Vue2與Vue3的區(qū)別與升級指南

    個人筆記不喜勿噴,如有錯誤感謝評論指正。 一、下面是Vue 2和Vue 3之間的一些主要區(qū)別: 1. 性能優(yōu)化: Vue 3對虛擬DOM進(jìn)行了重寫,提高了渲染性能。它引入了靜態(tài)樹提升和新的編譯器,減少了包的大小。 2. 響應(yīng)式系統(tǒng)的重寫: Vue 3中的響應(yīng)式系統(tǒng)使用了Proxy代理,而不再使

    2024年02月15日
    瀏覽(27)
  • vue2升級為vue3 vuedraggable 拖動組件報錯

    升級組件 npm i -S vuedraggable@next 使用示例 2、Item slot must have only one child 官方GitHub - SortableJS/vue.draggable.next: Vue 3 compatible drag-and-drop component based on Sortable.js ?官方demo https://sortablejs.github.io/vue.draggable.next/#/two-lists

    2024年02月16日
    瀏覽(23)
  • 使用Vue3和Vite升級你的Vue2+Webpack項目

    使用Vue3和Vite升級你的Vue2+Webpack項目

    ???? 博主貓頭虎(????)帶您 Go to New World??? ?? 博客首頁 ——????貓頭虎的博客?? ?? 《面試題大全專欄》 ?? 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍專欄》 ?? 學(xué)會IDEA常用操作,工作效率翻倍~?? ?? 《100天精通Golang(基礎(chǔ)

    2024年02月09日
    瀏覽(27)
  • 前端開發(fā)攻略---從源碼角度分析Vue3的Propy比Vue2的defineproperty到底好在哪里。一篇文章讓你徹底弄懂響應(yīng)式原理。

    前端開發(fā)攻略---從源碼角度分析Vue3的Propy比Vue2的defineproperty到底好在哪里。一篇文章讓你徹底弄懂響應(yīng)式原理。

    Vue的響應(yīng)式到底要干什么? 無非就是要知道當(dāng)你 讀取 對象的時候,要知道它讀了。要做一些別的事情 無非就是要知道當(dāng)你 修改 對象的時候,要知道它改了。要做一些別的事情 所以要想一個辦法, 把讀取和修改的動作變成一個函數(shù) ,讀取和修改的時候分別調(diào)用對應(yīng)的函數(shù)

    2024年04月17日
    瀏覽(34)
  • vue2+webpack升級vue3+vite,在vue3組合式編程中使用vuex

    同學(xué)們可以私信我加入學(xué)習(xí)群! 我的項目是從vue2+webpack升級為vue3+vite,這種升級工作,其實最重要的不是如何快速準(zhǔn)確地把原有vue2項目全部重構(gòu)為vue3項目,因為這是不現(xiàn)實的。 升級工作一定是一個長久的持續(xù)過程,所以如何保證舊的vue2項目與新的vue3模塊之間互相兼容,才

    2024年01月18日
    瀏覽(31)
  • 【前端面經(jīng)】Vue3和Vue2的區(qū)別

    Vue是一種非常流行的JavaScript框架,因其易用性和靈活性在開發(fā)人員中備受歡迎。Vue2是Vue框架的上一個重要版本,于2016年發(fā)布。但是,Vue3是最新版本的Vue框架,于2020年正式發(fā)布并帶來了一些重大變化。本文將探討Vue3和Vue2之間的主要區(qū)別。 Vue3的一個顯著優(yōu)勢是其更小的代碼

    2024年02月02日
    瀏覽(17)
  • 前端(四)——vue.js、vue、vue2、vue3

    前端(四)——vue.js、vue、vue2、vue3

    ??博主:小貓娃來啦 ??文章核心: vue.js、vue、vue2、vue3從全局到局部 Vue.js是一款流行的JavaScript框架 vue,vue2,vue3都是vue.js的不同版本。 Vue:Vue.js的第一個版本,也稱為Vue 1.x。它于2014年首次發(fā)布,并獲得了廣泛的應(yīng)用和認(rèn)可。 Vue2:Vue.js的第二個版本,也稱為Vue 2.x。它在Vu

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

    前端vue2、vue3去掉url路由“ # ”號——nginx配置

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

    2024年02月11日
    瀏覽(101)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包