Vue入门小练习

使用一些简单的小案例来熟悉Vue的基本使用方法

Hello Vue

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloVue</title>
</head>
<body>
    <!--
    Staticfile CDN(国内) : https://cdn.staticfile.org/vue/2.2.2/vue.min.js
    unpkg:https://unpkg.com/vue@2.6.14/dist/vue.min.js。
    cdnjs : https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.8/vue.min.js
    -->
    <div>
      <h1>{{info}}</h1>
    </div>
    <!--引入Vue框架文件-->
    <!--
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    -->
    <script src="vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"div",
            data:{
                info:"Hello VUE!"
            }

        });
        setTimeout(function (){
            v.info="值改变了";
        }, 3000)
    </script>
</body>
</html>

Vue文本指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>VUE指令</title>
</head>
<body>
    <div>
        <!--插值, 不依赖于标签,即使没有标签也能和变量进行绑定-->
        {{info}}

        <p>{{info}}</p>

        <!--让元素的文本内容和变量进行绑定-->
        <p v-text="info"></p>

        <!--让元素的标签内容和变量进行绑定-->
        <p v-html="info"></p>
    </div>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

    <script>
        let v = new Vue({
            el:"div",
            data:{
                info:"文本相关<b>加粗</b>"
            }
        })
    </script>
</body>
</html>

Vue属性绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性绑定</title>
</head>
<body>
    <div>
        <a v-bind:href="url">超链接1</a>
        <!--省略v-bind是简写-->
        <a :href="url">超链接2</a>

        <img :src="imgUrl" alt="" width="150px">
        <input type="text" :value="info">
    </div>

    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

    <script>
        let v = new Vue({
            el:"div",
            data:{
                url:"http://www.baidu.com",
                imgUrl:"../touxiang.png",
                info:"测试文本内容"
            }
        })

        setTimeout(function (){
            v.url = "http://www.youku.com";
            v.imgUrl = "b.jpg";
            v.info = "值改变了";
        }, 3000);


    </script>
</body>
</html>

Vue双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>双向绑定</title>
</head>
<body>

    <div>
        <input type="text" v-model="info">
    </div>

    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

    <script>
        let v = new Vue({
            el:"div",
            data:{
                info:"双向绑定"
            }
        })

        setTimeout(function () {
            alert("用户输入的是:"+v.info)
        },3000);
    </script>
</body>
</html>

Vue事件绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件绑定</title>
</head>
<body>
    <div>
        <input type="text" v-model="info">
        <!--v-on:事件名="方法名" 事件绑定-->
        <input type="button" value="按钮1" v-on:click="f">
        <!--简写-->
        <input type="button" value="按钮2" @click="f()">
    </div>

    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"div",
            data:{
                info:""
            },

            methods:{
                f(){
                    alert(v.info)
                }
            }
        })
    </script>
</body>
</html>

Vue猜数字

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue猜数字</title>
</head>
<body>
    <div>
        <input type="text" v-model="num"  placeholder="请输入1-100之间的整数">
        <input type="button" value="猜一猜" @click="diy()">
        <div>
            结果: {{result}}
        </div>
    </div>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>

        //生成1-100的整数
        let x = parseInt(Math.random()*100)+1;

        let v = new Vue({
            el:"body>div",
            data:{
                result:"还未点击",
                num:""
            },

            methods:{
                diy(){
                    //判断用户输入的值和x的关系
                    if (v.num > x){
                        v.result="猜大了";
                    }else if (v.num < x){
                        v.result = "猜小了";
                    }else{
                        v.result="恭喜你猜对了!"
                    }
                }
            }
        })


    </script>
</body>
</html>

Vue简单计算器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue计算器</title>
</head>
<body>
    <div>
        <input type="text" v-model="n1">
        <input type="text" v-model="n2">
        <input type="button" value="" @click="f(1)">
        <input type="button" value="" @click="f(2)">
        <input type="button" value="" @click="f(3)">
        <input type="button" value="" @click="f(4)">
        <div>结果: {{result}}</div>
    </div>

    <!--引入Vue框架-->
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"body>div",
            data:{
                result:"",
                n1:"",
                n2:""
            },
            methods:{
                f(x){
                    switch (x){
                        case 1://加
                            v.result = v.n1*1 + v.n2*1;
                            break;
                        case 2://减
                            v.result = v.n1*1 - v.n2*1;
                            break;
                        case 3://乘
                            v.result = (v.n1*1) * (v.n2*1);
                            break;
                        case 4://除
                            v.result = (v.n1*1) / (v.n2*1);
                            break;
                    }
                }
            }
        })
    </script>
</body>
</html>

Vue简单计算器升级版

<head>
    <meta charset="UTF-8">
    <title>Vue计算器升级版</title>
</head>
<body>
    <div>
        <input type="text" v-model="n1">
        <input type="text" v-model="n2">
        <input type="button" value="" @click="f('+')">
        <input type="button" value="" @click="f('-')">
        <input type="button" value="" @click="f('*')">
        <input type="button" value="" @click="f('/')">
        <div>结果: {{result}}</div>
    </div>

    <!--引入Vue框架-->
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"body>div",
            data:{
                result:"",
                n1:"",
                n2:""
            },
            methods:{
                f(x){
                    //eval("5-2")  此方法可以将字符串以JS代码的形式执行
                    v.result = eval(v.n1 + x + v.n2);
                }
            }
        })
    </script>
</body>
</html>

Vue循环遍历

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue循环遍历</title>
</head>
<body>
    <div>
        <ul>
            <!--v-for循环遍历指令,遍历的过程中生成当前元素-->
            <li v-for="name in arr">{{name}}</li>
        </ul>
        <p v-for="name in arr">{{name}}</p>
        <h1 v-for="name in arr">{{name}}</h1>

        <p v-for="p in persons">名字:{{p.name}}, 年龄:{{p.age}}, 类型:{{p.type}}</p>

        <table border="1">
            <caption>英雄列表</caption>
            <tr>
                <th>名字</th>
                <th>年龄</th>
                <th>类型</th>
            </tr>
            <tr v-for="p in persons">
                <td>{{p.name}}</td>
                <td>{{p.age}}</td>
                <td>{{p.type}}</td>
            </tr>
        </table>
    </div>


    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"div",
            data:{
                arr:["刘备","关羽","诸葛亮","孙尚香","刘禅"],
                persons:[{name:"刘备", age:"50", type:"战士"},
                    {name:"孙尚香", age:"20", type:"射手"},
                    {name:"诸葛亮", age:"30", type:"法师"}]
            },

            methods:{

            }
        })

    </script>
</body>
</html>

Vue员工列表练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>员工列表练习</title>
</head>
<body>

    <div>
        <input type="text" placeholder="姓名" v-model="emp.name">
        <input type="text" placeholder="工资" v-model="emp.salary">
        <input type="text" placeholder="工作" v-model="emp.job">
        <input type="button" value="添加" @click="f()">

        <table border="1">
            <caption>员工列表</caption>
            <tr>
                <th>姓名</th>
                <th>工资</th>
                <th>工作</th>
            </tr>
            <tr v-for="p in arr">
                <td>{{p.name}}</td>
                <td>{{p.salary}}</td>
                <td>{{p.job}}</td>
            </tr>
        </table>
    </div>

    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"div",
            data:{
                arr:[{name:"张三",salary:3000,job:"销售"},
                    {name:"李四",salary:4000,job:"人事"},
                    {name:"王五",salary:10000,job:"程序员"}],
                emp:{
                    name:"",
                    salary:"",
                    job:""
                }
            },

            methods:{
                f(){
                    //push()是JavaScript中数组里面的添加方法
                    // v.arr.push(v.emp); //用这种方式是对原对象的引用,值会随着文本框的内容改变

                    /*
                    v.arr.push({name:"赵六",salary:10000,job:"程序员"})
                    JSON.parse(JSON.stringify(v.emp))创建了一个新的对象添加到数组中
                    此时emp对象的值发生改变和数组中的新对象是无关的,
                    这种复制出来的和原对象无关的方式称为深拷贝(有引用关系的是浅拷贝)
                    */
                    v.arr.push(JSON.parse(JSON.stringify(v.emp)));
                }
            }
        })
    </script>

</body>
</html>

Vue小练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>综合练习</title>
</head>
<body>
    <div>
      <table border="1">
          <caption>个人信息</caption>
          <tr>
              <td>照片</td>
              <td><img :src="person.url" width="150" alt=""></td>
          </tr>
          <tr>
              <td>名字</td>
              <td>{{person.name}}</td>
          </tr>
          <tr>
              <td>年龄</td>
              <td>{{person.age}}</td>
          </tr>
          <tr>
              <td>好友</td>
              <td>
                  <ul>
                      <li v-for="name in person.friend">{{name}}</li>
                  </ul>
              </td>
          </tr>
          <tr>
              <td colspan="2" style="text-align: center">
                  <input type="button" value="请求数据" @click="f()">
              </td>
          </tr>
      </table>
    </div>

    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
        let v = new Vue({
            el:"table",
            data:{
                person:{
                    name:"xxx",age:"xxx",
                    url:"../touxiang.png",
                    friend:[]
                }
            },

            methods:{
                f(){
                    v.person = {
                        name:"女生",age:"18",
                        url:"../touxiang2.png",
                        friend: ["Lucy","Mike","John"]
                    }
                }
            }
        })
    </script>
</body>
</html>

Vue显示隐藏相关

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>显示隐藏相关</title>
</head>
<body>
    <div>
      <!--v-if让元素是否显示和变量建立关系,如果变量值为false 则删除元素-->
      <h1 v-if="isVisible">刘德华</h1>
      <!--和上面v-if的显示状态取反-->
      <h1 v-else>张三</h1>

      <!--v-show让元素是否显示和变量建立关系,如果变量值为false 则隐藏元素(如果需要频繁切换显示状态)-->
      <h1 v-show="isVisible">张学友</h1>
      <h1>郭富城</h1>
    </div>
    <!--引入Vue框架-->
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
      let v = new Vue({
        el:"body>div",
        data:{
          isVisible:true
            // isVisible:true
        },
        methods:{

        }
      })
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值