国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

十分鐘,帶你了解 Vue3 的新寫法

來源: 責編: 時間:2023-08-20 23:16:59 654觀看
導讀最近,因為項目需要,不得不學習一下 vue3。于是花了 4 個小時,把 Vue3 過了一遍?,F在我來帶你快速了解 Vue3 的寫法。本文的目的,是為了讓已經有 Vue2 開發經驗的 人 ,快速掌握 Vue3 的寫法。因此, 本篇假定你已經掌握 Vue

最近,因為項目需要,不得不學習一下 vue3。于是花了 4 個小時,把 Vue3 過了一遍?,F在我來帶你快速了解 Vue3 的寫法。d0X28資訊網——每日最新資訊28at.com

d0X28資訊網——每日最新資訊28at.com

本文的目的,是為了讓已經有 Vue2 開發經驗的 人 ,快速掌握 Vue3 的寫法。d0X28資訊網——每日最新資訊28at.com

因此, 本篇假定你已經掌握 Vue 的核心內容 ,只為你介紹編寫 Vue3 代碼,需要了解的內容。d0X28資訊網——每日最新資訊28at.com

一、Vue3 里 script 的三種寫法

首先,Vue3 新增了一個叫做組合式 api 的東西,英文名叫 Composition API。因此 Vue3 的 script 現在支持三種寫法,d0X28資訊網——每日最新資訊28at.com

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>

正如你看到的那樣,無論是代碼行數,還是代碼的精簡度,<script setup> 的方式是最簡單的形式。d0X28資訊網——每日最新資訊28at.com

如果你對 Vue 很熟悉,那么,我推薦你使用 <script setup> 的方式。d0X28資訊網——每日最新資訊28at.com

這種寫法,讓 Vue3 成了我最喜歡的前端框架。d0X28資訊網——每日最新資訊28at.com

如果你還是前端新人,那么,我推薦你先學習第一種寫法。d0X28資訊網——每日最新資訊28at.com

因為第一種寫法的學習負擔更小,先學第一種方式,掌握最基本的 Vue 用法,然后再根據我這篇文章,快速掌握 Vue3 里最需要關心的內容。d0X28資訊網——每日最新資訊28at.com

第一種寫法,跟過去 Vue2 的寫法是一樣的,所以我們不過多介紹。d0X28資訊網——每日最新資訊28at.com

第二種寫法,所有的對象和方法都需要 return 才能使用,太啰嗦。除了舊項目,可以用這種方式體驗 Vue3 的新特性以外,我個人不建議了解這種方式。反正我自己暫時不打算精進這部分。d0X28資訊網——每日最新資訊28at.com

所以,接下來,我們主要介紹的,也就是 <script setup> ,這種寫法里需要了解的內容。d0X28資訊網——每日最新資訊28at.com

注意: <script setup> 本質上是第二種寫法的語法糖,掌握了這種寫法,其實第二種寫法也基本上就會了。(又多了一個不學第二種寫法的理由)。d0X28資訊網——每日最新資訊28at.com

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

學習 Vue3 并不代表你需要新學習一個技術,Vue3 的底層開發思想,跟 Vue2 是沒有差別的。d0X28資訊網——每日最新資訊28at.com

V3 和 V2 的區別就像是,你用不同的語言或者方言說同一句話。d0X28資訊網——每日最新資訊28at.com

所以我們需要關心的,就是 Vue2 里的內容,怎么用 Vue3 的方式寫出來。d0X28資訊網——每日最新資訊28at.com

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

整個 data 這一部分的內容,你只需要記住下面這一點。d0X28資訊網——每日最新資訊28at.com

以前在 data 中創建的屬性,現在全都用 ref() 聲明。d0X28資訊網——每日最新資訊28at.com

在 template 中直接用,在 script 中記得加 .value 。d0X28資訊網——每日最新資訊28at.com

在開頭,我就已經寫了一個簡單的例子,我們直接拿過來做對比。d0X28資訊網——每日最新資訊28at.com

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 的心智負擔

a、ref 和 reactive

Vue3 里,還提供了一個叫做 reactive 的 api。d0X28資訊網——每日最新資訊28at.com

但是我的建議是,你不需要關心它。絕大多數場景下,ref 都夠用了。d0X28資訊網——每日最新資訊28at.com

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

要不要用ref,就看你的這個變量的值改變了以后,頁面要不要跟著變。d0X28資訊網——每日最新資訊28at.com

當然,你可以完全不需要關心這一點,跟過去寫 data 一樣就行。d0X28資訊網——每日最新資訊28at.com

只不過這樣做,你在使用的時候,需要一直 .value。d0X28資訊網——每日最新資訊28at.com

c、不要解構使用

在使用時,不要像下面這樣去寫,會丟失響應性。d0X28資訊網——每日最新資訊28at.com

也就是會出現更新了值,但是頁面沒有更新的情況d0X28資訊網——每日最新資訊28at.com

// 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>

注意: 學習 Vue3 就需要考慮像這樣的內容,徒增了學習成本。實際上這些心智負擔,在學習的過程中,是可以完全不需要考慮的。d0X28資訊網——每日最新資訊28at.com

這也是為什么我推薦新人先學習 Vue2 的寫法。d0X28資訊網——每日最新資訊28at.com

2、methods

聲明事件方法,我們只需要在 script 標簽里,創建一個方法對象即可。d0X28資訊網——每日最新資訊28at.com

剩下的在 Vue2 里是怎么寫的,Vue3 是同樣的寫法。d0X28資訊網——每日最新資訊28at.com

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

3、props

聲明 props 我們可以用 defineProps(),具體寫法,我們看代碼。d0X28資訊網——每日最新資訊28at.com

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 標簽里使用console.log(props.foo)</script>

2)注意事項——組合式 api 的心智負擔

使用 props 時,同樣注意不要使用解構的方式。d0X28資訊網——每日最新資訊28at.com

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

4、emits 事件

與 props 相同,聲明 emits 我們可以用 defineEmits(),具體寫法,我們看代碼。d0X28資訊網——每日最新資訊28at.com

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

5、computed

直接上寫法對比。d0X28資訊網——每日最新資訊28at.com

// 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。d0X28資訊網——每日最新資訊28at.com

兩種寫法的區別是:d0X28資訊網——每日最新資訊28at.com

  • watch 需要你明確指定依賴的變量,才能做到監聽效果。
  • 而 watchEffect 會根據你使用的變量,自動的實現監聽效果。

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(() => {  // 會自動根據 count.value 的變化,  // 觸發下面的操作  anotherCount.value = count.value - 1;})</script>

7、生命周期

Vue3 里,除了將兩個 destroy 相關的鉤子,改成了 unmount,剩下的需要注意的,就是在 <script setup> 中,不能使用 beforeCreate 和 created 兩個鉤子。d0X28資訊網——每日最新資訊28at.com

如果你熟悉相關的生命周期,只需要記得在 setup 里,用 on 開頭,加上大寫首字母就行。d0X28資訊網——每日最新資訊28at.com

// 選項式 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>

三、結語

好了,對于快速上手 Vue3 來說,以上內容基本已經足夠了。d0X28資訊網——每日最新資訊28at.com

這篇文章本身不能做到幫你理解所有 Vue3 的內容,但是能幫你快速掌握 Vue3 的寫法。d0X28資訊網——每日最新資訊28at.com

如果想做到對 Vue3 的整個內容心里有數,還需要你自己多看看 Vue3 的官方文檔。d0X28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-6172-0.html十分鐘,帶你了解 Vue3 的新寫法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何使用 Python 生成和讀取條形碼

下一篇: 六種在 React 中獲取數據的方法

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
欧美91视频| 欧美日本精品一区二区三区| k8久久久一区二区三区| 欧美一区二区三区另类| 亚洲欧洲一区二区天堂久久| 欧美在线观看你懂的| 久久综合久久99| 久久99精品久久久| 91麻豆国产福利在线观看| 欧美伊人久久大香线蕉综合69| 欧美精品一区二区三区在线| 亚洲综合激情小说| 91色porny在线视频| 国产欧美日本在线| 国产亚洲精品福利| 极品美女销魂一区二区三区 | 亚洲日本丝袜连裤袜办公室| 蜜桃一区二区三区在线观看| 亚洲一二区在线| 91成人在线免费观看| 久久精品一级爱片| 国产成人三级在线观看| 欧美中文字幕亚洲一区二区va在线| 亚洲人被黑人高潮完整版| 99re热这里只有精品免费视频 | 日韩欧美成人一区| 成人精品国产免费网站| 国产一区二区高清不卡| 亚洲天堂福利av| 亚洲自拍偷拍图区| 亚洲日本激情| 一本一道久久a久久精品| 亚洲中国最大av网站| 1024成人| 日产精品久久久久久久性色| 在线影视一区二区三区| 国产精品伊人色| 国产欧美1区2区3区| 国产一区91| 成人av在线影院| 亚洲人成网站影音先锋播放| 老司机免费视频久久 | 午夜国产精品视频| 日韩电影一二三区| 久久久99精品免费观看不卡| 久久综合狠狠综合久久综青草| 久久国内精品自在自线400部| 日韩欧美在线影院| 国产伦精品一区二区三区四区免费| 日韩av一级片| 国产精品久久久久久久久晋中 | 亚洲欧美99| 欧美在线高清| 韩国v欧美v日本v亚洲v| 最近中文字幕一区二区三区| 日韩三级视频中文字幕| 久久九九精品| 91视视频在线直接观看在线看网页在线看| 久久婷婷成人综合色| 日本高清无吗v一区| 一本久久知道综合久久| 国产不卡视频一区二区三区| 蜜臀精品久久久久久蜜臀 | 不卡电影一区二区三区| 久久国内精品自在自线400部| 亚洲成在线观看| 亚洲啪啪综合av一区二区三区| 久久精品综合网| 精品国产一区二区三区av性色| 欧美美女bb生活片| 久久久久一区二区三区| 久久精品人人| 国产一区成人| 欧美日韩一区二区三区在线 | 欧美手机在线视频| 91久久精品网| 欧美军同video69gay| 欧美一区二区性放荡片| 日韩欧美区一区二| 国产亚洲欧美一区在线观看| 国产精品久久精品日日| xvideos.蜜桃一区二区| 欧美视频一区二区| 日韩欧美黄色影院| 欧美国产在线观看| 亚洲激情校园春色| 亚洲午夜免费电影| 欧美bbbbb| 97精品国产露脸对白| 国产精品一区专区| 92国产精品观看| 色综合天天性综合| 亚洲国产精品一区制服丝袜| 国产一区白浆| 欧美精品丝袜中出| 国产欧美日韩另类视频免费观看| 国产精品午夜久久| 日韩vs国产vs欧美| 成人免费不卡视频| 亚洲第一黄网| 欧美男男青年gay1069videost| 中文字幕在线观看一区二区| 午夜精品久久一牛影视| 国产电影精品久久禁18| 亚洲欧洲日夜超级视频| 欧美色综合久久| 国产精品美女久久久久久2018| 免费人成网站在线观看欧美高清| 狠狠色狠狠色综合系列| 亚洲一级影院| 久久免费电影网| 狠狠色综合播放一区二区| 欧美在线免费观看亚洲| 欧美精品一区二区三区四区| 亚洲国产精品一区二区久久恐怖片| 国产精品一线二线三线精华| 国产欧美日韩在线播放| 中文字幕不卡的av| 成人不卡免费av| 7777精品久久久大香线蕉| 秋霞午夜鲁丝一区二区老狼| 黄色成人在线网站| 欧美韩国一区二区| 91色在线porny| 91精品欧美综合在线观看最新| 日本一区中文字幕| 日韩视频精品| www.av精品| 91精品一区二区三区久久久久久| 中文字幕日本不卡| 亚洲午夜精品福利| 亚洲美女屁股眼交3| 亚洲免费观看| 亚洲丝袜制服诱惑| 欧美精品综合| 一区二区三区在线视频免费观看| 欧美一区二区三区在线播放| 国产亚洲欧美色| 亚洲精品乱码| 日韩vs国产vs欧美| 日本韩国精品在线| 国产高清久久久久| 2欧美一区二区三区在线观看视频| 国产不卡免费视频| 日韩欧美一二三四区| 欧美午夜精彩| 亚洲一区在线播放| 蜜桃av久久久亚洲精品| 久久99国产精品成人| 日韩精品在线一区二区| 欧美日韩国产欧| 亚洲www啪成人一区二区麻豆| 在线看日韩精品电影| 日韩国产在线观看一区| 777奇米成人网| 欧美激情一区| 蜜臀av一区二区| 亚洲bt欧美bt精品| 欧美性猛交xxxxxx富婆| 91啪亚洲精品| 日韩在线播放一区二区| 久久久久久久久久久久电影| 国产日韩欧美在线播放不卡| 久久99精品久久久久久国产越南 | 激情小说欧美图片| 国产精品美女久久福利网站| 91黄视频在线| 午夜日韩福利| 岛国av在线一区| 一区二区激情小说| 久久麻豆一区二区| 亚洲欧美视频| 黄色欧美成人| aaa欧美大片| 国产福利精品导航| 日日夜夜免费精品| 一区二区三区小说| 国产精品无圣光一区二区| 欧美另类高清zo欧美| 久久一区国产| 亚洲欧美日本日韩| 欧美午夜不卡影院在线观看完整版免费| 日韩av午夜在线观看| 婷婷亚洲久悠悠色悠在线播放| 欧美国产精品劲爆| 久久精品男人的天堂| 免费精品视频| 美女国产精品| 亚洲一区二区三区中文字幕 | 欧美日韩亚洲综合在线| 黑人一区二区三区四区五区| 9人人澡人人爽人人精品| 成人免费视频视频| 老司机免费视频一区二区| 亚洲欧美精品午睡沙发| 91视频免费观看| 精品夜夜嗨av一区二区三区| 久久久久国产成人精品亚洲午夜 | 99精品在线观看视频| 麻豆精品一区二区av白丝在线|