vue - 國人開發製做的
相似於 view 的發音javascript
vue通過了幾回大的版本波動html
0.x 0.6版本vue
1.x 版本java
2.x 版本 - 如今經常使用的react
爲何要介紹版本改動呢,由於不一樣版本語法和用法有差異,用起來比較麻煩jquery
react 由於版權緣由,致使百度等企業轉用vue,致使vue忽然火起來,也有支持國人的成分,固然其中的也缺不了它的確好用。json
完整版演示代碼數組
vue學習建議先學會js,json瀏覽器
有的人以爲vue或angular不夠jquery方便,首先,vue
和angular
是數據驅動的,而jquery
是事件驅動的,也就是說用jquery
須要想着給賦予事件,而vue
與angular
只要想着數據怎麼變化就好了。學習
html部分: //首先固然是引入vue.js文件 <script src="vue.js"></script> <body> //vue標準是要用兩對花括號圈住數據名的 {{msg}} <body> js部分: //使用vue要先new 一個vue對象出來傳入json格式的數據 <script> new Vue({ //做用域:el - element縮寫 el:'body', //輸出的數據 data:{ msg:'hello vue!', } }) </script>
{{}} -> 必須在做用域裏面放入輸出的模板,模板裏面放入data
裏面你本身定義的變量
注意:只有ie8 以上的瀏覽器才能兼容vue
<div class="myDiv"> {{msg}} </div> <script> new Vue({ //這裏選區類與id是與jquery的方式是同樣的,id的話就是#myDiv el: '.myDiv', data: { msg:'hello vue!', } }) </script>
相似於angular 的經常使用指令有 ng-show /ng-repeat,vue固然也有。
true
就是顯示false
就是隱藏<style> div{ width: 200px; height: 200px; background: black; } </style> <div v-show='false'></div> <script> //這裏定義做用域是必須的,使用vue語句若是不定義做用域是不會起做用的 new Vue({ el:'body', }) </script>
<style> div{ width: 200px; height: 200px; background: black; } </style> <div v-show='dis'></div> <script> new Vue({ el:'body', //也能夠利用數據傳輸來使用,更加靈活 data:{ dis:false, } }) </script>
v-for:循環輸出數組或json數據
<div v-for='i in arr'>{{i}}{{$index}}</div> <div v-for='i in json'>{{i}}</div> <div v-for='(key,value) in json'>{{key}}=>{{value}}</div> <div v-for='i in json'>{{$key}}=>{{i}}</div> <script> new Vue({ el:'body', data:{ //這是個字符串數組 arr:['a','b','c'], json:{ bill:18, bill2:21, bill3:24 } } }) </script>
v-for: {{$index}} -> 索引值,{{$key}} -> key值
<body> <input type="text" v-model='msg'> {{msg}} <script> new Vue({ el:'body', data:{ msg:'', } }) </script>
<style> div{ height: 100px; width: 100px; background:black; } </style> <input type="button" v-on:click='change' value="change"> <div v-show='dis'></div> <script> new Vue({ el:'body', data:{ dis:true, }, //vue 事件區域,全部事件控制寫在這裏 methods:{ change:function() { this.dis=!this.dis; } } }) </script>
v-on
有簡寫形式@
,能夠直接把v-on
替換爲@
,@click='change'
。查看事件對象
html部分: //這裏是必須設置這個樣式,否則body的大小是根據頁面內容調整大小的 <style> body,html{ height: 100%; width: 100%; } </style> <body @click='show'> <script> new Vue({ el:'body', methods:{ //事件對象,若是傳參只有一個,默認就是事件對象,若是有多個參數傳入,那麼事件對象就是$event show:function(e){ console.log(e); } } }) </script>
`@click="show"
是能夠傳遞參數給事件的,當它傳遞參數時,事件處理的形參再也不默認爲是時間對象,當咱們傳遞參數給事件又想看事件對象時能夠用$event
html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @click='show(10,event)'> js部分: <script> new Vue({ el:'body', methods:{ show:function(e,$event){ console.log(e,event); } } }) </script>
先來看下事件冒泡沒有阻止的狀況
html部分: <style> body,html{ height: 100%; width: 100%; } div{ height: 100px; width: 100px; background: black; } </style> <body @click="myBody"> <div @click="myDiv"></div> js部分: <script> new Vue({ el:'body', methods:{ myDiv:function() { alert('i am div'); }, myBody:function(event){ alert('i am body'); } } }) </script>
event.cancelBubble=true;
html部分: <style> body,html{ height: 100%; width: 100%; } div{ height: 100px; width: 100px; background: black; } </style> <body @click="myBody"> <div @click="myDiv"></div> js部分: <script> new Vue({ el:'body', methods:{ myDiv:function() { event.cancelBubble=true; alert('i am div'); }, myBody:function(event){ alert('i am body'); } } }) </script>
event.stopProgation();
html部分: <style> body,html{ height: 100%; width: 100%; } div{ height: 100px; width: 100px; background: black; } </style> <body @click="myBody"> <div @click="myDiv"></div> js部分: <script> new Vue({ el:'body', methods:{ myDiv:function() { event.stopProgation(); alert('i am div'); }, myBody:function(event){ alert('i am body'); } } }) </script>
直接在click後接.stop
html部分: <style> body,html{ height: 100%; width: 100%; } div{ height: 100px; width: 100px; background: black; } </style> <body @click="myBody"> <div @click.stop="myDiv"></div> js部分: <script> new Vue({ el:'body', methods:{ myDiv:function() { alert('i am div'); }, myBody:function(event){ alert('i am body'); } } }) </script>
event.preventDefault();
html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @click="myBody"> js部分: <script> new Vue({ el:'body', methods:{ myBody:function(){ event.preventDefault(); alert('我右鍵了'); } } }) </script>
@click.prevent="";
html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @click.prevent="myBody"> js部分: <script> new Vue({ el:'body', methods:{ myBody:function(){ alert('我右鍵了'); } } }) </script>
keydown/up
來監控用戶按下了什麼按鍵html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @keydown="mybody"> js部分: <script> new Vue({ el:'body', methods:{ mybody:function(){ alert('我按鍵盤了'); } } }) </script>
event.keyCode
監控用戶按鍵的ASCII碼,能夠經過查看keyCode來賦予不一樣按鍵不一樣事件,例如經過console.log(event.keyCode);
能夠看到按鍵A的鍵值是65,那麼咱們能夠設置只有當按下A鍵時才顯示的事件
@keydown.65
等效於if(e.keyCode==65)
html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @keydown.65="mybody"> js部分: <script> new Vue({ el:'body', methods:{ mybody:function(){ alert('我按了A鍵'); } } }) </script>
html部分: <style> body,html{ height: 100%; width: 100%; } </style> <body @keydown.65.66.67="mybody"> js部分: <script> new Vue({ el:'body', methods:{ mybody:function(){ alert('我按了abc鍵'); } } }) </script>