vue.js語(yǔ)法及常用指令
Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM(Model-View-ViewModel)庫(kù),它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。相比于Angular.js,Vue.js提供了更加簡(jiǎn)潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。
如果你之前已經(jīng)習(xí)慣了用jQuery操作DOM,學(xué)習(xí)Vue.js時(shí)請(qǐng)先拋開(kāi)手動(dòng)操作DOM的思維,因?yàn)閂ue.js是數(shù)據(jù)驅(qū)動(dòng)的,你無(wú)需手動(dòng)操作DOM。它通過(guò)一些特殊的HTML語(yǔ)法,將DOM和數(shù)據(jù)綁定起來(lái)。一旦你創(chuàng)建了綁定,DOM將和數(shù)據(jù)保持同步,每當(dāng)變更了數(shù)據(jù),DOM也會(huì)相應(yīng)地更新。
當(dāng)然了,在使用Vue.js時(shí),你也可以結(jié)合其他庫(kù)一起使用,比如jQuery。
1.使用
使用Vue的過(guò)程就是定義MVVM(Model-View-ViewModel)各個(gè)組成部分的過(guò)程的過(guò)程。
<!--這里定義View-->
<div id="app">{{ message }}</div>
<script src="js/vue.js"></script>
<script>
// 這里定義Model
var exampleData = {
message: 'Hello World!'
}
// 這里創(chuàng)建一個(gè) Vue 實(shí)例或 "ViewModel"
// 連接 View 與 Model
new Vue({
el: '#app',
data: exampleData
})
</script>
2.Vue.js的常用指令
Vue.js提供了一些常用的內(nèi)置指令,接下來(lái)我們將介紹以下幾個(gè)內(nèi)置指令:
•v-if指令
•v-show指令
•v-else指令
•v-for指令
•v-bind指令
•v-on指令
Vue.js具有良好的擴(kuò)展性,我們也可以開(kāi)發(fā)一些自定義的指令,后面的文章會(huì)介紹自定義指令。
2.1 v-if指令
v-if后面賦予 可以轉(zhuǎn)化為布爾類(lèi)型的表達(dá)式
<div id="app">
<h1>Hello, Vue.js!</h1>
<h1 v-if="yes">Yes!</h1>
<h1 v-if="no">No!</h1>
<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
yes: true,
no: false,
age: 28,
name: 'keepfool'
}
})
</script>
這里最后就輸出
<div id="app"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <!----> <h1>Age: 28</h1> <!----> </div>
2.2 v-show
<div id="app">
<h1>Hello, Vue.js!</h1>
<h1 v-show="yes">Yes!</h1>
<h1 v-show="no">No!</h1>
<h1 v-show="age >= 25">Age: {{ age }}</h1>
<h1 v-show="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
yes: true,
no: false,
age: 28,
name: 'keepfool'
}
})
</script>
這里代碼只是v-if改為v-show
輸出為
<div id="app"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <h1 style="display: none;">No!</h1> <h1>Age: 28</h1> <h1 style="display: none;">Name: keepfool</h1> </div>
這里區(qū)別是上面v-if直接不輸出html代碼,這里用display:none隱藏
2.3 v-else指令
<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-else>Name: {{ name }}</h1>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
age: 28,
name: 'keepfool',
sex: 'Male'
}
})
</script>
前一兄弟元素必須有 v-if 或 v-else-if,新版的vue.js新增了v-else-if用法也跟v-if一樣,不過(guò)前一兄弟元素必須有v-if或v-else-if,舊版的v-else前面可以跟v-show,但新版v-else前面不能是v-show了。
2.4 v-for指令
<div v-for="p in people">
<h1>Age: {{ p.age }}</h1>
<h1>Name: {{ p.name }}</h1>
<h1>Sex: {{ p.sex }}</h1>
</div>
<script charset="utf-8" src="js/vue.js"></script>
<script type="text/javascript">
var myModel = {
people:[
{
age: 25,
name: 'keepfool',
sex: 'Male'
},
{
age: 26,
name: 'keepfool2',
sex: 'FeMale'
},
{
age: 27,
name: 'keepfool3',
sex: 'Male2'
}
]
};
var vm = new Vue({
el: '#app',
data: myModel
})
</script>
父元素用v-for,子元素可以遍歷綁定的對(duì)應(yīng)Array | Object | number | string
v-for還可以這樣用:
<div v-for="(item, index) in items"></div> <div v-for="(val, key) in object"></div> <div v-for="(val, key, index) in object"></div>
2.5 v-bind指令
v-bind指令可以在其名稱(chēng)后面帶一個(gè)參數(shù),中間放一個(gè)冒號(hào)隔開(kāi),這個(gè)參數(shù)通常是HTML元素的特性(attribute)
<div id="app">
<ul class="pagination">
<li v-for="n in pageCount">
<a href="javascripit:void(0)" rel="external nofollow" v-bind:class="activeNumber === n ? 'active' : ''">{{ n }}</a>
</li>
</ul>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
activeNumber: 1,
pageCount: 10
}
})
</script>
又例如:
<img v-bind:src="'/path/to/images/' + fileName">
<div v-bind="{ 'id': someProp, 'other-attr': otherProp }"></div>
2.6 v-on指令
<div id="app">
<p><input type="text" v-model="message"></p>
<p>
<!--click事件直接綁定一個(gè)方法-->
<button v-on:click="greet">Greet</button>
</p>
<p>
<!--click事件使用內(nèi)聯(lián)語(yǔ)句-->
<button v-on:click="say('Hi')">Hi</button>
</p>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
message: 'Hello, Vue.js!'
},
// 在 `methods` 對(duì)象中定義方法
methods: {
greet: function() {
// // 方法內(nèi) `this` 指向 vm
alert(this.message)
},
say: function(msg) {
alert(msg)
}
}
})
</script>
2.7 v-model指令
v-model在表單控件元素上創(chuàng)建雙向數(shù)據(jù)綁定
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
總結(jié)
以上所述是小編給大家介紹的vue.js語(yǔ)法及常用指令,希望對(duì)大家有所幫助!
相關(guān)文章
vue中手機(jī)號(hào),郵箱正則驗(yàn)證以及60s發(fā)送驗(yàn)證碼的實(shí)例
下面小編就為大家分享一篇vue中手機(jī)號(hào),郵箱正則驗(yàn)證以及60s發(fā)送驗(yàn)證碼的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
vue項(xiàng)目出現(xiàn)頁(yè)面空白的解決方案
今天小編就為大家分享一篇vue項(xiàng)目出現(xiàn)頁(yè)面空白的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
vue在自定義組件上使用v-model和.sync的方法實(shí)例
自定義組件的v-model和.sync修飾符其實(shí)本質(zhì)上都是vue的語(yǔ)法糖,用于實(shí)現(xiàn)父子組件的"數(shù)據(jù)"雙向綁定,下面這篇文章主要給大家介紹了關(guān)于vue在自定義組件上使用v-model和.sync的相關(guān)資料,需要的朋友可以參考下2022-07-07
vue-cli webpack 開(kāi)發(fā)環(huán)境跨域詳解
本篇文章主要介紹了vue-cli webpack 開(kāi)發(fā)環(huán)境跨域詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Vue 源碼分析之 Observer實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了 Vue 源碼分析之 Observer實(shí)現(xiàn)過(guò)程,Observer 最主要的作用就是實(shí)現(xiàn)了touch -Data(getter) - Collect as Dependency這段過(guò)程,也就是依賴(lài)收集的過(guò)程,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-03-03
vue3+vue-router+vite實(shí)現(xiàn)動(dòng)態(tài)路由的全過(guò)程
動(dòng)態(tài)路由是根據(jù)不同情況實(shí)時(shí)變化的路由,在權(quán)限管理系統(tǒng)中,動(dòng)態(tài)路由常用于根據(jù)用戶(hù)角色分配不同的菜單和功能,這篇文章主要介紹了vue3+vue-router+vite實(shí)現(xiàn)動(dòng)態(tài)路由的相關(guān)資料,需要的朋友可以參考下2024-10-10
vue3.0找不到模塊“./App.vue”或其相應(yīng)的類(lèi)型聲明(多種情況分析)
這篇文章主要介紹了vue3.0找不到模塊“./App.vue”或其相應(yīng)的類(lèi)型聲明,報(bào)錯(cuò)原因是typescript?只能理解?.ts?文件,無(wú)法理解?.vue文件,本文通過(guò)多種情況分析給大家詳細(xì)講解,需要的朋友可以參考下2023-01-01
vue 項(xiàng)目中的this.$get,this.$post等$的用法案例詳解
vue.js的插件應(yīng)該暴露一個(gè)install方法。這個(gè)方法的第一個(gè)參數(shù)是vue構(gòu)造器,第二個(gè)參數(shù)是一個(gè)可選的選項(xiàng)對(duì)象,首頁(yè)要安裝axios,本文結(jié)合案例代碼給大家詳細(xì)講解vue 中的this.$get,this.$post等$的用法,一起學(xué)習(xí)下吧2022-12-12

