前言
Vuejs相關教程,可參閱網站,先熟悉vue.js的基本語法。本文檔講述,以CDN的方式(在頁面上,引入相關的js和css文件),來實現。
本文檔適用於vuejs初學者,以前給公司實習生學習準備的,不少相關知識暫不全,敬請諒解。
[color=#ff0000]1 頁面結構[/color]
Vue.js 使用了基於 HTML 的模版語法,容許開發者聲明式地將 DOM 綁定至底層 Vue 實例的數據。簡單來講,最基本結構以下就是:javascript
<html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script> </head> <body> <div id="app"> {{mes}} </div> </body> <script> new Vue({ el:'#app', data:{ mes:'hello' } }) </script> </html>
這裏邊body的最外層的div,須要在下邊進行實例化。固然最外層用的是id='app',實例化的時候,el:'#app'。跟css相似,若是最外層用class來標識的時候,裏邊#換成「點」。可是爲了不重複,統一用「id」來標識。
[color=#ff0000]2 基本模塊[/color]css
上半邊省略,直接上js代碼html
<script> new Vue({ el:'#app', data:{ 初始化頁面上綁定的模型,數據 }, filters:{ 過濾器,簡單數據處理。 }, mounted:function(){ 頁面載入時調用的方法, }, methods:{ 事件方法 }, watch:{ 數據監聽。 } }) </script>
data: 頁面初始化時,定義的元素模塊,也是數據的容器,每個欄位都會用到,相似於以前的普通寫法裏邊的name,id等,可是比那個強大。
filters:這一塊是過濾器,通常是處理數據用的。
mounted:頁面加載是調用的方法,這便涉及到Vuejs的生命週期,你們能夠去了解。根據不一樣狀況調用,我本身遇到過關於圖表方面,家在前後順序的問題。
watch: 用於頁面模塊的數據監聽。數據發生改變的時候,頁面展現進行切換。
methods:事件方法都寫在這個裏邊。例如點擊事件。
正常狀況下,頁面結構就是上邊的屬性,固然順序調換也何嘗不可,看我的習慣。除了data外,其餘模塊用不到的,能夠去掉。
[color=#ff0000]3.vue.js經常使用的指令[/color]vue
[color=#ff0000]文本指令[/color]
經常使用的數據綁定,雙大括號的形式。{{ ··· }}
v-text 純文本的方式展現出來
v-html 會解析你數據裏邊帶的標籤,以及樣式,事件等等
v-model 功能最全,你把v-model放到input裏邊的時候,你會發現,你的input這個欄位,跟其餘幾個,message變成了雙向綁定,你改變input裏邊的值,其餘的值會跟着一塊兒變更java
<body> <div id="app"> {{message}} <div v-text="message"></div> <div v-html="message"></div> <input v-model="message" /> </div> </body> <script> new Vue({ el:'#app', data:{ message:"<h1>Hello World</h1>" } }) </script>
運行上邊的結果你會發現,{{···}}和「v-text」這種方式,會把message全部的東西輸出,v-html會解析message裏邊的html標籤,而v-model會綁定,message裏邊的數據,當你改變input裏邊的數據,頁面上其餘的數據也會相應改動。數組
[color=#ff0000]v-bind指令[/color]
html中的屬性值,一般會用到這個指令,例如如下的class。v-bind:class=[class1,{‘class2’:A},{‘class3’:B}] 其中,class1爲一直生效,class2和class3必須根據A,B對應的布爾值來展現,true的時候生效,反之不生效。 指令簡寫能夠直接是」:class」,省去前邊的v-bind.app
<style> .class1{color:red;} .class2{font-size:16px;} </style> <body> <div id="app"> <div :class="[class1,{‘class2’:A}]"> {{message}} </div> </div> </body> <script> new Vue({ el:'#app', data:{ message:"<h1>Hello World</h1>", class1:'class1', A: true } }) </script>
(這種狀況,可用於,按鈕點擊,更換狀態,樣式等)
[color=#ff0000]v-if(v-else-if,v-else)指令[/color]
主要是在頁面上給出相應的條件,例如框架
<style> p{font-size:30px;} </style> <body> <div id="app"> <input v-model="message"> <p v-if="message<12" style="color:red;"></p> <p v-else-if="message>20" style="color:green;"></p> <p v-else style="color:yellow;"></p> </div> </body> <script> new Vue({ el:'#app', data:{ message:"<h1>Hello World</h1>", A: true } }) </script>
跟普通的if..else..語句的寫法基本相似,也能夠進行嵌套。
v-for指令,數據循環,基本寫法學習
<body> <div id="app"> <div v-for="item in message"> {{item.name}} </div> </div> </body> <script> new Vue({ el:'#app', data:{ message:[ {name:"張三"}, {name:"李四"} ] } }) </script>
也能夠加嵌套,二維數組使用,限定結構一致網站
<body> <div id="app"> <div v-for="item in message"> {{item.name}} {{item.age}} <div v-for="it in item.study"> {{it.yuwen}} {{it.shuxue}} </div> </div> </div> </body> <script> new Vue({ el:'#app', data:{ message:[ { name:"張三", age:"24", study:[ { yuwen:"95", shuxue:"80" } ] }, ] } }) </script>
vuejs,2.0中,v-for循環也能夠加鍵名和索引,例如:
<body> <div id="app"> <div v-for="(item,key,index) in message"> {{index}}{{key}}{{item.name}} </div> </div> </body> <script> new Vue({ el:'#app', data:{ message:[ {name:"張三"}, {name:"李四"} ] } }) </script>
value爲對應字段行。key爲鍵名,index爲索引。這三個只是順序,不帶表真實參數,你寫ABC下邊雙括號也寫ABC也能夠
。
循環的時候,咱們能夠寫在v-model,或者有圖片的時候,咱們能夠寫在:src上
例如:<input v-model="item.name">
<img :src="item.name">
標籤中不容許帶雙括號。例如,如下這種寫法
<img :src="{{item.name}}">
[color=#ff0000]4.vue.js經常使用事件[/color]
[color=#ff0000]點擊事件[/color]
經常使用事件聲明爲v-on:click=」hello()」,無參數,能夠不帶括號,有參數寫括號中。簡寫方式@click=」hello()」,事件寫在methods:{ ~~~ }裏邊。格式以下
<body> <div id="app"> <input type="button" @click="demo()"> <input type="button" @change="hello('aaa')"> </div> </body> <script> new Vue({ el:'#app', data:{ }, methods:{ demo:function(){ }, hello:function(a){ } } }) </script>
事件是能夠繼承的,簡單來講,好比一個事件,咱們須要在頁面上調用屢次,咱們能夠直接進行事件繼承。
<body> <div id="app"> <input type="button" @click="demo()"> </div> </body> <script> new Vue({ el:'#app', data:{ }, mounted:function(){ this.hello(); 頁面載入時調用hello方法, }, methods:{ demo:function(){ this.hello(); 點擊時調用到了hello方法 }, hello:function(a){
} } })
</script>
[color=#ff0000]監聽事件[/color] 監聽事件,當欄位值發生改變的時候,使用。,原來的js採用的是change事件,vuejs也能夠用@change=」」的方式來寫,這樣的話寫在,跟點擊事件同樣,寫在methods:{ ~~~ }裏邊。 可是部分框架,@change這種方式不兼容,因此咱們通常直接用v-model進行綁定,寫在watch:{ }裏邊,例如:
<body>
<div id="app"> <input type="text" v-model="message"> </div>
</body>
<script>
new Vue({ el:'#app', data:{ message:'20' }, watch:{ message:function(val,oldval){ 自帶兩個參數,其中val爲當前值,oldval爲改變後的值 } }, methods:{ } })
</script>
[color=#ff0000]過濾器[/color] 過濾器寫在filters:{}裏邊,通常對數據進行處理的時候會用獲得。直接在文本後邊加上「|」,而後跟這寫,事件名。例如
<body>
<div id="app"> {{message | demo}} </div>
</body>
<script>
new Vue({ el:'#app', data:{ message:'20' }, filters:{ demo:function(val){ return "$"+val+".00"; } } })
</script>