一.vue概念html
# 1.什麼是Vue # Vue.js是一個漸進式JavaScript框架 # 漸進式:vue從小到控制頁面中的一個變量到頁面一塊內容到整個頁面,最終大到整個項目,東能夠用vue框架來實現 # vue能夠幹哪些事 # 將數據渲染到指定區域(數據能夠是後臺獲取,也能夠由前臺本身產生) # 能夠與頁面完成基於數據的交互方式 # 爲何學習Vue # 1.整合了Angular React框架的優勢(第一手API文檔是中文的) # 2.單頁面應用(得益於vue的組件化開發 => 前臺代碼的複用) # 3.虛擬DOM(提升操做DOM的效應) # 4.數據的雙向綁定
二.如何在頁面中使用vuevue
<body> <div id="box1"> <!--{{ }} 會被vue解析爲數據的渲染的指定語法--> {{ }} </div> <hr> <div class="box2"> {{ }} </div> </body> <script src="js/vue.js"></script> <script> // 如何使用jq框架 <= 拿到jq框架的對象 $ | jQuery // 類比:如何使用vue框架 <= 拿到vue框架的對象 new Vue() // vue對象須要手動建立, 緣由,一個vue對象能夠只控制頁面中的某一部分, 若是一個頁面有多個部分都須要被控制,那麼就須要建立多個vue對象 // vue對象如何與控制的頁面進行關聯(綁定),採用的是vue對象中的掛載點(掛載點能夠惟一標識頁面中的某一個區域) new Vue({ el: "#box1" // 掛在在id爲box1的div上,那麼該div下的全部內容都由該vue對象來控制 }) new Vue({ el: '.box2' // 掛在在class爲box2的div上,那麼該div下的全部內容都由該vue對象來控制(儘可能使用id,惟一標識) }) </script>
三.vue的掛載點(vue實例)app
<body> <div id="app"> {{ msg }} </div> </body> <script src="js/vue.js"></script> <script> // Vue實例會根據數據產生虛擬DOM,最終替換掉掛載點的真實DOM(不要掛在到body上) var app = new Vue({ el: '#app', data: { msg: "今晚嘿嘿" } }); // 若是須要使用vue對象(實例), 那麼久能夠接受Vue建立的結果, 反之就不須要接收 console.log(app); console.log(app.$attrs); // vue實例的變量都是以$開頭 console.log(app.$el); console.log(app.$data.msg); console.log(app.msg); // app對象 = new Vue()實例 = 標籤div#app組件 </script>
四.vue基礎指令框架
1.文本指令函數
<body> <div id="app"> <p>{{ info }}</p> <!-- v-text 爲vue的文本指令 ="info" , info爲vue實例data中的一個變量 --> <p v-text="info"></p> <p v-text="msg"></p> <p v-html="res"></p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: "#app", data: { info: "插值表達式", msg: "文本指令", res: "<b>加粗的文本</b>" } }) </script>
2.屬性指令組件化
<body> <div id="app"> <!-- v-bind:屬性 = "變量" --> <!-- 若是abc自定義屬性被v-bind:指令綁定了,後面的值也會成爲vue變量, 若是就想是普通字符串, 再用''包裹 --> <!-- : 就是 v-bind: 的簡寫方式 (1.經常使用 2.必定且只操做屬性)--> <p v-bind:abc="'abc'" v-bind:title="h_info" :def="hehe">abc</p> <!--最經常使用的兩個屬性 class | style--> <!--class--> <p :class="a"></p> <!-- 單類名 --> <p :class="[a, b]"></p> <!-- 多類名 --> <p :class="{c: d}"></p> <!-- 瞭解: c爲類名,是否起做用取決於d值爲true|false 開關類名 --> <!--style--> <p :style="s1"></p> <!-- s1爲一套樣式 --> <p :style="[s1, s2, {textAlign: ta}]">12345</p><!-- 瞭解: s1,s2均爲一套樣式, ta是一個變量,專門賦值給textAlign("text-align") --> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: "#app", data: { h_info: "懸浮提示", hehe: "呵呵", a: 'active', b: 'rule', d: false, s1: { // 樣式1: 值1, ..., 樣式n: 值n width: '200px', height: '200px', background: 'red' }, s2: { borderRadius: '50%' }, ta: 'center' } }) </script>
3.事件指令學習
<body> <div id="app"> <!-- v-on:事件 = "變量 簡寫 @ --> <!-- 事件綁定的變量能夠在data中賦值,但建議在methods中賦值 --> <p v-on:click="fn1">11111111111111</p> <p @click="fn2">22222222222222</p> <!--vue事件的綁定能夠傳自定義參數--> <p @click="fn3(333)">3333333333333333</p> <!--vue事件的綁定不傳自定義參數, 默認將事件對象傳過去了--> <p @click="fn4">4444444444444444</p> <!--vue事件的綁定傳自定義參數, 還要將事件對象傳過去了, 要明確傳$event--> <p @click="fn5(555, $event)">5555555555555555</p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: "#app", data: { // 事件在data中提供一個函數地址,能夠實現事件 fn1: function () { console.log("11111111111111") } }, // 事件儘可能(要求)都放在vue實例的methods中 methods: { fn2: function () { console.log("22222222222222") }, fn3 (arg) { // ES6語法 console.log(arg) }, fn4: function (ev) { console.log(ev) }, fn5: function (arg, ev) { console.log(arg) console.log(ev) }, } }) </script>
4.表單指令spa
<body> <div id="app"> <!-- v-model = "變量" 本質操做的就是表單元素的value --> <!--v-model就是完成數據的雙向綁定--> <form action=""> <input type="text" v-model="info"> <!-- info變量就是表明輸入框的value --> <input type="text" v-model="info"> </form> <p> {{ info }} </p> <!--v-once只會被賦值一次,就再也不改變,而且要結合插值表達式使用--> <p v-once="info">{{ info }}</p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: "#app", data: { // info: "初始value", info: "" }, }) </script>