vue.js語法及常用指令
Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM(Model-View-ViewModel)庫,它是以數(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)先拋開手動(dòng)操作DOM的思維,因?yàn)閂ue.js是數(shù)據(jù)驅(qū)動(dòng)的,你無需手動(dòng)操作DOM。它通過一些特殊的HTML語法,將DOM和數(shù)據(jù)綁定起來。一旦你創(chuàng)建了綁定,DOM將和數(shù)據(jù)保持同步,每當(dāng)變更了數(shù)據(jù),DOM也會(huì)相應(yīng)地更新。
當(dāng)然了,在使用Vue.js時(shí),你也可以結(jié)合其他庫一起使用,比如jQuery。
1.使用
使用Vue的過程就是定義MVVM(Model-View-ViewModel)各個(gè)組成部分的過程的過程。
<!--這里定義View--> <div id="app">{{ message }}</div> <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)置指令,接下來我們將介紹以下幾個(gè)內(nèi)置指令:
•v-if指令
•v-show指令
•v-else指令
•v-for指令
•v-bind指令
•v-on指令
Vue.js具有良好的擴(kuò)展性,我們也可以開發(fā)一些自定義的指令,后面的文章會(huì)介紹自定義指令。
2.1 v-if指令
v-if后面賦予 可以轉(zhuǎn)化為布爾類型的表達(dá)式
<div 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> </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"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <!----> <h1>Age: 28</h1> <!----> </div>
2.2 v-show
<div 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> </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"> <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> </div>
這里區(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一樣,不過前一兄弟元素必須有v-if或v-else-if,舊版的v-else前面可以跟v-show,但新版v-else前面不能是v-show了。
2.4 v-for指令
<div v-for="p in people"> <h1>Age: {{ p.age }}</h1> <h1>Name: {{ p.name }}</h1> <h1>Sex: {{ p.sex }}</h1> </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,子元素可以遍歷綁定的對(duì)應(yīng)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指令可以在其名稱后面帶一個(gè)參數(shù),中間放一個(gè)冒號(hào)隔開,這個(gè)參數(shù)通常是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事件直接綁定一個(gè)方法--> <button v-on:click="greet">Greet</button> </p> <p> <!--click事件使用內(nèi)聯(lián)語句--> <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` 對(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>
總結(jié)
以上所述是小編給大家介紹的vue.js語法及常用指令,希望對(duì)大家有所幫助!
相關(guān)文章
vue 使用 echarts 繪制中國地圖的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue 使用 echarts 繪制中國地圖,內(nèi)容包括插入echarts所需模塊及完整的代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01vue中element-ui組件默認(rèn)css樣式修改的四種方式
在前端項(xiàng)目中會(huì)運(yùn)用各種組件,有時(shí)組件的默認(rèn)樣式并不是你項(xiàng)目中所需要的,你需要更改樣式,下面這篇文章主要給大家介紹了關(guān)于vue中element-ui組件默認(rèn)css樣式修改的四種方式,需要的朋友可以參考下2021-10-10antd form表單使用setFildesValue 賦值失效的解決
這篇文章主要介紹了antd form表單使用setFildesValue 賦值失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-04-04springboot之springboot與netty整合方案
這篇文章主要介紹了VUE之關(guān)于store狀態(tài)管理核心解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)
這篇文章主要介紹了部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05vue中各選項(xiàng)及鉤子函數(shù)執(zhí)行順序詳解
今天小編就為大家分享一篇vue中各選項(xiàng)及鉤子函數(shù)執(zhí)行順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08ElementUI實(shí)現(xiàn)el-table列寬自適應(yīng)的代碼詳解
這篇文章給大家介紹了ElementUI實(shí)現(xiàn)el-table列寬自適應(yīng)的詳細(xì)步驟,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01Vue首頁界面加載優(yōu)化實(shí)現(xiàn)方法詳解
如果你也遇到在 vue 應(yīng)用中,首頁加載資源過多,導(dǎo)致加載緩慢的問題,下面的方法也許能幫到你,主要的處理思想是:讓首頁多余的資源能在需要它的時(shí)候再加載2022-09-09vue3.0 Reactive數(shù)據(jù)更新頁面沒有刷新的問題
這篇文章主要介紹了vue3.0 Reactive數(shù)據(jù)更新頁面沒有刷新的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04