您現在的位置是:首頁 > 棋牌

手把手教你入門 Vue教學

  • 由 MobTech 發表于 棋牌
  • 2022-12-12
簡介const vm = new Vue({el:‘#root’, 物件式* data:{name:‘VUE’

汽車按鍵config什麼意思

Vue 基礎核心知識點

一、Vue 簡介

概述

動態構建

使用者介面

漸進式

框架

動態構建

:虛擬 DOM

使用者介面

手把手教你入門 Vue教學

漸進式

手把手教你入門 Vue教學

作者

手把手教你入門 Vue教學

特點

宣告式

編碼、遵循

MVVM

原則

編碼簡單、體積小

元件化、複用率高、程式碼維護容易

vue2 官網資源

https://v2。cn。vuejs。org/

二、模板語法

2。1 插值語法

概述

:解析

標籤體

內容、可以解析表示式(

可以返回值

HELLO {{name。toUpperCase()}}

//HELLO VUE

2。2 指令語法

概述

:解析標籤屬性、內容、事件,這裡在下面的資料繫結舉例

三、資料繫結

3。1 單向資料繫結

概述

data=>頁面

手把手教你入門 Vue教學

<!DOCTYPE html> 資料繫結 <!—— 引入Vue ——>

<!—— 單向: ——> <!—— 簡寫 ——> 單向:

3。2 雙向資料繫結

概述

data<=>頁面

手把手教你入門 Vue教學

<!DOCTYPE html> 資料繫結 <!—— 引入Vue ——>

<!—— 雙向: ——> <!—— 簡寫 ——> 雙向:

四、寫法區別

4。1 el 寫法

概述

例項化

物件時配置

例項化

,然後掛載

手把手教你入門 Vue教學

<!DOCTYPE html> el掛載資料 <!—— 引入Vue ——>

你好 {{name}}

4。2 data 寫法

概述

物件式

函式式(元件必須使用)

手把手教你入門 Vue教學

<!DOCTYPE html> data掛載資料 <!—— 引入Vue ——>

你好 {{name}}

五、MVVM 模型

概述

:參考

MVVM模型

,應用到

VUE中

手把手教你入門 Vue教學

View

:模板、頁面的

DOM

結構

ViewModel

:橋樑關係,有以下兩個作用

DOM 監聽

資料繫結

Model

:程式碼的

data

資料物件

手把手教你入門 Vue教學

特點

在模板直接使用

vm

屬性

data資料

直接掛載到

vm

身上

六、資料代理

概述

:透過一個物件代理另一個物件屬性的操作,這裡先將資料代理,後面的資料劫持、檢測後面細講

我們程式碼中的

data

物件資料經過一番操作後變成

_data

掛載到

vm

上面,但每次訪問資料只能透過

_data

訪問不方便,

VUE

便直接代理到

vm

身上,原理圖如下所示:

手把手教你入門 Vue教學

實踐證明,資料一致

手把手教你入門 Vue教學

七、事件處理

7。1 基本使用

概述

:繫結事件,在

methods

呼叫

注意

methods

物件最終直接掛載到

vm

手把手教你入門 Vue教學

注意

this

指向、謹慎使用

箭頭函式

傳入引數時,第一個注意不要覆蓋函式自帶的

event

7。2 修飾符

prevent

:阻止預設事件(常用)

stop

:阻止事件冒泡(常用)

once

:事件只觸發一次(常用)

capture

:使用事件的捕獲模式

self

:只有 event。target 是當前操作的元素時才觸發事件

passive

:事件的預設行為立即執行,無需等待事件回撥執行完畢

7。3 鍵盤事件

概述

鍵盤觸發

事件、比如按下某個按鍵觸發事件

7。3。1 系統提供

回車 => enter刪除 => delete (捕獲“刪除”和“退格”鍵)退出 => esc空格 => space換行 => tab (特殊,必須配合keydown去使用,tab會失去焦點)上 => up下 => down左 => left右 => right

7。3。2 原始 key 值

概述

:單詞要小寫、多個單詞使用

-

分割

7。3。3 系統修飾鍵

ctrl、alt、shift、meta

注意

配合

keydown

使用,正常觸發事件

配合

keyup

使用,按下修飾鍵的同時,再按下其他鍵,隨後釋放其他鍵,事件才被觸發

八、計算屬性

概述

:根據

data

已有的屬性計算新的屬性值

原理

:底層藉助了

Objcet。defineproperty

方法提供的

getter

setter

手把手教你入門 Vue教學

<!DOCTYPE html> 姓名案例_計算屬性實現 <!—— 引入Vue ——> <!—— 準備好一個容器——>

姓:

名:

全名:{{fullName}}

簡寫形式

:只需要返回值,不需要修改計算屬性的值時使用

computed:{ fullName(){ return this。firstName + ‘-’ + this。lastName }}

注意

只有

get

所依賴的資料變化,才會再次呼叫

依賴的資料不變化,直接呼叫快取,不呼叫

get

set

只有需要修改計算屬性的值才會被呼叫

九、監視屬性

概述

:監視

屬性

的資料變化,得到

newVal oldVal

可以比對

手把手教你入門 Vue教學

<!DOCTYPE html> 天氣案例_監視屬性 <!—— 引入Vue ——> <!—— 監視屬性watch: 1。當被監視的屬性變化時, 回撥函式自動呼叫, 進行相關操作 2。監視的屬性必須存在,才能進行監視!! 3。監視的兩種寫法: (1)。new Vue時傳入watch配置 (2)。透過vm。$watch監視 ——> <!—— 準備好一個容器——>

今天天氣很{{info}}

深度監視

:監視整個物件中的資料變化,開始

deep:true

屬性就行

立即執行

immediate:true

資料就算不變化,也會先執行一次

簡寫形式

:簡單的需求、不需要配置其他屬性

//簡寫屬性watch:{ isHot(newVal,oldVal){ console。log(‘isHot被修改了’,newVal,oldVal); }}

十、繫結樣式

概述

:透過繫結

style/class

實現動態效果

10。1 class 繫結

可以透過

屬性、陣列、物件

繫結,注意和

data

的連通性

10。2 style 繫結

透過

物件、陣列

方式繫結,注意使用駝峰命名

十一、條件渲染

11。1 v-show

概述

:透過

display

隱藏,dom 仍然存在

手把手教你入門 Vue教學

1
2

11。2 v-if

概述

:不展示的

dom

直接移除,滿足邏輯上的

if else結構

手把手教你入門 Vue教學

1

1
2
3
//v-else直接輸出,因為最後的結果
=4”>4

11。3 template

概述:不會出現在

dom

中,可以作為統一管理工具

手把手教你入門 Vue教學

十二、列表渲染

概述

指令v-for

展示列表資料,遍歷

陣列、物件

12。1 基本使用

概述

for in

遍歷,插值語法使用資料,:

key

這裡咋暫且認為

標識

的每一條資料

手把手教你入門 Vue教學

<!DOCTYPE html> 基本列表 <!—— v-for指令: 1。用於展示列表資料 2。語法:v-for=“(item, index) in xxx” :key=“yyy” 3。可遍歷:陣列、物件、字串(用的很少)、指定次數(用的很少) ——> <!—— 準備好一個容器——>

人員列表

  • {{p。name}} ——- {{p。age}}

汽車列表

  • {{c}} ——- {{index}}

字串列表

  • {{s}} ——- {{index}}

數字列表

  • {{s}} ——- {{index}}

12。2 key 的原理

概述

vue 虛擬 dom

比較的標識

手把手教你入門 Vue教學

概述(重要)

初始資料生成虛擬

DOM

、虛擬

DOM

轉換成真實

DOM

,注意

VUE

對之前的

DOM

留有備份在記憶體中,留給後面的對比演算法

頁面資料發生改變導致

頁面更新

重新生成

虛擬dom

,根據唯一識別符號

key

和之前的

虛擬dom

比較(未找到重新生成

真實DOM

資料一致則複用,不一致重新生成

真實DOM

這裡預設 index 作為

key

破壞順序

會導致標籤標識出現問題,加大了工作量(

無法複用資料

)、導致輸入的資料錯位

手把手教你入門 Vue教學

概述(重要)

這裡的流程和上面差不多,只是

key

由自己唯一指定,不會改變順序

面試題

面試題:react、vue中的key有什麼作用?(key的內部原理) 1。 虛擬DOM中key的作用: key是虛擬DOM物件的標識,當資料發生變化時,Vue會根據【新資料】生成【新的虛擬DOM】, 隨後Vue進行【新虛擬DOM】與【舊虛擬DOM】的差異比較,比較規則如下: 2。對比規則: (1)。舊虛擬DOM中找到了與新虛擬DOM相同的key: ①。若虛擬DOM中內容沒變, 直接使用之前的真實DOM! ②。若虛擬DOM中內容變了, 則生成新的真實DOM,隨後替換掉頁面中之前的真實DOM。 (2)。舊虛擬DOM中未找到與新虛擬DOM相同的key 建立新的真實DOM,隨後渲染到到頁面。 3。 用index作為key可能會引發的問題: 1。 若對資料進行:逆序新增、逆序刪除等破壞順序操作: 會產生沒有必要的真實DOM更新 ==> 介面效果沒問題, 但效率低。 2。 如果結構中還包含輸入類的DOM: 會產生錯誤DOM更新 ==> 介面有問題。 4。 開發中如何選擇key?: 1。最好使用每條資料的唯一標識作為key, 比如id、手機號、身份證號、學號等唯一值。 2。如果不存在對資料的逆序新增、逆序刪除等破壞順序操作,僅用於渲染列表用於展示, 使用index作為key是沒有問題的。

12。3 列表過濾

概述

:透過

模糊查詢

列表資料解析結果

手把手教你入門 Vue教學

手把手教你入門 Vue教學

<!DOCTYPE html> 列表過濾

  • {{p。name}} ——- {{p。age}}

總結

這裡使用計算屬性更加簡單

監視屬性注意不能簡寫,監視的資料不變化也需要立刻執行一次函式

12。4 列表排序

概述

:在列表過濾的基礎上面增加了

排序功能

手把手教你入門 Vue教學

<!DOCTYPE html> 列表排序 <!—— 準備好一個容器——>

人員列表

  • {{p。name}}-{{p。age}}-{{p。sex}}

十三、表單資料

概述

v-bind

v-model

針對具有 value 屬性的標籤,對於其他的標籤,可使用下述方法

手把手教你入門 Vue教學

手把手教你入門 Vue教學

<!DOCTYPE html> 收集表單資料 <!—— 收集表單資料: 若:,則v-model收集的是value值,使用者輸入的就是value值。 若:,則v-model收集的是value值,且要給標籤配置value值。 若: 1。沒有配置input的value屬性,那麼收集的就是checked(勾選 or 未勾選,是布林值) 2。配置input的value屬性: (1)v-model的初始值是非陣列,那麼收集的就是checked(勾選 or 未勾選,是布林值) (2)v-model的初始值是陣列,那麼收集的的就是value組成的陣列 ——> <!—— 準備好一個容器——>

賬號:

密碼:

年齡:

性別: 男

愛好: 唱 rap 籃球

城市:

其他資訊: <!—— 懶載入 ——>

閱讀並接受 《使用者協議》

//{“account”:“admin”,“password”:“123456”,“age”:18,“sex”:“male”,“hobby”:[“sing”,“dance”,“basketball”],“city”:“beijing”,“other”:“12313”,“agree”:true}

注意 v-model 的三個修飾符

lazy:失去焦點再收集資料

number:輸入字串轉為有效的數字

trim:輸入首尾空格過濾

十四、過濾器

概述

:對要顯示的資料進行

特定格式化後

再顯示(適用於一些簡單邏輯的處理)

語法: 1。註冊過濾器:Vue。filter(name,callback) 或 new Vue{filters:{}} 2。使用過濾器:{{ xxx | 過濾器名}} 或 v-bind:屬性 = “xxx | 過濾器名”備註: 1。過濾器也可以接收額外引數、多個過濾器也可以串聯 2。並沒有改變原本的資料, 是產生新的對應的資料

下面以一個簡單的格式化時間為例,資源連結:

https://www。bootcdn。cn/dayjs/

<!DOCTYPE html> 過濾器 <!—— 過濾器: 定義:對要顯示的資料進行特定格式化後再顯示(適用於一些簡單邏輯的處理)。 語法: 1。註冊過濾器:Vue。filter(name,callback) 或 new Vue{filters:{}} 2。使用過濾器:{{ xxx | 過濾器名}} 或 v-bind:屬性 = “xxx | 過濾器名” 備註: 1。過濾器也可以接收額外引數、多個過濾器也可以串聯 2。並沒有改變原本的資料, 是產生新的對應的資料 ——> <!—— 準備好一個容器——>

當前的時間為 {{time}}

計算屬性 {{formTime}}

計算方法 {{getFormatTime()}}

過濾器 {{time | filterTime(‘YYYY年MM月DD日’)}}

{{msg | filterSlice(4)}}

注意

lazy:失去焦點再收集資料

number:輸入字串轉為有效的數字

trim:輸入首尾空格過濾

十五、內建指令

15。1 v-text

概述

:直接替換掉標籤的內容、無法解析

標籤

手把手教你入門 Vue教學

<!DOCTYPE html> v-text指令 <!—— 引入Vue ——> <!—— 準備好一個容器——>

你好,{{name}}
你好

15。2 v-html

概述

:和

v-text

相比,多了一個識別

html

結構(有安全性問題)

15。3 v-cloak

概述

:VUE 例項建立完成並接管例項後刪除這個屬性,可以防止出現

{{name}}

情況

15。4 v-once

概述

:所在節點在初次動態渲染後,就視為靜態內容了。以後資料的改變不會引起 v-once 所在結構的更新,可以用於最佳化效能。

手把手教你入門 Vue教學

初始化的n值是:{{n}}

當前的n值是:{{n}}

15。5 v-pre

概述

:跳過該節點編譯過程

手把手教你入門 Vue教學

Vue其實很簡單

當前的n值是:{{n}}

十六、自定義指令

概述

:透過

指令

包裝

dom

元素,讓使用者避免操作

dom

元素、一般有三個流程

bind、inserted、update

自定義指令總結: 一、定義語法: (1)。區域性指令: new Vue({ directives:{ } }) (2)。全域性指令: Vue。directive(指令名,配置物件) 或 Vue。directive(指令名,回撥函式) 二、配置物件中常用的3個回撥: (1)。bind:指令與元素成功繫結時呼叫。 (2)。inserted:指令所在元素被插入頁面時呼叫。 (3)。update:指令所在模板結構被重新解析時呼叫。 三、呼叫時機 1。指令與元素成功繫結時(一上來)。 2。指令所在的模板被重新解析時。 四、備註: 1。指令定義時不加v-,但使用時要加v-; 2。指令名如果是多個單詞,要使用kebab-case命名方式,不要用camelCase命名,命名注意‘’

16。1 簡單自定義指令

概述

:只用到了

bind、update

兩個函式,

合在一起使用

需求1:定義一個v-big指令,和v-text功能類似,但會把繫結的數值放大10倍。

手把手教你入門 Vue教學

<!DOCTYPE html> 自定義指令 <!—— 準備好一個容器——>

當前的n值是:

放大10倍後的n值是:

注意

這裡的

v-big

屬性是簡寫成函式,複雜的寫為物件

預設傳入兩個引數,

element,binding

,可以看下面這張圖(很清晰)

this 指向的是

window

手把手教你入門 Vue教學

16。2 複雜自定義指令

概述

:三個階段一起呼叫,先繫結、插入,模板解析時更新

需求2:定義一個v-fbind指令,和v-bind功能類似,但可以讓其所繫結的input元素預設獲取焦點。元素需要插入到頁面之後在進行焦點觸發

手把手教你入門 Vue教學

<!DOCTYPE html> 自定義指令 <!—— 準備好一個容器——>

當前的n值是:


十七、生命週期

概述

VUE

幫我們呼叫的函式,為一整套的

VUE

工作流程、

鉤子

常用的生命週期鉤子: 1。mounted: 傳送ajax請求、啟動定時器、繫結自定義事件、訂閱訊息等【初始化操作】 2。beforeDestroy: 清除定時器、解綁自定義事件、取消訂閱訊息等【收尾工作】關於銷燬Vue例項 1。銷燬後藉助Vue開發者工具看不到任何資訊 2。銷燬後自定義事件會失效,但原生DOM事件依然有效 3。一般不會在beforeDestroy操作資料,因為即便操作資料,也不會再觸發更新流程了

手把手教你入門 Vue教學

beforeDestroy

:可以訪問資料,但不能修改,因為就算你修改了也不能回到

beforeUpdate

裡面

destroyed

:this。

$destroy

()

本文轉載自infoQ作者:知心寶貝

原文連結:

https://xie。infoq。cn/article/2de4c98faec0f77e5699cbd78

Top