Vue.js二.小案例、生命周期函数及axios的使用

Posted on 2021-04-30 17:25  小小程序猿`  阅读(168)  评论(0编辑  收藏  举报

一.调色框小案例:

        随着三个滑动框的变化,颜色框的颜色随之改变

  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.效果图

二.微博评论发布框

  要求随着输入框输入内容的变化,右边的字数会随着变化,当输入字符为0个或大于140个时,发布按钮置灰,有清除按钮。
  2.1.实例代码如下:
<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的使用

  watch可以监听属性值的变化,当属性值发生变化时,相应的函数会被触发一次
  3.1.实例代码
<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.效果图

四.百度预搜索功能 

  实现与百度预搜索相同的功能,在输入框输入内容,下面显示和百度一样的预搜索内容
  4.1.实例代码
<!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.效果图

五.生命周期函数

  在不同的各个时间段会触发执行的函数;在实际的工作中常用的生命周期函数是mounted(实例已创建模板已挂载后执行);
  5.1.实例代码
<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.效果图

Copyright © 2024 小小程序猿`
Powered by .NET 8.0 on Kubernetes