詳解Vue中的基本語(yǔ)法和常用指令
什么是vue.js
Vue.js是目前最火的一個(gè)前端框架,React是最流行的一個(gè)前端框架(React除了開(kāi)發(fā)網(wǎng)站,還可以開(kāi)發(fā)手機(jī)App, Vue語(yǔ)法也是可以用于進(jìn)行手機(jī)App開(kāi)發(fā)的,需要借助于Weex)
Vue.js 是前端的**主流框架之一**,和Angular.js、React.js 一起,并成為前端三大主流框架!
Vue.js 是一套構(gòu)建用戶界面的框架,**只關(guān)注視圖層**,它不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。(Vue有配套的第三方類庫(kù),可以整合起來(lái)做大型項(xiàng)目的開(kāi)發(fā))
Vue.js模本語(yǔ)法
1、插值表達(dá)式
數(shù)據(jù)綁定最常見(jiàn)的形式就是使用 {{...}}(雙大括號(hào))的文本插值
<div id="app">
<div>{{ message }}</div>
</div>
<script>
new Vue({
el: '#app',
data: {
message: '<h1>vue的初次學(xué)習(xí)</h1>'
}
})
</script>
v-html 指令 :用于輸出 html 代碼:
<div id="app">
<div v-html="message"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
message: '<h1>vue的初次學(xué)習(xí)</h1>'
}
})
</script>
v-text 指令 :是用于輸出文本
<div id="app">
<div v-text="message"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
message: '<h1>vue的初次學(xué)習(xí)</h1>'
}
})
</script>
2、Vue.js的條件判斷
v-if條件判斷指令
<div id="app">
<p v-if="seen">現(xiàn)在你看到我了</p>
<template v-if="ok">
<h1>菜鳥(niǎo)教程</h1>
<p>學(xué)的不僅是技術(shù),更是夢(mèng)想!</p>
<p>哈哈哈,打字辛苦?。。。?lt;/p>
</template>
</div>
<script>
new Vue({
el: '#app',
data: {
seen: true,
ok: true
}
})
</script>
如果 seen 為true 這顯示 p 標(biāo)簽。否則隱藏
注意:
1、 v-show 其用法和 v-if 相同也可以設(shè)置元素的顯示或隱藏。但是不具備條件判斷功能
2、 v-else、v-else-if 可以給v-if 設(shè)置一個(gè) else 模塊、else-if模塊
3、 v-else 、v-else-if 必須要跟在 v-if 或v-else-if 模塊后面
3、Vue.js循環(huán)語(yǔ)法
v-for 指令需要以 site in sites 形式的特殊語(yǔ)法, sites 是源數(shù)據(jù)數(shù)組并且 site 是數(shù)組元素迭代的別名
1.迭代數(shù)組
<div id="app">
<ol>
<li v-for="site in sites">
{{ site.name }}
</li>
</ol>
</div>
<script>
new Vue({
el: '#app',
data: {
sites: [
{name: 'Runoob'},
{name: 'Google'},
{name: 'Taobao'}
]
}
})
</script>
2.迭代對(duì)象中的屬性
<div v-for="(val, key, i) in userInfo">
{{val}} --- {{key}} --- {{i}}
</div>
其中:【userinfo】是一個(gè)對(duì)象
3.迭代數(shù)字
<p v-for="i in 10">這是第 {{i}} 個(gè)P標(biāo)簽</p>
4、Vue.js 常用指令
v-cloak : 能夠解決插值表達(dá)式閃爍的問(wèn)題
v-bind :是vue提供的用于綁定屬性的指令??梢院?jiǎn)寫為 : 要綁定的指令 。
<input type="button" value="按鈕" v-bind:title="mytitle + '123'">
<script>
var vm = new Vue({
el: '#app',
data: {
mytitle: '這是一個(gè)自己定義的title'
},
methods: {
show: function() {
alert('Hello')
}
}
})
</script>
v-model :v-bind 只能實(shí)現(xiàn)數(shù)據(jù)的單向綁定。從M 自動(dòng)綁定到V , 無(wú)法實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。 而 v-model 指令則可以實(shí)現(xiàn)表單元素和 M中數(shù)據(jù)的雙向綁定。
注意: v-model指令只能運(yùn)用在表單元素中 。
<div id="app">
<h4>{{ msg }}</h4>
<!-- input(radio, text, address, email....) select checkbox textarea -->
<input type="text" style="width:100%;" v-model="msg">
</div>
<script>
// 創(chuàng)建 Vue 實(shí)例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
msg: '大家都是好學(xué)生,愛(ài)敲代碼,愛(ài)學(xué)習(xí),愛(ài)思考,簡(jiǎn)直是完美,沒(méi)瑕疵!'
},
methods: {}
});
</script>
補(bǔ)充說(shuō)明:前端MVVM 與后端的MVC的區(qū)別。
MVC:是后端分層開(kāi)發(fā)的概念。
MVVM是前端視圖層的概念。主要關(guān)注于視圖層分離,也就是說(shuō):MVVM吧前端的視圖層分為了三部分。Model ,View ,VM ViewModel

5、Vue.js 事件處理器
v-on :事件監(jiān)聽(tīng)可以使用 v-on 指令
<div id="app">
<!-- `greet` 是在下面定義的方法名 -->
<button v-on:click="greet">Greet</button>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
name: 'Vue.js'
},
// 在 `methods` 對(duì)象中定義方法
methods: {
greet: function(event) {
// `this` 在方法里指當(dāng)前 Vue 實(shí)例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if(event) {
alert(event.target.tagName)
}
}
}
})
</script>
6、事件修飾符
.stop 阻止冒泡
.prevent 阻止默認(rèn)事件
.capture 添加事件偵聽(tīng)器時(shí)使用事件捕獲模式
.self 只當(dāng)事件在該元素本身(比如不是子元素)觸發(fā)時(shí)觸發(fā)回調(diào)
.once 事件只觸發(fā)一次
<div id="app">
<!-- 使用 .stop 阻止冒泡 -->
<div class="inner" @click="div1Handler">
<input type="button" value="戳他" @click.stop="btnHandler">
</div>
<!-- 使用 .prevent 阻止默認(rèn)行為 -->
<!-- <a @click.prevent="linkClick">有問(wèn)題,先去百度</a> -->
<!-- 使用 .capture 實(shí)現(xiàn)捕獲觸發(fā)事件的機(jī)制 -->
<div class="inner" @click.capture="div1Handler">
<input type="button" value="戳他" @click="btnHandler">
</div> -->
<!-- 使用 .self 實(shí)現(xiàn)只有點(diǎn)擊當(dāng)前元素時(shí)候,才會(huì)觸發(fā)事件處理函數(shù) -->
<div class="inner" @click="div1Handler">
<input type="button" value="戳他" @click="btnHandler">
</div>
<!-- 使用 .once 只觸發(fā)一次事件處理函數(shù) -->
<!-- <a @click.prevent.once="linkClick">有問(wèn)題,先去百度</a> -->
<!-- 演示: .stop 和 .self 的區(qū)別 -->
<div class="outer" @click="div2Handler">
<div class="inner" @click="div1Handler">
<input type="button" value="戳他" @click.stop="btnHandler">
</div>
</div>
<!-- .self 只會(huì)阻止自己身上冒泡行為的觸發(fā),并不會(huì)真正阻止 冒泡的行為 -->
<div class="outer" @click="div2Handler">
<div class="inner" @click.self="div1Handler">
<input type="button" value="戳他" @click="btnHandler">
</div>
</div>
</div>
<script>
// 創(chuàng)建 Vue 實(shí)例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
div1Handler() {
console.log('這是觸發(fā)了 inner div 的點(diǎn)擊事件')
},
btnHandler() {
console.log('這是觸發(fā)了 btn 按鈕 的點(diǎn)擊事件')
},
linkClick() {
console.log('觸發(fā)了連接的點(diǎn)擊事件')
},
div2Handler() {
console.log('這是觸發(fā)了 outer div 的點(diǎn)擊事件')
}
}
});
</script>
7、按鍵修飾符
v-on:keyup : 允許為 v-on 在監(jiān)聽(tīng)鍵盤事件時(shí)添加按鍵修飾符
<input v-on:keyup.enter="submit">
綁定一個(gè)回車按鍵時(shí)間
8、Vue.js 樣式的綁定
1、Class屬性的綁定(v-bind:class)
<style>
.active {
width: 100px;
height: 100px;
background: green;
}
</style>
<div id="app">
<div v-bind:class="{ active: isActive }"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
isActive: true
}
})
</script>
也可以:
<div id="app"> <div v-bind:class="active"></div> </div>
2、數(shù)組語(yǔ)法
即我們可以向v-bind:class 傳遞一個(gè)數(shù)組
<style>
.active {
width: 100px;
height: 100px;
background: green;
}
.text-danger {
background: red;
}
</style>
<div id="app">
<div v-bind:class="[activeClass, errorClass]"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
isActive: true,
activeClass: 'active',
errorClass: 'text-danger'
}
})
</script>
同時(shí)在數(shù)組中我們也可以使用三元表達(dá)式:
<div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
3、Vue.js 的內(nèi)聯(lián)樣式(v-bind:style)
1、直接設(shè)置樣式
<div id="app">
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">測(cè)試內(nèi)聯(lián)樣式</div>
</div>
2、綁定樣式對(duì)象
<div id="app">
<div v-bind:style="styleObject">測(cè)試綁定樣式對(duì)象</div>
</div>
<script>
new Vue({
el: '#app',
data: {
styleObject: {
color: 'green',
fontSize: '30px'
}
}
})
</script>
3、綁定多個(gè)樣式對(duì)象
<div id="app">
<div v-bind:style="[baseStyles, overridingStyles]">綁定多個(gè)樣式對(duì)象</div>
</div>
<script>
new Vue({
el: '#app',
data: {
baseStyles: {
color: 'green',
fontSize: '30px'
},
overridingStyles: {
'font-weight': 'bold'
}
}
})
</script>
總結(jié)
以上所述是小編給大家介紹的vue 的基本語(yǔ)法和常用指令,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
vue中項(xiàng)目如何提交form格式數(shù)據(jù)的表單
這篇文章主要介紹了vue中項(xiàng)目如何提交form格式數(shù)據(jù)的表單,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Vue.js基礎(chǔ)學(xué)習(xí)之class與樣式綁定
這篇文章主要為大家介紹了Vue.js的Class與樣式綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
解決vue無(wú)法加載文件D:\Program Files\nodejs\node_global\vue.ps1,
這篇文章主要給大家介紹了關(guān)于解決vue無(wú)法加載文件D:\Program Files\nodejs\node_global\vue.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本的相關(guān)資料,這個(gè)報(bào)錯(cuò)是由于在系統(tǒng)上禁止運(yùn)行腳本導(dǎo)致的,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
vue3不同環(huán)境下實(shí)現(xiàn)配置代理
這篇文章主要介紹了vue3不同環(huán)境下實(shí)現(xiàn)配置代理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
詳解vue2.0 使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換效果(vue-cli)
本篇文章主要介紹了詳解vue2.0 使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換效果(vue-cli),具有一定的參考價(jià)值,有需要的可以了解下2017-08-08
Vue+Element-U實(shí)現(xiàn)分頁(yè)顯示效果
這篇文章主要為大家詳細(xì)介紹了Vue+Element-U實(shí)現(xiàn)分頁(yè)顯示效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Vue中router-view和component :is的區(qū)別解析
這篇文章主要介紹了Vue中router-view和component :is的區(qū)別解析,router-view用法直接填寫跳轉(zhuǎn)路由,路由組件會(huì)渲染<router-view></router-view>標(biāo)簽,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
vue路由攔截及頁(yè)面跳轉(zhuǎn)的設(shè)置方法
這篇文章主要介紹了vue路由攔截及頁(yè)面跳轉(zhuǎn)的設(shè)置方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05

