本篇導航: 介紹與安裝 vue常用指令 一、介紹與安裝 vue是一套構建用戶界面的JAVASCRIPT框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關註視圖層,不僅易於上手,還便於與第三方庫或既有項目整合。 1、安裝 下載vue.js:https://cn.v ...
本篇導航:
vue是一套構建用戶界面的JAVASCRIPT框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關註視圖層,不僅易於上手,還便於與第三方庫或既有項目整合。
1、安裝
下載vue.js:https://cn.vuejs.org/v2/guide/installation.html
2、CDN
也可以不下載直接使用cdn
https://cdn.jsdelivr.net/npm/vue
3、引用
<script src="vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
4、使用格式
{{}},裡面可以放表達式
<div id="app"> //和django中模版渲染一樣使用{{變數}}插入文本 {{ message }} </div> <script> //實例化Vue var app = new Vue({ //定位標簽 表示在當前這個元素內開始使用VUE el: '#app', //變數 data: { message: 'Hello Vue!' } }) <script>
指令:是帶有V-首碼的特殊屬性,通過屬性來操作元素
1、v-text,v-html
v-text:可以在元素當中插入值
v-html:元素不中不僅可以插入文本,還可以插入標簽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <p>{{msg}}</p> <p>{{80+2}}</p> <p>{{20>30}}</p> 我是:<h1 v-text="msg">{{str}}</h1> 你是:<h1 v-text="msg">2222222222222</h1> <h2 v-html="hd"></h2> <h2 v-html="str"></h2> </div> <script> new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ msg: "我是老大", hd: "<input type='button' value='你是小三'>", str: "我要發財!" } }) </script> </body> </html>v-text,v-html
2、v-if,v-show
v-if:根據表達式的真假值來動態插入和移除元素
v-show:根據表達式的真假值來隱藏和顯示元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <p v-if="pick">我是劉德華</p> <p v-else>我是張學友</p> <p v-show="temp">我是趙本山</p> <p v-show="ok">你喜歡我嗎?</p> </div> <script> var vm = new Vue({ el: "#app", data:{ pick: false, temp: true, ok: true } }) window.setInterval(function(){ vm.ok = !vm.ok; },1000) </script> </body> </html>v-if,v-html
3、v-for
v-for:根據變數的值來迴圈渲染元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; } </style> </head> <body> <div id="app"> <ul> <li v-for="(item,index2) in arr"> {{item}}: {{index2}} </li> </ul> <ul> <li v-for="(item,key,index) in obj"> {{item}}: {{key}}:{{index}} </li> </ul> <ul> <li v-for="item in obj2"> {{item.username}} {{item.age}} {{item.sex}} </li> </ul> <div v-for="i in 8"> {{i}} </div> </div> <script> new Vue({ el: "#app", data:{ arr: [11,22,3344,55], obj: {a:"張三",b:"李四",c:"王大拿",d:"謝大腳"}, obj2:[ {username: "jason"}, {age: 20}, {sex: "male"} ], } }) </script> </body> </html>v-for
4、v-on
1)v-on:監聽元素事件,並執行相應的操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <ul> <li v-for="(item,index) in arr"> {{item}}: {{index}} </li> </ul> <input type="button" value="點我吧!" @click="show()"> </div> <script> new Vue({ el: "#app", data:{ arr: [11,22,33,44,55], ], }, //監聽的事件 methods: { show: function () { this.arr.pop(); } } }) </script> </body> </html>v-on
2)小實例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; } </style> </head> <body> <div id="app"> <ul> <li><input type="checkbox">蘋果</li> <li><input type="checkbox">香蕉</li> <li><input type="checkbox">香梨</li> <li><input type="checkbox" v-on:click="create()">其它</li> <li v-html="htmlstr" v-show="test"></li> </ul> </div> <script> var vm = new Vue({ el: "#app", data:{ test: false, htmlstr: "<textarea></textarea>" }, methods: { create: function () { this.test = !this.test; } } }) </script> </body> </html>動態生成html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; display: inline-block; border: 1px solid cornflowerblue; height:40px; line-height: 40px; width: 120px; text-align: center; } </style> </head> <body> <div id="mybox"> <ul> <li> <span v-on:click="qh(true)">二唯碼登錄</span> </li> <li> <span v-on:click="qh(false)">郵箱登錄</span> </li> </ul> <div v-show="temp"> <img src="erma.jpg"> </div> <div v-show="!temp"> <form action="http://mail.163.com" method="post"> <p><input type="email"></p> <p><input type="password"></p> <p><input type="submit" value="登錄"></p> </form> </div> </div> <script> new Vue({ el: "#mybox", data: { temp: true }, methods: { qh: function (t) { this.temp = t } } }) </script> </body> </html>tag切換
3)v-on簡寫
//標準書寫: <input type="button" value="點我吧!" v-on:click="show()"> //簡寫: <input type="button" value="點我吧!" @click="show()">
5、v-bind
1)v-bind:綁定元素的屬性來執行相應的操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> .bk_1{ background-color: cornflowerblue; width: 200px; height: 200px; } .bk_2{ background-color: red; width: 200px; height: 200px; } .bk_3{ border: 5px solid #000; } </style> </head> <body> <div id="app"> <a href="http://www.qq.com" v-bind:title="msg">騰訊</a> <div :class="bk"></div> <div :class="bk2"></div> <div :class="{bk_2:temp}">fdjjdjdkdkkeedd</div> <div :class="[bk2,bk3]">8888888888</div> </div> <script> var vm = new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ msg: "我想去騰訊公司上班", bk:"bk_1", bk2:"bk_2", bk3:"bk_3", temp: false } }) </script> </body> </html>v-bind
2)簡寫
//標準寫法: <div v-bind:class="bk"></div> //簡寫: <div :class="bk"></div>
6、v-model
1)v-model:實現了數據和視圖的雙向綁定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style