亚洲精品综合久久中文字幕_国产女主播在线_日本中文一区二区三区_裸体一区二区三区_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來動態綁定樣式對象,樣式的值為計算屬性的返回值。

    關鍵詞:

    資訊

    圖賞

  • 亚洲黄色在线观看| 麻豆精品视频在线观看免费| 国产精品186在线观看在线播放| 欧美色图片你懂的| 视频一区二区欧美| 在线日韩成人| 欧美在线观看在线观看| 亚洲在线视频网站| 亚洲mv大片欧洲mv大片精品| 午夜久久久久久电影| 欧美日韩一区在线观看| 91成人免费电影| 欧美一区二区网站| 欧美成人一区二区三区| 国产肉丝袜一区二区| 综合综合综合综合综合网| 9999在线视频| 一区二区三区视频国产日韩 | 成人资源在线| 国产午夜久久av| 国产精品成人**免费视频| 黄色污网站在线免费观看| 欧美图片一区二区三区| 小处雏高清一区二区三区| 国产欧美日韩电影| 91精品国产欧美一区二区18 | 国产在线自天天| 中文字幕一区二区三| 成人vr资源| 成人在线免费观看| 亚洲成人一区二区在线观看| 亚洲欧美在线专区| 国产精品扒开做爽爽爽的视频| 国模私拍一区二区国模曼安| 日韩在线伦理| 男男电影完整版在线观看| 97福利电影| 国产一区二区三区不卡在线观看 | 欧美一区二区视频免费观看| 亚洲女人av| 女厕盗摄一区二区三区| 欧美一区2区视频在线观看| 久久99精品久久久久久动态图 | 日韩电影在线一区| 美女100%一区| 日韩精品视频在线免费观看| www成人在线观看| 狠狠做深爱婷婷综合一区| 东热在线免费视频| 欧美性猛交xxxx乱大交蜜桃| 男女精品网站| 欧美美女被草| 全部a∨一极品视觉盛宴| 中文字幕一区三区| 国产精品扒开腿做爽爽爽软件| 啦啦啦中文在线观看日本| 日韩午夜激情视频| 久久尤物电影视频在线观看| 日韩极品一区| gogo高清午夜人体在线| 亚洲国产精久久久久久久| 久久久久国产精品厨房| 久久精品免费一区二区三区| 国产精品yjizz视频网| 亚洲精品短视频| 国产精品久久久久久久第一福利| 久久久久久久久久久久久久久久久久 | 国产传媒av在线| 亚洲国产精品系列| 国产精品看片你懂得| 亚洲成人资源| 青青伊人久久| 日本亚洲欧美| 51精品久久久久久久蜜臀| 91社区在线播放| 欧美三级午夜理伦三级中文幕| 亚洲第一二三四区| 日本h片在线看| 色婷婷av一区二区三区软件| 国产成人8x视频一区二区 | 91av亚洲| 精东影业在线观看| 色域天天综合网| 不卡高清视频专区| 午夜日韩视频| 国产精品欧美一区二区三区不卡| 日av在线播放| 日韩一区二区三区免费看 | 国产精品久久国产愉拍| 午夜视频在线观看精品中文| 成年人在线观看视频| 日韩欧美亚洲另类制服综合在线| 国产三级三级三级精品8ⅰ区| 亚洲精品人人| 成人免费在线电影网| 69成人在线| 久草亚洲一区| 欧美性一级生活| 欧美极品美女视频| 欧美亚洲三区| 少妇精品久久久| 日本免费久久| 成人影视在线播放| 国产视频丨精品|在线观看| 精品久久久视频| 久久人人超碰精品| 日韩和欧美的一区| 欧美一区二区三区激情视频| 你懂得影院夜精品a| 国产youjizz在线| 亚洲区中文字幕| 欧美日韩国产系列| 亚洲品质自拍视频网站| 粉嫩av一区二区三区| 99热免费精品| 久久最新网址| 91丨精品丨国产| 国产啊啊啊视频在线观看| 污网站在线看| 国产偷国产偷亚洲清高网站| 日本精品一级二级| 国产精品福利一区二区三区| 国产在线不卡视频| 欧美黄色大片网站| 日韩超碰人人爽人人做人人添| 欧美日韩一本到| 日本三级视频在线播放| av资源在线看片| 成人动漫视频| 夜间精品视频| 国产精品一级二级三级| 亚洲妇女屁股眼交7| 欧美日韩一区二区三区在线| 好吊妞这里只有精品| 日本黄在线观看| 日韩欧美精品| av成人在线看| 啪啪免费视频一区| 神马久久久久| 黄色大秀av大片| 亚洲第一区第一页| 欧美精品自拍偷拍动漫精品| 亚洲成人你懂的| 中文字幕在线一区二区三区| 99re热这里只有精品视频| 国产精品一区二区91| 日本伊人色综合网| 亚洲影院一区| 极品av少妇一区二区| 成人三级视频| 美女网站一区| 首页亚洲中字| 久久97久久97精品免视看秋霞| 国产精品美女久久久久| 久久人人视频| 成人精品一区二区三区电影| 日韩精品美女| 韩国精品一区| 色吧亚洲日本| av小说在线播放| 黄污视频在线观看| 超级碰碰不卡在线视频| 综合久久2o19| 在线播放蜜桃麻豆| 影音先锋在线视频| 成人免费高清观看| 日本在线啊啊| 欧美最新精品| 国产情侣一区二区三区| 日本成人一区二区| 福利一区三区| 精品国产亚洲一区二区三区大结局 | 3atv在线一区二区三区| 欧美嫩在线观看| 日韩欧美你懂的| 欧美xxxxxxxx| 精品一区电影国产| 疯狂做受xxxⅹ高潮视频免费| 91精品国产高久久久久久五月天| 亚洲色图17p| 日本我和搜子同居的日子高清在线| 日本a级黄色| 青青草观看免费视频在线| 免费毛片在线| 黄色网在线播放| 成人在线免费观看黄色| 写真福利精品福利在线观看| 欧美久久久网站| 欧洲vs亚洲vs国产| 国产精品久久久久久久久妇女| 欧美 日韩 国产 一区| 欧美日韩天堂| 日韩精品欧美精品| 国产成人在线视频免费播放| 99精品久久只有精品| 国产欧美中文在线| 亚洲午夜在线视频| 欧美少妇bbb| 亚洲成人精品视频在线观看| 黑巨人与欧美精品一区|