亚洲精品综合久久中文字幕_国产女主播在线_日本中文一区二区三区_裸体一区二区三区_99re这里只有精品首页_成人国产精品免费网站_亚洲欧美网站在线观看_九九久久婷婷

您的位置:首頁 >熱訊 > 觀察 >

Vue3從入門到精通(一) 環球觀天下

Vue3簡介

Vue3是Vue.js的最新版本,于2020年9月18日正式發布。Vue3相比Vue2有很多改進和優化,包括但不限于:


(資料圖)

更快的渲染速度:Vue3通過使用Proxy代理對象和優化虛擬DOM算法等方式,提高了渲染性能。

更小的體積:Vue3的體積比Vue2更小,打包后的文件更小,加載速度更快。

更好的類型支持:Vue3對TypeScript的支持更加友好,提供了更好的類型支持。

更好的組合式API:Vue3提供了更好的組合式API,使得組件的復用和維護更加方便。

更好的Tree-shaking支持:Vue3對Tree-shaking的支持更加完善,可以更好地優化打包后的代碼。

總之,Vue3是一個更加優秀的版本,可以幫助開發者更好地構建高性能、易維護的Web應用程序。

Vue API風格

Vue API風格主要有兩種:對象風格和函數風格。

對象風格

對象風格是Vue 2.x版本的API風格,它將Vue實例作為一個對象,通過對象的屬性和方法來操作Vue實例。例如:

var vm = new Vue({  el: "#app",  data: {    message: "Hello Vue!"  },  methods: {    showMessage: function () {      alert(this.message)    }  }})?vm.message = "Hello World!"vm.showMessage()

在上面的代碼中,我們使用對象風格的API來創建Vue實例,設置數據和方法,并通過vm對象來操作Vue實例。

函數風格

函數風格是Vue 3.x版本的API風格,它將Vue實例作為一個函數,通過函數的參數和返回值來操作Vue實例。例如:

import { createApp } from "vue"?const app = createApp({  data() {    return {      message: "Hello Vue!"    }  },  methods: {    showMessage() {      alert(this.message)    }  }})?const vm = app.mount("#app")?vm.message = "Hello World!"vm.showMessage()

在上面的代碼中,我們使用函數風格的API來創建Vue實例,設置數據和方法,并通過app.mount()方法來掛載Vue實例,然后通過vm對象來操作Vue實例。

總的來說,函數風格的API更加簡潔和易于理解,而且更加符合現代JavaScript的編程風格。因此,Vue 3.x版本的API采用了函數風格。

Vue3開發前的準備

在開始使用Vue3進行開發之前,需要進行以下準備工作:

安裝Node.js和npm

Vue3需要Node.js和npm的支持,因此需要先安裝它們。可以在Node.js官網下載對應版本的安裝包進行安裝。

安裝Vue CLI

Vue CLI是Vue.js官方提供的腳手架工具,可以幫助我們快速創建Vue項目。可以使用以下命令全局安裝Vue CLI:

npm install -g @vue/cli

選擇編輯器

選擇一個適合自己的編輯器進行開發,推薦使用Visual Studio Code,它有很多Vue相關的插件和工具。

學習Vue基礎知識

在使用Vue3進行開發之前,需要先掌握Vue的基礎知識,包括Vue的核心概念、Vue組件、Vue指令、Vue生命周期等。

學習TypeScript

Vue3使用TypeScript進行開發,因此需要先學習TypeScript的基礎知識,包括TypeScript的數據類型、接口、類、泛型等。

總的來說,學習Vue3需要一定的前置知識,需要掌握Node.js、npm、Vue CLI、編輯器、Vue基礎知識和TypeScript等知識點。

vue3 項目目錄結構

Vue3項目的目錄結構與Vue2有些不同,主要是因為Vue3使用了新的模塊化系統和TypeScript語言。

以下是一個Vue3項目的典型目錄結構:

├── public│   ├── index.html│   └── favicon.ico├── src│   ├── assets│   ├── components│   ├── router│   ├── store│   ├── utils│   ├── views│   ├── App.vue│   └── main.ts├── tests├── node_modules├── package.json├── tsconfig.json└── README.md

public:存放靜態資源文件,如HTML文件、圖片、圖標等。

src:存放源代碼文件。

assets:存放靜態資源文件,如CSS、圖片、字體等。

components:存放Vue組件文件。

router:存放Vue Router路由文件。

store:存放Vuex狀態管理文件。

utils:存放工具函數文件。

views:存放頁面組件文件。

App.vue:根組件文件。

main.ts:入口文件,包括Vue實例的創建和掛載等。

tests:存放測試文件。

node_modules:存放項目依賴的第三方庫。

package.json:存放項目的配置信息和依賴庫信息。

tsconfig.json:存放TypeScript編譯器的配置信息。

README.md:項目說明文件。

總的來說,Vue3項目的目錄結構與Vue2有些不同,但是基本的結構還是相似的,包括靜態資源文件、源代碼文件、測試文件、依賴庫信息等。

vue3 模板語法

Vue3的模板語法與Vue2的模板語法基本相同,但也有一些變化。以下是Vue3的模板語法:

插值表達式

Vue3的插值表達式使用{{}},例如:

{{ message }}

指令

Vue3的指令使用v-前綴,例如:

常用的指令包括:

v-if:條件渲染。

v-for:循環渲染。

v-bind:綁定屬性。

v-on:綁定事件。

v-model:雙向綁定。

計算屬性

Vue3的計算屬性使用computed關鍵字,例如:

?<script>export default {  data() {    return {      message: "Hello World"    }  },  computed: {    reversedMessage() {      return this.message.split("").reverse().join("")    }  }}</script>

監聽器

Vue3的監聽器使用watch關鍵字,例如:

?<script>export default {  data() {    return {      message: "Hello World"    }  },  watch: {    message(newValue, oldValue) {      console.log(newValue, oldValue)    }  }}</script>

生命周期

Vue3的生命周期與Vue2基本相同,但是使用了新的API。例如:

?<script>import { onMounted, onUpdated, onUnmounted } from "vue"?export default {  data() {    return {      message: "Hello World"    }  },  setup() {    onMounted(() => {      console.log("mounted")    })    onUpdated(() => {      console.log("updated")    })    onUnmounted(() => {      console.log("unmounted")    })  }}</script>

總的來說,Vue3的模板語法與Vue2基本相同,但是使用了新的API,包括computedwatch和生命周期等。

vue3 屬性綁定

在Vue3中,屬性綁定使用v-bind:或簡寫的:,例如:

?<script>export default {  data() {    return {      className: "red"    }  }}</script>

上面的代碼中,:class綁定了一個名為className的data屬性,這個屬性的值為"red",所以

元素會被添加一個class屬性,值為"red"

除了綁定data屬性,還可以綁定表達式、計算屬性、甚至是方法的返回值。例如:

?<script>export default {  data() {    return {      isActive: true    }  },  methods: {    getClass() {      return this.isActive ? "active" : "inactive"    }  }}</script>

上面的代碼中,:class綁定了一個三元表達式和一個方法的返回值,這兩個值都可以被作為class屬性的值。

需要注意的是,在Vue3中,綁定屬性時,可以使用v-bind:或簡寫的:,但是在綁定事件時,必須使用v-on:或簡寫的@。例如:

?<script>export default {  methods: {    handleClick() {      console.log("clicked")    }  }}</script>

上面的代碼中,@click綁定了一個handleClick方法,這個方法會在按鈕被點擊時被調用。

vue3 條件渲染

Vue3中的條件渲染和Vue2類似,使用v-ifv-else指令來控制元素的顯示和隱藏。

示例代碼如下:

?<script>export default {  data() {    return {      show: true    }  }}</script>

上面的代碼中,根據show的值來決定顯示哪個

元素。

除了v-ifv-else,還有v-else-if可以用來實現多個條件的判斷。

示例代碼如下:

?<script>export default {  data() {    return {      type: "B"    }  }}</script>

上面的代碼中,根據type的值來決定顯示哪個

元素。

需要注意的是,v-if是惰性的,只有當條件為真時才會渲染元素,否則不會渲染。而v-show則是直接控制元素的顯示和隱藏,不管條件是否為真,元素都會被渲染,只是樣式被設置為display: none

vue3 列表渲染

Vue3中的列表渲染和Vue2類似,使用v-for指令來遍歷數組或對象,并生成對應的元素。

示例代碼如下:

?<script>export default {  data() {    return {      list: ["item1", "item2", "item3"]    }  }}</script>

上面的代碼中,使用v-for指令遍歷list數組,并生成對應的

  • 元素。

    除了數組,也可以遍歷對象,例如:

    ?<script>export default {  data() {    return {      obj: {        key1: "value1",        key2: "value2",        key3: "value3"      }    }  }}</script>

    上面的代碼中,使用v-for指令遍歷obj對象,并生成對應的

  • 元素。

    需要注意的是,每個v-for都需要指定一個唯一的key屬性,用來標識每個元素的唯一性,以便在更新時能夠正確地識別每個元素。

    vue3 通過key管理狀態

    在Vue3中,通過key屬性可以管理組件或元素的狀態。當一個組件或元素的key屬性發生變化時,Vue會認為它是一個不同的組件或元素,從而重新渲染它。

    示例代碼如下:

    ?<script>export default {  data() {    return {      show: true    }  },  methods: {    toggle() {      this.show = !this.show    }  }}</script>

    上面的代碼中,使用key屬性來管理

    元素的狀態。當show變量的值發生變化時,
    元素的key屬性也會發生變化,從而重新渲染
    元素。

    需要注意的是,key屬性的值必須是唯一的,不能重復。如果重復了,會導致Vue無法正確地識別每個組件或元素的狀態,從而導致渲染錯誤。

    vue3 事件處理

    在Vue3中,事件處理的方式與Vue2相似,可以使用@v-on指令來綁定事件。不同之處在于,Vue3中取消了.sync修飾符,同時提供了新的修飾符和事件API。

    綁定事件

    可以使用@v-on指令來綁定事件,語法與Vue2相同。示例如下:

    <script>export default {  methods: {    handleClick() {      console.log("Button clicked!")    }  }}</script>

    上面的代碼中,使用@click指令來綁定handleClick方法,當按鈕被點擊時,會觸發handleClick方法。

    事件修飾符

    Vue3中提供了新的事件修飾符,包括.stop.prevent.capture.self.once.passive。示例如下:

    <script>export default {  methods: {    handleClick() {      console.log("Div clicked!")    }  }}</script>

    上面的代碼中,使用.stop修飾符來阻止事件冒泡,當div元素被點擊時,不會觸發其父元素的點擊事件。

    動態事件名

    在Vue3中,可以使用方括號來綁定動態事件名。示例如下:

    ?<script>export default {  data() {    return {      eventName: "click"    }  },  methods: {    handleClick() {      console.log("Button clicked!")    }  }}</script>

    上面的代碼中,使用@[eventName]指令來綁定動態事件名,事件名為eventName的值。

    自定義事件

    在Vue3中,可以使用createApp方法的provideinject選項來實現自定義事件的傳遞。示例如下:

    // App.vue?<script>import { provide } from "vue"import EventBus from "./EventBus"?export default {  setup() {    provide("eventBus", EventBus)  },  methods: {    handleClick() {      EventBus.emit("customEvent", "Hello, Vue3!")    }  }}</script>?// EventBus.jsimport mitt from "mitt"?const EventBus = mitt()?export default EventBus?// ChildComponent.vue?<script>import { inject } from "vue"?export default {  setup() {    const eventBus = inject("eventBus")    const message = ref("")?    eventBus.on("customEvent", (data) => {      message.value = data    })?    return {      message    }  }}</script>

    上面的代碼中,使用provide方法將事件總線對象EventBus注入到根組件中,然后在子組件中使用inject方法獲取事件總線對象,并通過on方法監聽自定義事件customEvent,當事件觸發時,更新message的值。

    vue3 事件傳參

    在Vue3中,事件傳參的方式和Vue2基本相同,可以使用$event來傳遞事件對象,也可以使用函數來傳遞自定義參數。

    示例代碼如下:

    ?<script>export default {  methods: {    handleClick(event, arg) {      console.log(event) // 輸出事件對象      console.log(arg) // 輸出自定義參數    }  }}</script>

    上面的代碼中,使用$event來傳遞事件對象,使用"參數"來傳遞自定義參數。

    另外,如果需要在事件處理函數中訪問組件實例,可以使用箭頭函數來綁定作用域,例如:

    ?<script>export default {  methods: {    handleClick(arg) {      console.log(this) // 輸出組件實例      console.log(arg) // 輸出自定義參數    }  }}</script>

    上面的代碼中,使用箭頭函數來綁定作用域,從而在事件處理函數中訪問組件實例。

    vue3 事件修飾符

    在Vue3中,事件修飾符的使用方式和Vue2基本相同,可以通過在事件名后面添加.修飾符的方式來使用事件修飾符。

    常用的事件修飾符包括:

    .stop:阻止事件冒泡

    .prevent:阻止事件默認行為

    .capture:使用事件捕獲模式

    .self:只在事件目標自身觸發時觸發事件

    .once:只觸發一次事件

    .passive:告訴瀏覽器該事件不會調用preventDefault()方法,可以優化頁面滾動性能

    示例代碼如下:

    ?<script>export default {  methods: {    handleClick() {      console.log("點擊事件")    },    handleScroll() {      console.log("滾動事件")    }  }}</script>

    上面的代碼中,使用不同的事件修飾符來控制事件的行為。例如,使用.stop修飾符來阻止事件冒泡,使用.prevent修飾符來阻止事件默認行為,使用.capture修飾符來使用事件捕獲模式,使用.self修飾符來只在事件目標自身觸發時觸發事件,使用.once修飾符來只觸發一次事件,使用.passive修飾符來告訴瀏覽器該事件不會調用preventDefault()方法,可以優化頁面滾動性能。

    vue3 計算屬性

    在Vue3中,計算屬性的使用方式和Vue2基本相同,可以通過在組件的computed選項中定義計算屬性來計算和緩存值。

    示例代碼如下:

    ?<script>export default {  data() {    return {      price: 10,      count: 2    }  },  computed: {    quantity() {      return this.count    },    totalPrice() {      return this.price * this.count    }  }}</script>

    上面的代碼中,使用computed選項來定義計算屬性quantitytotalPrice,分別計算商品數量和商品總價。

    在模板中,可以像訪問普通屬性一樣訪問計算屬性,例如{{ quantity }}{{ totalPrice }}

    需要注意的是,在Vue3中,計算屬性的返回值可以是一個函數,這樣可以實現動態計算屬性。示例代碼如下:

    ?<script>export default {  data() {    return {      price: 10,      count: 2,      discount: 0.8    }  },  computed: {    quantity() {      return this.count    },    totalPrice() {      return () => this.price * this.count * this.discount    }  }}</script>

    上面的代碼中,計算屬性totalPrice返回一個函數,這個函數會動態計算商品總價,考慮到折扣可能會變化,因此需要動態計算商品總價。

    vue3 class綁定

    在Vue3中,可以使用v-bind:class指令來綁定一個對象或數組來動態地設置一個元素的class屬性。

    下面是使用對象語法綁定class的示例代碼:

    ?<script>export default {  data() {    return {      isActive: true,      hasError: false    }  }}</script>

    上面的代碼中,使用:class指令來綁定一個對象,這個對象的屬性名是class名稱,屬性值是一個布爾值,表示是否應用這個class。在這個示例中,如果isActivetrue,則會應用active這個class,如果hasErrortrue,則會應用text-danger這個class。

    下面是使用數組語法綁定class的示例代碼:

    ?<script>export default {  data() {    return {      isActive: true,      errorClass: "text-danger"    }  }}</script>

    上面的代碼中,使用:class指令來綁定一個數組,這個數組的元素可以是字符串或對象。如果數組元素是字符串,則表示應用這個class;如果數組元素是對象,則表示應用這個對象中的class。

    在這個示例中,如果isActivetrue,則會應用active這個class,如果errorClasstext-danger,則會應用text-danger這個class。

    需要注意的是,在Vue3中,可以使用動態組件來動態渲染不同的組件,這個功能可以使用元素和is特性來實現。示例代碼如下:

    ?<script>import ComponentA from "./ComponentA.vue"import ComponentB from "./ComponentB.vue"?export default {  components: {    ComponentA,    ComponentB  },  data() {    return {      currentComponent: "ComponentA"    }  }}</script>

    上面的代碼中,使用元素和is特性來動態渲染不同的組件。在這個示例中,點擊ComponentA按鈕會渲染ComponentA組件,點擊ComponentB按鈕會渲染ComponentB組件。

    vue3 style 綁定

    在Vue3中,可以使用v-bind指令或簡寫的:來動態綁定樣式。

    綁定單個樣式

    可以使用對象語法來綁定單個樣式,對象的屬性名為樣式名,屬性值為樣式值。示例如下:

    ?<script>export default {  data() {    return {      textColor: "red"    }  }}</script>

    上面的代碼中,使用:style指令來綁定color樣式,樣式的值為textColor的值。

    綁定多個樣式

    可以使用對象語法來綁定多個樣式,對象的屬性名為樣式名,屬性值為樣式值。示例如下:

    ?<script>export default {  data() {    return {      textColor: "red",      fontSize: 16    }  }}</script>

    上面的代碼中,使用:style指令來綁定colorfontSize兩個樣式,樣式的值分別為textColorfontSize的值。

    綁定樣式數組

    可以使用數組語法來綁定多個樣式,數組中的元素為樣式對象。示例如下:

    ?<script>export default {  data() {    return {      baseStyles: {        color: "red",        fontSize: "16px"      },      customStyles: {        fontWeight: "bold"      }    }  }}</script>

    上面的代碼中,使用:style指令來綁定baseStylescustomStyles兩個樣式對象,樣式的值為兩個對象的合并結果。

    綁定樣式對象

    可以使用計算屬性來動態綁定樣式對象。示例如下:

    ?<script>export default {  data() {    return {      textColor: "red",      fontSize: 16    }  },  computed: {    computedStyles() {      return {        color: this.textColor,        fontSize: this.fontSize + "px"      }    }  }}</script>

    上面的代碼中,使用計算屬性computedStyles來動態綁定樣式對象,樣式的值為計算屬性的返回值。

    關鍵詞:

    資訊

    圖賞

  • 亚洲欧洲激情在线| 精品免费视频.| 精品久久久久久| 久久你懂得1024| 国产精品福利在线观看播放| 丝瓜av网站精品一区二区| 亚洲精品美女网站| 亚洲va在线| 欧美三级中文字幕| 一区二区视频免费完整版观看| 91日韩在线专区| 一本色道a无线码一区v| 国产免费福利网站| 美洲精品一卡2卡三卡4卡四卡| 91麻豆精品| 在线看日韩精品电影| 亚洲乱码一区av黑人高潮| 国产视频一区在线| 欧美吻胸吃奶大尺度电影| 亚洲成a人v欧美综合天堂| 国产亚洲va综合人人澡精品 | 亚洲欧洲日韩在线| 色老板视频在线观看| 亚洲综合网狠久久| 国产成人手机高清在线观看网站| 久久精品视频在线免费观看| 日韩精品视频在线观看网址| 成人精品毛片| 亚洲人成网站在线| 亚洲天堂手机| 国产午夜久久久久| 亚洲人线精品午夜| 精品中文在线| 欧美午夜不卡| 亚洲精品久久久蜜桃| jlzzjlzz欧美大全| 三上悠亚激情av一区二区三区| av影视在线看| 日韩成人动漫在线观看| 136导航精品福利| 一本色道久久综合亚洲aⅴ蜜桃| 日本亚洲精品| 国产精品99在线观看| 欧美日韩中文字幕在线视频| 思思99re6国产在线播放| 午夜视频国产| 国内精品99| 精品免费日韩av| 亚洲素人在线| 免费在线看污| 污片视频在线免费观看| 久久精品一区蜜桃臀影院| 丁香花在线高清完整版视频| 91色视频在线| 在线天堂新版最新版在线8| 蜜臀av性久久久久蜜臀av麻豆| 欧美高清精品3d| 欧美性大战xxxxx久久久| 国产在线观看免费网站| 亚洲h色精品| www.成人69.com| 日韩国产91| 国产日产高清欧美一区二区三区| 欧美日本一区| 免费免费啪视频在线观看| 色爱综合av| 日本国产一区二区| 视频精品在线观看| 日韩电影大全免费观看2023年上| 精品99一区二区三区| 国产免费av一区二区三区| 亚洲精品国精品久久99热| 97人人精品| 触手亚洲一区二区三区| 精品欧美一区二区久久| 久久久蜜臀国产一区二区| 国产成人ay| 色播色播色播色播色播在线| 久久一夜天堂av一区二区三区| 天天综合视频在线观看| 久久视频一区| 日韩一区二区在线免费观看| 亚洲免费精彩视频| 在线观看的日韩av| 中文有码在线观看| 波多野结衣在线中文| 亚洲国产精品91| 欧美成人官网二区| 国产一区二区导航在线播放| 成人在线高清免费| 黄色日韩网站视频| 久热久精久品这里在线观看 | 亚洲永久免费| 91九色最新地址| 欧美男女性生活在线直播观看| 在线视频三级| 日韩综合精品| 国产影视精品一区二区三区| 麻豆电影在线| 欧美人伦禁忌dvd放荡欲情| re久久精品视频| 91精品免费观看| 亚洲精品日本| 国模精品视频| 电影天堂最新网址| 日本一区二区三区视频在线看| 亚洲国产精品二十页| 欧美一级淫片| 日韩在线无毛| 在线一区免费观看| 久久综合色播| 国产精品123区| 国产精品香蕉| 每日更新在线观看av| 国产日韩成人精品| 成人资源在线| fc2成人免费人成在线观看播放| 久久亚洲精品人成综合网| 色噜噜夜夜夜综合网| 999国产在线视频| 成人黄色av电影| 激情视频网站在线播放色| **欧美大码日韩| 午夜精品久久久久久毛片| 色88888久久久久久影院野外| 国产精品超碰| 亚洲国产欧美一区| 中文字幕在线免费| 97久久精品人人澡人人爽| a级片在线免费观看| 亚洲成a人片在线不卡一二三区| 国产精伦一区二区三区| 精品国产乱码久久| 青青草精品视频| 黄页网站大全在线免费观看| 亚洲一二三四久久| 欧美日韩伦理| 在线国产日本| 国产亚洲精品aa| 视频一区在线| 亚洲国产精品中文| 精品午夜久久福利影院| 亚洲人成在线网站| 欧美日韩国产a| 999在线观看精品免费不卡网站| 爱爱爱免费视频在线观看| 欧美激情一区二区三区四区| 成人中文字幕视频| 狠狠干在线视频| 国产欧美视频一区二区三区| 精品日产乱码久久久久久仙踪林| 亚洲久久久久久久久久| 国产成人av一区二区| 一二三区在线观看| 国产日韩欧美综合在线| 免费成人蒂法| 91在线最新| 国产日产欧美一区| 亚洲精品小区久久久久久| 99热在线网站| 亚洲女人小视频在线观看| 美女久久99 | 香蕉视频亚洲一级| 精品日韩在线一区| 国产激情一区二区三区| 欧美午夜在线播放| 2023欧美最顶级a∨艳星| 亚洲欧洲性图库| 欧美在线二区| 国产h片在线观看| 精品99999| 99精品视频在线免费观看| 黄色欧美在线| 欧美18xxxxx| 五月天亚洲精品| 日本在线不卡一区| 日韩伦理一区二区| 视频免费在线看| 一二三区精品福利视频| 国产日韩欧美一区| 巨胸喷奶水www久久久| 16—17女人毛片毛片| 亚洲欧美一区二区在线观看| 久久久久国产| 亚洲国产欧美日本视频| 国产偷国产偷亚洲清高网站| 国产女人aaa级久久久级 | 国产亚洲成年网址在线观看| 欧美激情理论| segui88久久综合9999| 亚洲激情免费观看| 亚洲天天做日日做天天谢日日欢| 欧美日韩亚洲一区| 成人在线视频观看| 一卡二卡三卡亚洲| 欧美婷婷六月丁香综合色| 91亚洲大成网污www| 亚洲色图欧美| 亚洲欧美国产精品久久久久久久| 国产区在线观看成人精品|