1. 程式人生 > 其它 >文庫 Vue的知識摘抄 看懂 多敲程式碼10遍6遍

文庫 Vue的知識摘抄 看懂 多敲程式碼10遍6遍

Vue核⼼介紹

1:VUE基本認知

1、線上課程所有⼈都必須要錄屏

2、作業,私發

3、按照要求進直播間

4、加強⾃⼰管理(課堂,課後)

1:vue介紹

1) 漸進式 JavaScript 框架(有2個庫,核⼼庫和外掛庫,如果能⽤核⼼庫解決的就是⽤核⼼庫,核⼼庫解決不了的,就使⽤外掛庫)漸:逐漸,進:新增

2) 作者: 尤⾬溪(⼀位華裔前 Google ⼯程師)

3) 作⽤: 動態構建⽤戶界⾯,動態DOM操作,js

2:官⽹

3:特點

1)遵循 MVVM 模式 , model view vm ViewModel

2)編碼簡潔, 體積⼩, 運⾏效率⾼, 適合移動/PC 端開發

3) 它本⾝只關注 UI, 可以輕鬆引⼊ vue 外掛或其它第三庫開發項⽬

4:與其他框架關係

1) 借鑑 angular 的模板和資料繫結技術(核⼼是模板語法和資料繫結)

2) 借鑑 react 的元件化和虛擬 DOM 技術(核⼼是元件化)

Vue其實是整合了2個框架的優勢

5:vue擴充套件外掛

1) vue-cli: vue 腳⼿架

2) vue-resource(axios): ajax 請求

3) vue-router: 路由, vue

4) vuex: 狀態管理

5) vue-lazyload: 圖⽚懶載入

6) vue-scroller: 頁⾯滑動相關

7) mint-ui: 基於 vue 的 UI 元件庫(移動端)

8) element-ui: 基於 vue 的 UI 元件庫(PC 端)

2:VUE基本使⽤

1:基本使⽤

Vue其實就是⼀個js框架,寫的內容和⽅式還是和以前js⼀致。在html中書寫的位置也是和以前js⼀致。只是⽤法和以前的有點出⼊⽽已。

1). 引⼊vue.js(可以引⼊線上,也可以引⼊⾃⼰下載的)

2). 建立Vue例項物件(vm), 指定選項(配置)物件

el : 指定dom標籤容器的選擇器,表⽰管理的範圍

data : 初始化資料(頁⾯可以訪問),以及資料的繫結變數。

3).在html標籤上使⽤雙向資料的繫結:v-model, v- vue指令,寫在html的開始標籤內

v-model 宣告的變數必須在vue的data中宣告。否則報錯

4). 在頁⾯中使⽤⼤括號表示式{{mes}}來取值顯⽰資料, 取data中的值

<div id="app">

<input type="text" v-model="mes">

<p>Hello {{mes}}</p>

</div>

<script>

var app = new Vue({

el: '#app',

data: {

mes: 'Vue!'

}

})

</script>

注意:vue的管理範圍只能在所選擇的標籤內。

第⼀個vue指令,使⽤v-model實現資料的雙向繫結!

需求:在輸⼊框內輸⼊內容,在標籤上實時的顯⽰上⾯輸⼊的內容

分析:在輸⼊框中使⽤v-model指令獲取vue例項中data中的初始化資料,然後修改輸⼊框中的內容,將輸⼊框內容和data中的內容實現繫結,

然後將最終的資料使⽤⼤括號表示式在另外標籤中取出即可

2:vue開發者⼯具使⽤

在官⽹下載devtools的外掛,然後將這個外掛拖⾄瀏覽器的拓展外掛中就可以使⽤了。

其實就是⼀個⾕歌瀏覽器的外掛,灰⾊的表⽰沒有使⽤vue,綠⾊的則是使⽤了到了vue,

開啟檢查後會多⼀個vue的選項,出現⼀個root就表⽰建立了⼀個VM物件,其實就是⼀個VUE物件。

⼀般情況下,model就說vue物件中的data資料.

當vue例項的資料發⽣變化時,會實時的更新。可以通過瀏覽器觀察。

3:理解vue的MV VM

Model: 模型,資料物件,其實就是vue物件中的data資料。

View: 檢視,指的是頁⾯檢視,給⽤戶看的內容,其實就是vue管理的那⼀⽚區域的html程式碼;

ViewModel: 檢視模型,就是建立的VUE例項/物件,他的核⼼有2個,⼀個是DOM監聽,⼀個是資料繫結。

通過vm物件,實現將記憶體中的model資料,實時的展⽰在⽤戶可以看到的view頁⾯上!!先通過監聽,然後實現資料的繫結。

3:模板語法

1. 模板的理解:

動態的html頁⾯(頁⾯元素的動態,資料的動態)

包含了⼀些JS語法程式碼

1、插值表示式/雙⼤括號表示式{{ mes}},在⼤括號表示式(插值表示式)中還可以調⽤⽅法;

2、指令(以v-開頭的⾃定義標籤屬性),如 v-model, v-if ,v-for, v-else, v-show ----

2. 雙⼤括號表示式

語法: {{exp}}

功能:

1: 向頁⾯輸出資料,從data中讀取資料,然後顯⽰在頁⾯上;

2: 可以調⽤物件的⽅法, 如:將字串變成⼤寫

需求:

1:在vue例項中宣告資料,在指導的標籤中使⽤雙⼤括號表示式取值展⽰

2:在雙括號表示式中還可以調⽤⼀些簡單的⽅法,如全部變成⼤寫。

3. 指令⼀: 強制資料繫結

功能: 將標籤的屬性值從⼀般的⽂本變成⼀個表示式;

如在data資料中定義⼀個圖⽚的imgurl, 然後在img標籤的src屬性中使⽤⼤括號表示式是⽆法顯⽰圖⽚的,

此時可以強制繫結資料,使⽤v-bind:屬性名 = 屬性值(data中的key)

被v-bind修飾的屬性就不在是以前的單純的屬性了,此時是⼀個表示式,表示式中的內容來源於vue中的資料

完整寫法:

v-bind:xxx='yyy' //此時的yyy就不是⼀個簡單的⽂本了,⽽是把yyy作為⼀個表示式,會從vue例項中去查詢yyy對應的值;

簡潔寫法: v-bind可以省略不寫,如果有的⼯具報錯,請將編譯器調整為ES6的語法;

:xxx='yyy'(這樣的效果和上⾯是⼀樣的)

記住:如果具體的值在vue例項中,這個值⼜是html標籤的某個屬性對應的值,如果希望引⽤的話,則需要使⽤強制資料繫結,強制資料繫結不需要⼤括號表示式,只需要data中的key

4. 指令⼆: 繫結事件監聽

功能: 繫結指定事件名的回撥函式

以前繫結時間的語法是onclick = “test()”,vue 的語法規則如下:

完整寫法: 在標籤中使⽤v-on的指令;

v-on:click='xxx',繫結⽅法的時候可以加括號也可以不加;

<button v-on:click="test">點我試試看</button>

簡潔寫法: 可以直接使⽤@符號

@click='xxx'

具體執⾏的⽅法需要在vue的例項中使⽤methods宣告,

new Vue({

el: '#app',

data: {

content: 'NBA I Love This Game'

},

methods: {

test () {

alert('你的膽⼦很⼤啊')

}

}

})

注意:如果⽅法需要傳參的話,可以直接傳遞data中的資料,也可以⾃⼰定義資料。

<button @click="test2(mes)">點我試試看</button>

methods: {

test(){

alert("你膽⼦太⼤來 ")

},

test2(mes){

alert(mes)

}

},

4:計算屬性和監視

1. 計算屬性

在computed屬性物件中定義計算屬性的⽅法,

在頁⾯中使⽤{{⽅法名}}來顯⽰計算的結果(如果需要)

語法:

<input v-model="屬性值">

Vm:

computed: {

屬性值(){ // 計算屬性中的⼀個⽅法,該⽅法的返回值就是標籤的屬性值,屬性值會顯⽰在頁⾯中,或者屬性值:function()

return xxx; // 返回的具體內容必須是data中宣告的變數。

}

}

注意:

1、當某⼀個標籤的屬性值是通過2個以上的值確定並且是⼀個動態的,此時可以考慮使⽤計算屬性來實現。

2、計算屬性的⽅法名是最終顯⽰結果標籤的屬性值,該⽅法⼀般需要⼀個返回值,該返回值就是最終需要展⽰的結果,

如果需要在頁⾯中顯⽰,可以使⽤⼤括號表示式取值,如果使⽤⼤括號表示式的話,不需要在data中宣告,如果是使⽤v-model展⽰的話,需要在data中宣告。

3、使⽤v-model宣告的資料繫結,必須要在vue的data中進⾏宣告,否則報錯。

4、計算屬性中的值是需要計算得到的,所以不需要在vue的data中進⾏宣告。

5、在函式中可以使⽤Number() ⽅法將字串轉換為數字,如果⽆法轉換則結果為NaN, 也可以直接在屬性中使⽤V-MODEL.number來實現轉化

2. 監視屬性:

上⾯的案例也可以使⽤全域性的監視⽅式實現。

通過vm物件的$watch()⽅法或watch屬性配置來監視指定的屬性

當屬性變化時, 回撥函式⾃動調⽤, 在函式內部進⾏計算,

語法:watch屬性

Vm:

data: {

a: 1,

b: 2

}

watch: {

屬性值: function(value){ // 對可能變化的屬性值進⾏監視,當屬性值發⽣變化時調⽤該⽅法,value是最新的值。

this.a = this.b + value ; // 注意:a,b 都應該是在 data 中出現過,最後將結果顯⽰在屬性值為 a 的標籤中

}

$watch() ⽅法的監監視:

// vm 是vue的例項物件

vm.$watch('屬性值', function(value){ // value 是監視的值發⽣變化的最新值

this.a = this.b+""+value;

})

計算屬性, vue的指令

課堂內容寫2遍,

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

<!-- <script src="js/jquery-1.12.4.js"></script> -->

<!-- vue 其實和jquery ⼀樣的,都是js框架,也是⼀個js⽂件 -->

<script src="js/vue.js"></script>

</head>

<body>

<h2>hello vue </h2>

<!-- 簡單的div標籤,被vue所管理的標籤都應該在div內部 -->

<div id="app">

<!-- 需求:在輸⼊框中輸⼊⼀些內容,實時的展⽰在span標籤中

v-model 雙向資料繫結 , 所指向的這個值必須要在data中進⾏宣告

-->

<input name="uname" v-model="uname"><br>

<input name="uname" v-model="uname"><br>

<span>{{uname.toUpperCase()}}</span>

<!-- 需求:從data中獲取圖⽚的地址

src="imgurl"他會被認為這是⼀個簡單的字串,希望他不僅僅是⼀個字串更希望他是⼀個表示式,能將data中的資料拿上來使⽤

vue 中提供了 v-bind ,將屬性中的內容變成表示式,

語法: v-bind:屬性 = “變數” 變數來源於vue例項的data中 ,

在使⽤中,v-bind可以省略不寫,簡寫的⽅式為 :屬性=“變數”

-->

<img v-bind:src="imgurl" :width="wid" :height="hei">

<!-- 繫結事件

v-on:事件名稱 = “⽅法名”

如: v-on:click = “hello()” , 當點選事件發⽣的時候,會訪問hello的⽅法

-->

<button v-on:click="hello()">你敢點麼</button>

<!-- 只要出現input ,就會使⽤v-model

如果繫結的事件⽅法在執⾏的時候需要引數的話,可以直接的傳遞

也可以從vue的例項物件中進⾏獲取,

-->

<input v-on:blur="world('111')" v-model="mes">

</div>

<script>

// js程式碼在哪⾥編寫,現在還是在哪⾥寫

// js 陣列, var arr = new Array(num)

// {} ⼤括號表⽰⼀個物件,配置物件

// 1,管理的範圍 , el

// 2, data 資料,管理標籤中所有的內容,變數,物件等,資料的初始化var vm = new Vue({

el: "#app",

data: {

uname: "",

pwd: "",

imgurl: 'img/bb.jpg',

wid: '300px',

hei: '200px',

mes: ''

},

methods: {

// 所有的⽅法都是定義在這⾥的

hello(){

alert("你還真敢點啊")

},

world(value){

//在⽅法中如果希望使⽤data中的資料的話,可以直接的使⽤,

// 注意:需要在變數前⾯加this

// alert(this.mes) ✔

alert(value)

}

},

});

// $(function(){

// alert("jquery")

// })

</script>

</body> </html>