1,Vue-ES6的经常使用语法-Vue经常使用指令html
首页,https://www.cnblogs.com/GGGG-XXXX/p/9503208.htmlvue
1,ES6框架:https://www.cnblogs.com/GGGG-XXXX/articles/9439825.htmlsql
2,Vue指令:https://www.cnblogs.com/GGGG-XXXX/articles/9428761.html数据库
ES6之前 var关键字来声明变量,不管声明在何处都存在变量提高这个事情~~会提早建立变量~npm
做用域也只有全局做用域以及函数做用域~ 因此变量会提高在函数顶部或全局做用域顶部~django
let 关键字表示变量,const 表示常量。都是块级做用域,好比一个函数内部,代码块{}内部~app
2,模版字符串,框架
模版字符串,大小写切换键上面的``,ide
<body> <div id="app"> </div> <script> let ele=document.getElementById('app'); //先获取app这个做用域, let name='xiaoming'; //声明一个变量, ele.innerHTML=` <div> <ul> <li>小明</li> <li>小花</li> <li>小强</li> <li>${name}</li> //使用${变量名} 替换内容, </ul> </div> ` </script> </body>
3,函数:函数
箭头函数,是函数的快捷写法,类比Python的匿名函数 lambda。
最直观的三个特色
-- 不须要function关键字来建立函数
-- 省略return关键字
-- 继承当前上下文的this关键字(由于箭头函数的调用者是当前上下文,跟普通函数区别开) *************** this 跟最近的调用他的对象有关*********
箭头函数博客
https://www.cnblogs.com/fundebug/p/6904753.html
// 函数在哪里调用了 才决定this到底引用的是谁~~~
// 最后一个调用函数的对象才是传到函数里的上下文对象this~~~
console.log(this)
function test() {
console.log(this)
};
let obj = {
a: 1,
test: test,
};
let obj2 = {
b: 3,
obj: obj,
};
obj.test();
test();
obj2.obj.test();
var Num=num=>num*3;
console.log(Num(3));
4,数据的解构相似于pytohn里面的**
<script> let obj={ name:'xuge', age:77, } let array=['想,小鱼','过去','各学科'] let {name,age}=obj; console.log(name) console.log(age) let [name1,name2,name3]=array console.log(name1) console.log(name2) console.log(name3) </script>
类
-- class定义类
-- extends 继承
-- constructor 构造方法
-- 子类想要有this 在构造方法里执行super()
ES6 引入了关键字class来定义一个类,constructor是构造方法,this表明实例对象。
类之间经过extends继承,继承父类的全部属性和方法。
super关键字,它代指父类的this对象,子类必须在constructor中调用super()方法,
不然新建实例时会报错,由于子类没有本身的this对象。调用super()获得this,才能进行修改。
<script> class Animal{ constructor(){ this.type = "animal" } says(say){ console.log(say) } } class Dog extends Animal { constructor(){ super(); this.type = "dog"; } says(say){ console.log(say) } } let dog = new Dog(); dog.says("wangwang~~~~~") </script>
Vue指令,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> </head> <body> //div是做用域 <div id="app"> {{name}} {{hobby}} </div> <script> const app = new Vue({ el: "#app", //获取到这个做用域, data: { name: "小黑", //数据写在data里面, hobby: "学习" } }) </script> </body> </html>
Vue的指令directives很像咱们所说的自定义属性,指令是Vue模板中最经常使用的功能,
它带有v-前缀,功能是当表达式改变的时候,相应的行为做用在DOM上。
v-text,v-html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> </head> <body> <div id="app"> <p v-text="name"></p> <p v-html="hobby"></p> </div> <script> const app=new Vue({ el:'#app', data:{ name:'小明', hobby:` <ul> <li>学习</li> <li>烫头</li> </ul> ` } }) </script> </body> </html>
v-for
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="../vue.js"></script> </head> <body> <div id="app"> <h1>{{name}}</h1> <p>他喜欢吃的食物</p> <ul> <li v-for="(food,index) in foods" :key="index">{{food}}{{index}}</li> </ul> <ul> <li v-for="item in array">{{item.name}}年龄是{{item.age}} 爱好是{{item.hobby}}</li> </ul> </div> <script> const app=new Vue({ el:'#app', data:{ name:'小新新', foods:['豆汁','卤煮','驴打滚'], array:[{ name:'旭哥', age:77, hobby:'睡觉', }] } }) </script> </body> </html>
v-if
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="../vue.js"></script> </head> <body> <div id="app"> <div v-if="role=='vip'"> <h2>xxx提供服务</h2> </div> <div v-else-if="role=='svip'"> <h2>yyy提供服务</h2> </div> <div v-else> <h2>没有权限</h2> </div> </div> <script> const app=new Vue({ el:'#app', data:{ role:'svip' } }) </script> </body> </html>
v-show
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="../vue.js"></script> </head> <body> <div id="app"> <div v-show="is_show"> <p>dlh</p> </div> </div> <script> const app=new Vue({ el:'#app', data:{ is_show:true, //true也能够是换成数字, } }) </script> </body> </html>
v-on:
这个示例代码,能够直接点击改变颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="../vue.js"></script> <style> .alex_color{ width: 100px; height: 100px; border: solid 1px red; } .bg{ background-color: green; } </style> </head> <body> <div id="app"> <p class="alex_color" :class="{bg:is_green}">alex</p> <!--<p>alex</p>--> <!--<button @click="my_click">点击戴绿</button>--> <button @click="my_click(567)">点击变色</button> </div> <script> const app=new Vue({ el:'#app', data:{ is_green:false }, methods:{ my_click:function (data) { // alert(data)//先验证一下是否绑定了, // this.is_green=true; this.is_green=!this.is_green; //!是直接取反, } } }) </script> </body> </html>
鼠标移入移出的效果,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>练习代码</title> <script src="./vue.js"></script> <style> </style> </head> <body> <div id="app"> <div v-on="{mouseenter:OnMouseEnner,mouseleave:OnMouseLeave}">鼠标移入移出效果</div> </div> <script> const app=new Vue({ el:'#app', methods:{ OnMouseEnner:function () { console.log('XXXX') }, OnMouseLeave:function(){ console.log('YYYY') }, } }) </script> </body> </html>
v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> </head> <body> <div id="app"> <input type="text" v-model="input"> <textarea name="" id="" cols="30" rows="10" v-model="article"></textarea> <select name="" v-model="girl"> <option value="1">wangwei </option> <option value="2">liangshuang</option> <option value="3">jihuifang</option> <option value="4">liangying</option> </select> {{input}} {{article}} {{girl}} </div> <script> const app = new Vue({ el: "#app", data: { input: "测试input", article: "还有article", girl: null, } }) </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> </head> <body> <div id="app"> <input type="text" v-model.trim="input"> <!--<input type="text" v-model.lazy.number="input">--> <pre>{{input}}</pre> <!--{{typeof input}}--> {{input}} </div> <script> const app = new Vue({ el: "#app", data: { input: "", article: "", girl: [1,2], } }) </script> </body> </html>
须要在控制台, 修改值,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>练习代码</title> <script src="../vue.js"></script> <style> .card{ width: 100px; height: 100px; border:solid 1px greenyellow; } </style> </head> <body> <div id="app"> <div class="card" v-duan="haoxin"> </div> <button @click>点此换位置</button> </div> <script> Vue.directive('duan',function (el,binding) { console.log(el) console.log(binding) if(binding.value){ el.style.position='fixed'; el.style.bottom=0; el.style.right=0; } }) const app=new Vue({ el:'#app', data:{ haoxin:false } }) </script> </body> </html>
如今点击能够把位置换回来,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>练习代码</title> <script src="../vue.js"></script> <style> .card{ width: 100px; height: 100px; border:solid 1px greenyellow; } </style> </head> <body> <div id="app"> <div class="card" v-duan.top.right="haoxin"> </div> <button @click="my_click">点此换位置</button> </div> <script> Vue.directive('duan',function (el,binding) { console.log(el) console.log(binding) if(binding.value){ el.style.position='fixed'; // el.style.bottom=0; // el.style.right=0; for(let site in binding.modifiers) el.style[site]=0; }else{ el.style.position='static' } }) const app=new Vue({ el:'#app', data:{ haoxin:false }, methods:{ my_click:function () { this.haoxin=!this.haoxin } } }) </script> </body> </html>
计算属性 computed
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>练习代码</title> <script src="../vue.js"></script> <style> </style> </head> <body> <div id="app"> <table> <thead> <th>科目</th> <th>成绩</th> </thead> <tbody> <tr> <td>Python基础</td> <td><input type="text" v-model.number="Python"></td> </tr> <tr> <td>Django项目</td> <td><input type="text" v-model.number="django"></td> </tr> <tr> <td>数据库</td> <td><input type="text" v-model.number="sql"></td> </tr> <tr> <td>Linux</td> <td><input type="text" v-model.number="Linux"></td> </tr> <tr> <td>平均分</td> <td>{{avg}}</td> </tr> <tr> <td>总成绩</td> <td>{{sum}}</td> </tr> </tbody> </table> </div> <script> const app=new Vue({ el:'#app', data:{ Python:60, django:60, sql:60, Linux:60, }, //此处是计算属性,计算属性是放入内存,读的时候快, computed:{ sum:function () { return this.Python+this.django+this.sql+this.Linux }, avg:function () { return this.sum/4 }, } }) </script> </body> </html>