Vue.js小案例、生命周期函数及axios的使用
一.调色框小案例:
随着三个滑动框的变化,颜色框的颜色随之改变
1.1.实例代码
<!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Vue实现调色板</title> <script src="./js/vue.min.js"></script> </head> <body> <div id="app"> <!--调色板框--> <div v-bind:style="{width:'400px',height:'100px',background:`rgb(${R},${G},${B})`}"></div> <p> R:<input type="range" min="0" max="255" value="0" v-model="R"><span>{{R}}</span> </p> <p> G:<input type="range" min="0" max="255" value="0" v-model="G"><span>{{G}}</span> </p> <p> B:<input type="range" min="0" max="255" value="0" v-model="B"><span>{{B}}</span> </p> </div> </body> </html> <script> var vm = new Vue({ el:"#app", data:{ R:"0", G:"0", B:"0" } }); </script>
1.2.效果图
二.微博评论发布框
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>微博评论框小程序</title> <script src="./vue.min.js"></script> </head> <body> <div id="app"> <p> <textarea cols="30" rows="10" v-model="info"></textarea><span>{{info.length}}/140</span> </p> <p> <button v-bind:disabled="info.length==0||info.length>140">发布</button> <button @click="clear">清除</button> </p> </div> </body> </html> <script> var vm = new Vue({ el:"#app", data:{ info:"" }, methods:{ clear(){ this.info = ''; } } }); </script>
2.2.效果图
三.watch的使用
<html lang="en"> <head> <meta charset="UTF-8"> <title>watch练习</title> <script src="./vue.min.js"></script> </head> <body> <div id="app"> 搜索:<input type="text" v-model="info"> </div> </body> </html> <script> var vm = new Vue({ el:"#app", data:{ info:"" }, //监听实例属性值的变化 watch:{ //watch可以监听属性值的变化 //watch中的函数名称必须和属性值的名称一致 info(){ console.log("1231231"); } } }) </script>
3.2.效果图
四.百度预搜索功能
<!DOCTYPE html> <html lang="en" xmlns:v-for="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>百度预搜索功能</title> <!--引包--> <script src="./vue.min.js"></script> <style> .active { color: red; } </style> </head> <body> <div id="app"> <p> My百度:<input type="text" v-model="arr" v-bind:style="{width:'300px',height:'20px'}"> </p> <ul> <li v-for="(item,ide) in info" v-if="arr.length>0" @mouseenter="select(ide)" @mouseout= "selectover(ide)" :class="{active:index==ide}">{{item}}</li> </ul> </div> </body> </html> <script> var vm = new Vue({ el:"#app", data:{ arr:"", info:[], index:0 }, watch:{ arr(p){ <!--请求网址拼接--> var path = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd="+p+"&cb=a"; //JSONP跨域拉取数据 //实现原理 //利用script的src属性 //利用函数声明+调用放在两个不同服务器上面 //动态创建script对象 var script = document.createElement("script"); //设置src属性 script.src = path; //标签上树将请求发送出去 document.body.appendChild(script); } }, methods:{ select(a){ vm.index = a; console.log(a+"------"+vm.index); }, selectover(a){ vm.index = a+1; console.log(a+"------"+vm.index); } }, }); function a(obj){ console.log(obj); vm.info = obj.s; } </script>
4.2.效果图
五.生命周期函数
<html lang="en"> <head> <meta charset="UTF-8"> <title>Vue常用生命周期函数</title> <script src="./vue.min.js"></script> </head> <body> <div id="app"> <h1>Vue生命周期函数</h1> <p><input type="text" v-model="info"></p> </div> </body> </html> <script> var vm = new Vue({ //挂载 el:"#app", data:{ msg:"我是实例vm的data属性值!", info:"" }, methods:{ }, //生命周期函数 //在vue实例对象创建之前执行 beforeCreate(){ console.log("在vm创建之前执行"); //此时访问不到vue的data中的属性值 console.log("this.msg="+this.msg); }, //在vue实例创建完成后执行 created(){ console.log("在vm创建完成后执行!"); //此时实例已经创建完成,所以可以访问到data中的属性值 console.log("this.msg="+this.msg); }, //在vue实例创建完毕,挂载模板之前执行 beforeMount(){ console.log("在vm已经创建完成和模板未挂载之前执行!"); console.log("this.msg"+this.msg); }, //在vue实例已经创建且挂载完成后执行***************** //在实际的工作中经常使用改函数拉取服务器的数据 mounted(){ console.log("在与模板挂载完成后执行"); console.log("this.msg"+this.msg) } }) </script>
5.2.效果图
六.axios的使用
axios是在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端;
6.1.实例代码
<html lang="en"> <head> <meta charset="UTF-8"> <title>axios的使用</title> <script src="./vue.min.js"></script> <script src="./axios.js"></script> </head> <body> <div id="app"> <h1>{{msg}}</h1> <p> <button @click="getReplace">axios的get请求</button> <button @click="postReplace">axios的post请求</button> </p> </div> </body> </html> <script> var vm = new Vue({ el:"#app", data:{ msg:"社会主义干饭人!" }, methods:{ getReplace(){ axios.get("./getData.txt").then((obj)=>{ this.msg = obj.data; }); }, postReplace(){ axios.post("./postData.txt").then((obj)=>{ this.msg = obj.data; }) } } }) </script>
6.2.效果图