Vue.js是當下很火的一個JavaScript MVVM(Model-View-ViewModel)庫,它是以數據驅動和組件化的思想構建的。相比于Angular.js,Vue.js提供了更加簡潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。
如果你之前已經習慣了用jQuery操作DOM,學習Vue.js時請先拋開手動操作DOM的思維,因為Vue.js是數據驅動的,你無需手動操作DOM。它通過一些特殊的HTML語法,將DOM和數據綁定起來。一旦你創建了綁定,DOM將和數據保持同步,每當變更了數據,DOM也會相應地更新。
當然了,在使用Vue.js時,你也可以結合其他庫一起使用,比如jQuery。
1.使用
使用Vue的過程就是定義MVVM(Model-View-ViewModel)各個組成部分的過程的過程。
<!--這里定義View--> <p id="app">{{ message }}</p> <script src="js/vue.js"></script> <script> // 這里定義Model var exampleData = { message: 'Hello World!' } // 這里創建一個 Vue 實例或 "ViewModel" // 連接 View 與 Model new Vue({ el: '#app', data: exampleData }) </script>
2.Vue.js的常用指令
Vue.js提供了一些常用的內置指令,接下來我們將介紹以下幾個內置指令:
?v-if指令
?v-show指令
?v-else指令
?v-for指令
?v-bind指令
?v-on指令
Vue.js具有良好的擴展性,我們也可以開發一些自定義的指令,后面的文章會介紹自定義指令。
2.1 v-if指令
v-if后面賦予 可以轉化為布爾類型的表達式
<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>
這里區別是上面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一樣,不過前一兄弟元素必須有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,子元素可以遍歷綁定的對應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指令可以在其名稱后面帶一個參數,中間放一個冒號隔開,這個參數通常是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事件直接綁定一個方法--> <button v-on:click="greet">Greet</button> </p> <p> <!--click事件使用內聯語句--> <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` 對象中定義方法 methods: { greet: function() { // // 方法內 `this` 指向 vm alert(this.message) }, say: function(msg) { alert(msg) } } }) </script>
2.7 v-model指令
v-model在表單控件元素上創建雙向數據綁定
<input v-model="message" placeholder="edit me"> <p>Message is: {{ message }}</p>
相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!
推薦閱讀:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com