摘要:基本語法和組件傳參基本語法是一個的框架數(shù)據(jù)驅(qū)動和組件化是的核心思想。這種語法為請輸入代碼語法這里是的值網(wǎng)頁上就會顯示出來里面的值。七和語言中的一樣的語法效果。我花費了元運行結(jié)果如下圖至此,講完了的基本語法撒花
Vue基本語法和組件傳參 基本語法
Vue是一個 MVVM 的框架,數(shù)據(jù)驅(qū)動和 組件化是Vue的核心思想。簡單的講MVVM框架就是:我們只需要在數(shù)據(jù)層做數(shù)據(jù)操作,顯示層會檢測到我們每次的數(shù)據(jù)變化,然后做出相應(yīng)的改變,監(jiān)測數(shù)據(jù)這個工作就是中間的ViewModel。通過這種模式,我們就可以不用再直接操作DOM節(jié)點來進行數(shù)據(jù)的改變。
一、插值{{data}} 在模板里可以實現(xiàn)data數(shù)據(jù)的展示,如果data數(shù)據(jù)改變,展示的數(shù)據(jù)也會響應(yīng)式的改變。響應(yīng)式的改變意味著我們不需要強制刷新頁面就可以實現(xiàn)數(shù)據(jù)的變化。這種語法為請輸入代碼Mustache語法
這里是title的值:{{title}}
export default { name:"phonerisk", data(){ return{ title:"testTitle" } } }
網(wǎng)頁上就會顯示出來data里面title的值。
v-html可以將一段HTML的代碼字符串輸出成HTML片段而不是普通的文本。
這里是
export default {
name:"phonerisk",
data(){
return{
html:"v-if"
}
}
}
網(wǎng)頁上將html字符串渲染成顏色為藍(lán)色的普通文本。
Mustache·語法不能用于HTML上,所以我們需要綁定一些屬之類的需要使用v-bind。v-bind就是將data里面的數(shù)據(jù)綁定到HTML上面,從而實現(xiàn)屬性的變化。
export default { name:"phonerisk", data(){ return{ imgUrl:"../../static/img/KFC.e66b2f8e.png" } } }
v-bind 可以簡寫成 :
v-model是用于表單輸入的數(shù)據(jù)雙向綁定。所謂雙向綁定就是視圖層的數(shù)據(jù)變化會引起數(shù)據(jù)層數(shù)據(jù)的改變,相反的,數(shù)據(jù)層的變化也會導(dǎo)致視圖層展示數(shù)據(jù)的變化。
{{name}}
export default { name:"phonerisk", data(){ return{ name:"小明" } }, methods:{ changeName(){ this.name = "小花"; } } }
input輸入框綁定name,輸入框初始顯示‘小明’,在輸入框里更改信息的時候,name同時發(fā)生改變,點擊按鈕改變name數(shù)值的時候,輸入框里面的數(shù)據(jù)同時發(fā)生改變。
五、v-onv-on 用于監(jiān)聽DOM事件,如按鈕的點擊事件、雙擊事件等。v-on 的簡寫為 @,如下面的 @click 就等價為 v-on:click。
template>
methods:{ yes(){ alert("我有啥不敢的?。。?); } }
這個案例是監(jiān)聽按鈕的點擊事件,點擊之后調(diào)用 yes 函數(shù),然后彈出警告框。
在平時的開發(fā)過程中我們可能會使用到 event.preventDefault() 或者 event.stopPropagation() 來阻止事件的繼續(xù)傳播,但是這個是直接操作DOM節(jié)點,不符合Vue的思想。所以Vue采用修飾符來進行相關(guān)的操作。下面我例舉幾個常用的,如了解更過,可以查看Vue的官網(wǎng)進行更詳細(xì)的學(xué)習(xí)。
.stop
沒有加修飾符
methods:{ yes(){ alert("我有啥不敢的!??!"); }, div(){ alert("我會DIV"); } }
效果如下圖:
加了 .stop 修飾符之后的效果
效果如下圖:
.stop 修飾符阻止了事件的繼續(xù)傳播,所以子節(jié)點的 click事件沒有冒泡到父節(jié)點,所以div的點擊監(jiān)聽沒有監(jiān)聽到內(nèi)容。
.prevent
沒有加修飾符
運行結(jié)果如下圖:
加了 .prevent 修飾符之后的效果
.prevent 提交表單之后頁面不在重新渲染??梢钥吹?jīng)]加修飾符的時候頁面重新加載,但是在加修飾符之后,頁面不在重新加載。
.keyup
綁定到輸入框里,可以直接按enter鍵就出發(fā)提交的方法,和點擊提交按鈕一樣的效果,官網(wǎng)還提供了其他按鍵的別名
六、v-ifv-if用于做條件化的渲染,當(dāng)組件的判斷條件發(fā)生改變,這個組件會被銷毀并重建。
我叫001 我叫002
```javascript data(){ return{ display:true } }, methods:{ changeShow(){ this.display = !this.display; }, } ``` 運行結(jié)果如下圖:
v-if綁定的變量為 true 的時候,其所在的元素會被渲染出來,反之亦然。
七、v-else、v-else-ifv-else 和C語言中的else一樣的語法效果。如果條件變量不滿足 v-if ,則執(zhí)行
我叫001 我叫002
運行效果和上圖一致。
v-else-if 是Vue2.1.0版本新增的一個屬性。v-else-if 必須用在 v-if 和 v-else 之間才有效果。
我叫001 我叫002 我叫003
data(){ return{ display:1 } }, methods:{ changeShow(){ this.display = (this.display + 1)%3; }, }
運行結(jié)果如下圖:
v-show 是切換元素的 display 屬性的。
我叫001 我叫002
data(){ return{ display:true } }, methods:{ changeShow(){ this.display = !this.display; }, }
運行效果如下圖:
v-for 用于多次渲染同一模板或者元素。
- {{index}}、我的名字叫{{name}}
data(){ return{ names:["jack","joe","Nancy", "lily"] } },
運行結(jié)果如下圖:
v-for 多次渲染了li 里面的內(nèi)容,循環(huán)遍歷了names 數(shù)組,并將結(jié)放入 {{name}} 里面。
十、v-oncev-once 只渲染元素和組件一次,如果內(nèi)容改變,也會將元素、組件視為靜態(tài)元素跳過。
This will never change:{{msg}}comment::: {{msg}}
- {{i}}
This will change: This will never change:{{msg}}comment::: {{msg}}
- {{i}}
data() { return { msg: 111, names: ["jack", "joe", "Nancy", "lily"] }; }, methods: { changValue() { this.msg += 111; this.names[2] = "web"; } }
運行效果如下圖:
在點擊按鈕后, msg 會增加,但是上面有v-once指令的元素等則不會重新渲染。
十一、v-if和v-show的區(qū)別前面講了v-if 和 v-show,兩個指令都是用在元素之間的顯示和隱藏的切換,那么,這兩個指令究竟有什么不同呢?接下來我將用一個示例來講解他們之間的差異。
v-if
12v-show
12對比
12
data() { return { display: true }; }, methods: { changeValue() { this.display = !this.display; } }
.content { display: inline-block; width: 100px; height: 100px; border: solid 1px black; background-color: red; } .content + .content { margin-left: 20px; }
運行效果如下圖:
從上圖我們可以看出當(dāng)display 為 false 的時候,v-if 和v-show顯示位置不一樣。
首先我們解讀一下這個代碼的css:content類設(shè)置了div的長寬和背景色,dispaly屬性為 inline-block,
.content + .content 設(shè)置了如果有兩個content 類在一起的時候,后面一個的左邊距為20個像素。
在dispaly 為 true 的時候,兩個div都靠左顯示。
在 display 為 false 的時候,上面的div在原來的位置重新渲染,但是下面的div卻有一個20像素的左邊距。
所以v-if渲染的時候,不會將不符合條件的元素加載到DOM樹里面,而v-show則會將所有的節(jié)點都加載到DOM樹,然后根據(jù)條件,更改節(jié)點的display 屬性,生成不同的渲染樹。
一般來說, v-if需要更高的開銷,每次都會改變DOM樹,但是v-show 只需要改變元素的 display ,開銷更低。
當(dāng)v-for 和v-if 在同一個蒜素里的時候,前者比后者有更高的優(yōu)先級,所以我們在開發(fā)中一定要注意優(yōu)先級的問題。
如果我們是想有條件的跳過循環(huán)中的某些項的時候:
- {{index + 1}}、我花費了{(lán){count}}元
> {{index + 1}}、我花費了{(lán){count}}元
data() { return { counts:[11,22,33,44,55,66] };
運行結(jié)果如下圖:
跳過了count 小于 30 的項
2.如果我們是打算有條件的跳過循環(huán)的話那么我們應(yīng)該將判斷寫在循環(huán)的外面,先判斷條件。
- {{index + 1}}、我花費了{(lán){count}}元
運行結(jié)果如下圖:
至此,講完了Vue 的基本語法......撒花??ヽ(°▽°)ノ?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101173.html
摘要:當(dāng)表達(dá)式的值發(fā)生變化時,響應(yīng)應(yīng)用特定的行為到。指的是否重復(fù),對重復(fù)的進行服用循環(huán)中,表示數(shù)組第個元素表示對象的樣式綁定樣式也可以根據(jù)中的變量來動態(tài)確定。 介紹 前段時間接觸到一個庫叫做Vue.js, 個人感覺很棒,所以整理了一篇博文做個介紹。Vue讀音/vju:/,和view類似。是一個數(shù)據(jù)驅(qū)動的web界面庫。Vue.js只聚焦于視圖層,可以很容易的和其他庫整合。代碼壓縮后只有24kb...
摘要:前端知識點總結(jié)持續(xù)更新中框架和庫的區(qū)別框架有著自己的語法特點都有對應(yīng)的各個模塊庫專注于一點框架的好處提到代碼的質(zhì)量,開發(fā)速度提高代碼的復(fù)用率降低模塊之間的耦合度高內(nèi)聚低耦合思維模式的轉(zhuǎn)換從操作的思維模式切換到以數(shù)據(jù)為主概述是一個漸進式的構(gòu)建 前端知識點總結(jié)——VUE(持續(xù)更新中) 1.框架和庫的區(qū)別: 框架:framework 有著自己的語法特點、都有對應(yīng)的各個模塊庫 library ...
摘要:框架和庫的區(qū)別框架有著自己的語法特點都有對應(yīng)的各個模塊庫專注于一點框架的好處提到代碼的質(zhì)量,開發(fā)速度提高代碼的復(fù)用率降低模塊之間的耦合度高內(nèi)聚低耦合思維模式的轉(zhuǎn)換從操作的思維模式切換到以數(shù)據(jù)為主概述是一個漸進式的構(gòu)建用戶界面的框架小到的簡單1.框架和庫的區(qū)別: 框架:framework 有著自己的語法特點、都有對應(yīng)的各個模塊庫 library 專注于一點 框架的好處: 1.提到代碼的質(zhì)...
摘要:轉(zhuǎn)換成為模板函數(shù)聯(lián)系上一篇文章,其實模板函數(shù)的構(gòu)造都大同小異,基本是都是通過拼接函數(shù)字符串,然后通過對象轉(zhuǎn)換成一個函數(shù),變成一個函數(shù)之后,只要傳入對應(yīng)的數(shù)據(jù),函數(shù)就會返回一個模板數(shù)據(jù)渲染好的字符串。 教程目錄1.手把手教你從零寫一個簡單的 VUE2.手把手教你從零寫一個簡單的 VUE--模板篇 Hello,我又回來了,上一次的文章教會了大家如何書寫一個簡單 VUE,里面實現(xiàn)了VUE 的...
閱讀 881·2021-11-15 11:37
閱讀 3619·2021-11-11 16:55
閱讀 3284·2021-11-11 11:01
閱讀 1008·2019-08-30 15:43
閱讀 2755·2019-08-30 14:12
閱讀 695·2019-08-30 12:58
閱讀 3397·2019-08-29 15:19
閱讀 2037·2019-08-29 13:59