前端VUE框架
阿新 • • 發佈:2018-01-25
list splay oct rip height title sed .org pic
一、什麽是VUE?
它是一個構建用戶界面的JAVASCRIPt框架
vue不關心你頁面上的是什麽標簽,它操作的是變量或屬性
為什麽要使用VUE?
在前後端分離的時候,後端只返回json數據,再沒有render方法,前端發送ajax請求(api=url)得到數據後,要在頁面渲染數據,如果你js+css實現就太麻煩了,這時候VUE就出現了。
二、怎麽樣使用VUE
1)引入vue.js <script src=vue.js></script> 2) 展示html <div id="app"> <input type="text" v-model="msg"> <p>{{msg}}</p> </div> 3)建立vue對象 new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ msg: "" } })
三、VUE指令
1. v-model
<body>
<div id="app">
<input v-model="msg">
<p>{{msg}}</p>
<input type="button" value="變化" @click="change">
</div>
<script>
new Vue({
el: "#app", //表示在當前這個元素內開始使用VUE
data:{
msg: "aaaaa"
},
methods: {
change: function () {
this.msg = 8888888;
}
}
})
</script>
</body>
2. v-on
<style>
ul li{
list-style: none;
display: inline-block;
border: 1px solid cornflowerblue;
height:40px;
line-height: 40px;
width: 120px;
text-align: center;
}
</style>
<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>
3. v-bind
<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> <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>
4. v-for
<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> <input type="button" value="點我吧!" @click="show()"> <a :href="url">我想去百度</a> </div> <script> new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ arr: [11,22,3344,55], obj: {a:"張三",b:"李四",c:"王大拿",d:"謝大腳"}, obj2:[ {username: "jason"}, {age: 20}, {sex: "male"} ], str: "我來了", url: "http://www.qq.com" }, methods: { show: function () { this.arr.pop(); } } }) </script> </body>
5. v-if / show
<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", //表示在當前這個元素內開始使用VUE data:{ pick: false, temp: true, ok: true } }) window.setInterval(function(){ vm.ok = !vm.ok; },1000) </script> </body>
6. v-html
<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", //表示在當前這個元素內開始使用VUE data:{ htmlstr: "<textarea></textarea>", test: false }, methods: { create: function () { this.test = !this.test; } } }) </script> </body>
7. 模板對象
<body> <div id="app"> <p>{{msg}}</p> <p>{{80+2}}</p> <p>{{20>30}}</p> {{msg}} 我是:<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>
8. 小綜合練習
<!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"> <div> <input type="text" placeholder="姓名" v-model="username"> <input type="text" placeholder="年齡" v-model="age"> <input type="button" value="增加" @click="add"> </div> <div> <table cellpadding="0" border="1"> <tr v-for="(item,index) in arr"> <td><input type="text" class="txt" v-model="item.username"> </td> <td>{{item.age}}</td> <td>{{index}}</td> <td><input type="text" class="txt"></td> <td><input type="button" value="刪除" @click="del(index)"></td> </tr> </table> </div> </div> <script> new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ username: "", age: "", arr: [] }, methods: { add: function () { this.arr.push({username:this.username,age: this.age}); console.log(this.arr); }, del: function (index) { this.arr.splice(index,1); } } }) </script> </body> </html>View Code
9. 自定義指令:相關網址 https://cn.vuejs.org/v2/guide/custom-directive.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; } </style> </head> <body> <div id="app"> <input type="text" v-focus> </div> <script> new Vue({ el: "#app", //表示在當前這個元素內開始使用VUE data:{ }, directives: { focus: { //指令的名字 //當被綁定的元素插入到 DOM 中時 inserted: function (tt) { tt.focus(); tt.style.backgroundColor = "blue"; tt.style.color = "#fff" } } } }) </script> </body> </html>View Code
前端VUE框架