您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“vue.js語法及常用指令有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“vue.js語法及常用指令有哪些”這篇文章吧。
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--> <div id="app">{{ message }}</div> <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后面賦予 可以轉化為布爾類型的表達式
<div id="app"> <h2>Hello, Vue.js!</h2> <h2 v-if="yes">Yes!</h2> <h2 v-if="no">No!</h2> <h2 v-if="age >= 25">Age: {{ age }}</h2> <h2 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h2> </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"> <h2>Hello, Vue.js!</h2> <h2>Yes!</h2> <!----> <h2>Age: 28</h2> <!----> </div>
2.2 v-show
<div id="app"> <h2>Hello, Vue.js!</h2> <h2 v-show="yes">Yes!</h2> <h2 v-show="no">No!</h2> <h2 v-show="age >= 25">Age: {{ age }}</h2> <h2 v-show="name.indexOf('jack') >= 0">Name: {{ name }}</h2> </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"> <h2>Hello, Vue.js!</h2> <h2>Yes!</h2> <h2 >No!</h2> <h2>Age: 28</h2> <h2 >Name: keepfool</h2> </div>
這里區別是上面v-if直接不輸出html代碼,這里用display:none隱藏
2.3 v-else指令
<h2 v-if="age >= 25">Age: {{ age }}</h2> <h2 v-else>Name: {{ name }}</h2> <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指令
<div v-for="p in people"> <h2>Age: {{ p.age }}</h2> <h2>Name: {{ p.name }}</h2> <h2>Sex: {{ p.sex }}</h2> </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,子元素可以遍歷綁定的對應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指令可以在其名稱后面帶一個參數,中間放一個冒號隔開,這個參數通常是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事件直接綁定一個方法--> <button v-on:click="greet">Greet</button> </p> <p> <!--click事件使用內聯語句--> <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` 對象中定義方法 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>
以上是“vue.js語法及常用指令有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。