本文為轉(zhuǎn)載,原文:Vue學(xué)習(xí)筆記入門篇——安裝及常用指令介紹
介紹
Vue.js是當(dāng)下很火的一個JavaScript MVVM庫,它是以數(shù)據(jù)驅(qū)動和組件化的思想構(gòu)建的。相比于Angular.js,Vue.js提供了更加簡潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。
安裝
CDN
https://unpkg.com/vue, 會保持和 npm 發(fā)布的最新的版本一致。可以在 https://unpkg.com/vue/ 瀏覽 npm 包資源。代碼中直接引用以下代碼:
<script src="https://unpkg.com/vue/dist/vue.js"></script>
NPM
在用 Vue.js 構(gòu)建大型應(yīng)用時推薦使用 NPM 安裝, NPM 能很好地和諸如 Webpack 或 Browserify 模塊打包器配合使用。 Vue.js 也提供配套工具來開發(fā)單文件組件。
npm install vue
Hellow World示例
<div id="app">
<p>{{message}}</p>
</div>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:'#app',
data:{
message:'Hello word'
}
})
運行結(jié)果:
其中app為Vue對象,el指定作用在html的元素,即例子中<div id='app'></div>,data是數(shù)據(jù)對象,數(shù)據(jù)綁定最常見的形式就是使用 “Mustache” 語法(雙大括號)的文本插值。
常用指令
Vue.js的指令是以v-開頭的,它們作用于HTML元素,指令提供了一些特殊的特性,將指令綁定在元素上時,指令會為綁定的目標(biāo)元素添加一些特殊的行為,我們可以將指令看作特殊的HTML特性(attribute)。
Vue.js提供了一些常用的內(nèi)置指令,接下來我們將介紹以下幾個內(nèi)置指令:
v-model
在表單控件或者組件上創(chuàng)建雙向綁定
修飾符:
.lazy - 取代 input 監(jiān)聽 change 事件
.number - 輸入字符串轉(zhuǎn)為數(shù)字
.trim - 輸入首尾空格過濾
示例代碼:
<div id="app-model">
<p>{{message}}</p>
<input type="text" v-model="message">
</div>
var app_model = new Vue({
el:'#app-model',
data:{
message:''
}
})
在輸入框輸入內(nèi)容時,其上方同步顯示輸入內(nèi)容:
v-if
v-if是條件渲染指令,它根據(jù)表達(dá)式的真假來刪除和插入元素,它的基本語法如下:
v-if="expression"
expression是一個返回bool值的表達(dá)式,表達(dá)式可以是一個bool屬性,也可以是一個返回bool的運算式,如以下代碼:
<div id="app-if">
<p v-if="seen">你可以看見我</p>
</div>
var app_if = new Vue({
el:'#app-if',
data:{
seen:true
}
})
運行結(jié)果如下:
如果你在控制臺設(shè)置 app_if.seen=false 則"你可以看見我"字樣就會消失不見
v-show
v-show也是條件渲染指令,和v-if指令不同的是,使用v-show指令的元素始終會被渲染到HTML,它只是簡單地為元素設(shè)置CSS的style屬性。例如:
<div id="app-show">
<p v-show="age > 25">Age:{{age}}</p>
</div>
var app_show = new Vue({
el:'#app-show',
data:{
age:28
}
})
運行結(jié)果如下:
同樣,如果在控制臺修改app_show.age的值,若是age>25的結(jié)果為false的話,界面中的文本也會消失不見。
v-else
可以用v-else指令為v-if或v-show添加一個“else塊”。v-else元素必須立即跟在v-if或v-show元素的后面——否則它不能被識別。
示例代碼:
<div id="app-else">
<p v-if="age > 18">{{name}}的年齡是{{age}}歲,已成年</p>
<p v-else>{{name}}的年齡是{{age}}歲,未成年</p>
</div>
var app_else = new Vue({
el:'#app-else',
data:{
name:'chain',
age:17
}
})
運行結(jié)果如下:
v-for
v-for指令基于一個數(shù)組渲染一個列表,它和JavaScript的遍歷語法相似:
v-for="item in items"
items是一個數(shù)組,item是當(dāng)前被遍歷的數(shù)組元素。例如:
<div id="app-for">
<ul v-for="item in items">
<li>{{item}}</li>
</ul>
</div>
var app_for = new Vue({
el:'#app-for',
data:{
items:[
'Vue',
'Angular',
'React'
]
}
})
運行結(jié)果:
v-bind
v-bind指令可以在其名稱后面帶一個參數(shù),中間放一個冒號隔開,這個參數(shù)通常是HTML元素的特性(attribute),例如:v-bind:class
v-bind:argument="expression"
修飾符:
.prop - 被用于綁定 DOM 屬性。(what’s the difference?)
.camel - (2.1.0+) 將 kebab-case 特性名轉(zhuǎn)換為 camelCase. (從 2.1.0 開始支持)
.sync (2.3.0+) 語法糖,會擴(kuò)展成一個更新父組件綁定值的 v-on 偵聽器。
示例代碼:
<div id="app-bind">

</div>
var app_bind = new Vue({
el:'#app-bind',
data:{
img_url:'https://cn.vuejs.org/images/logo.png'
}
})
運行結(jié)果:
v-on
綁定事件監(jiān)聽器。事件類型由參數(shù)指定。表達(dá)式可以是一個方法的名字或一個內(nèi)聯(lián)語句,如果沒有修飾符也可以省略。可縮寫為@
用在普通元素上時,只能監(jiān)聽 原生 DOM 事件。用在自定義元素組件上時,也可以監(jiān)聽子組件觸發(fā)的自定義事件。
在監(jiān)聽原生 DOM 事件時,方法以事件為唯一的參數(shù)。如果使用內(nèi)聯(lián)語句,語句可以訪問一個 $event 屬性: v-on:click="handle('ok', $event)"
修飾符:
.stop - 調(diào)用 event.stopPropagation()。
.prevent - 調(diào)用 event.preventDefault()。
.capture - 添加事件偵聽器時使用 capture 模式。
.self - 只當(dāng)事件是從偵聽器綁定的元素本身觸發(fā)時才觸發(fā)回調(diào)。
.{keyCode | keyAlias} - 只當(dāng)事件是從特定鍵觸發(fā)時才觸發(fā)回調(diào)。
.native - 監(jiān)聽組件根元素的原生事件。
.once - 只觸發(fā)一次回調(diào)。
.left - (2.2.0) 只當(dāng)點擊鼠標(biāo)左鍵時觸發(fā)。
.right - (2.2.0) 只當(dāng)點擊鼠標(biāo)右鍵時觸發(fā)。
.middle - (2.2.0) 只當(dāng)點擊鼠標(biāo)中鍵時觸發(fā)。
.passive - (2.3.0) 以 { passive: true } 模式添加偵聽器
示例代碼:
<div id="app-on">
<p>{{message}}</p>
<button @click="setMessage">Set Message</button>
</div>
var app_on = new Vue({
el:'#app-on',
data:{
message:''
},
methods:{
setMessage:function () {
this.message='hello world';
}
}
})
點擊按鈕后,結(jié)果如下:
完
原創(chuàng)博文,轉(zhuǎn)載請注明出處
返回目錄
下一節(jié):Vue學(xué)習(xí)筆記入門篇——數(shù)據(jù)及DOM