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--> <p id="app">{{ message }}</p> <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)化為布爾類型的表達(dá)式
<p 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> </p> <script src="js/vue.js"></script> <script> var vm = new Vue({ el: '#app', data: { yes: true, no: false, age: 28, name: 'keepfool' } }) </script>
這里最后就輸出
<p id="app"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <!----> <h1>Age: 28</h1> <!----> </p>
2.2 v-show
<p 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> </p> </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
輸出為
<p 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> </p>
這里區(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指令
<p v-for="p in people"> <h1>Age: {{ p.age }}</h1> <h1>Name: {{ p.name }}</h1> <h1>Sex: {{ p.sex }}</h1> </p> <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還可以這樣用:
<p v-for="(item, index) in items"></p> <p v-for="(val, key) in object"></p> <p v-for="(val, key, index) in object"></p>
2.5 v-bind指令
v-bind指令可以在其名稱后面帶一個(gè)參數(shù),中間放一個(gè)冒號(hào)隔開(kāi),這個(gè)參數(shù)通常是HTML元素的特性(attribute)
<p 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> </p> <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"> <p v-bind="{ 'id': someProp, 'other-attr': otherProp }"></p>
2.6 v-on指令
<p 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> </p> <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>
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注Gxl網(wǎng)其它相關(guān)文章!
推薦閱讀:
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com