黑马eesy_15 Vue:常用语法

自学Java后端开发,发现14 微服务电商【乐优商城】实战项目,在介绍完SpringCloud后就要肝前端的基础知识ES6语法和Vue.js

所以本篇博客作为入门Vue练习记录的过程,目的是供自学后端Java遇到Vue使用需求的时候,加强学习一下Vue基本使用的方法。

黑马eesy_15 Vue:02.常用语法

黑马eesy_15 Vue:03.生命周期

黑马eesy_15 Vue:04.Vue案例(ssm环境搭建)

vue常用语法


1、Vue的快速入门
2、Vue的语法
  插值表达式
  事件的绑定
  数据的显示
  逻辑判断和循环输出
3、Vue的生命周期
  8个生命周期的执行点
    4个基本的
    4个特殊的
4、axios的ajax异步请求
  它和jquery的ajax比较相似


01.Vue快速入门

IntelliJ IDEA 2019.2.3

 解决maven项目创建过慢的问题

archetypeCatalog

internal

 

 在webapp目录下新建一个js目录,把vuejs-2.5.16.js文件复制进去。

 为了方便测试代码运行效果,在IDEA中对tomcat部署进行如下设置

 

 demo1:由vue接管id为app的区域

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>快速入门</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            {{messsage}}<!--Vue的插值表达式,把data中定义的数据显示到此处-->

            <!--三元运算符-->
            {{ a ? "ok":"no"}}
            <br><!--换行-->
            {{number*2}}<!--支持数学运算-->
            <!--插值表达式不支持
            {{var a = 1;}}
            {{if(a=10){}}}
            -->

        </div>
    </body>
    <script>
        //view model
        //创建vue对象
        new Vue({
            el:"#app", //由vue接管id为app的区域
            data:{
                messsage:"Hello Vue!",//注意:此处不要加分号
                number:100
            }
        });
    </script>
</html>

 07vue的v-on绑定点击事件

 demo2  

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-on:click</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            {{message}}<!--Vue的插值表达式,把data中定义的数据显示到此处-->
            <button v-on:click="fun1('Vue v-on')">vue的onclick</button>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",//由vue接管id为app的区域
            data:{
            message:"Hello Vue"
            },
            methods:{  /*fun1函数的参数来自于,控件调用时函数名后面小括号里的预设值*/ fun1:function (msg) {
                    alert("hello demo2");
                    this.message = msg;
                }
            }
        })
    </script>
</html> 

 08vue的v-on键盘事件和阻止事件默认行为

 demo3

<!DOCTYPE html>
<html xmlns:v-on="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>v-on:keydown</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            Vue:<input type="text" v-on:keydown="fun($event)">
            <hr/><!--水平线-->
            传统JS:<input type="text"  onkeydown="showKeyCode()"/>
        </div>
    </body>

    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                fun:function (event) {
                    var keyCode = event.keyCode;
                    if(keyCode<48 || keyCode>57){
                        alert("keyCode非法,请输入数字。");
                        //不让键盘的按键输入起作用
                        event.preventDefault();
                    }

                }
            }
        });

        //传统js的键盘按下事件
        function showKeyCode() {
            //event对象和document对象以及windows对象,可以不用定义直接使用
            var keyCode = event.keyCode;
            if(keyCode<48 || keyCode>57){
                alert("keyCode非法,请输入数字。");
                //不让键盘的按键输入起作用
                event.preventDefault();
            }

            //alert(keyCode);
            /*if(event.keyCode == 13){
                alert("你按的是回车")
            }*/

        }
    </script>
</html>

 09vue的v-on鼠标移动事件和阻止事件传播

 demo4 

<!DOCTYPE html>
    <head>
        <meta charset="utf-8" />
        <title>v-on:mouseover</title>
        <style>
            #div {
                background-color: red;
                width: 300px;
                height: 300px;
            }
        </style>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>

    <body>
        <div id="app">
            <div v-on:mouseover="fun1" id="div">
                <textarea v-on:mouseover="fun2($event)">这是一个文件域</textarea>
            </div>
            <!--传统的js方式-->
            <!--<div onmouseover="divmouseover()" id="div">
                <textarea onmouseover="textareamouseover()">这是一个文件域</textarea>
            </div>-->
        </div>
    </body>
    <script>
        //view model
        /**@事件名称  就是  v-on:事件  的简写方式
         * @mouseover = v-on:mouseover
         */
        new Vue({
            el:app,
            methods:{
                fun1:function () {
                    alert("鼠标悬停在div上了");                
                },
                fun2:function (event) {
                    alert("鼠标悬停在textarea上了");
                    event.stopPropagation();
                }
            }
        });

        //传统的js方式
        function divmouseover() {
            alert("鼠标移动到了div上了");
        }
        function textareamouseover() {
            alert("鼠标移动到了textarea上了");
            event.stopPropagation();
        }
    </script>
</html>

10vue中的事件修饰符 

 demo05 

 

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>v-on:事件修饰符</title>

        <script src="js/vuejs-2.5.16.js"></script>
    </head>

    <body>
        <div id="app">
            <form action="http://www.baidu.com" method="get" @submit.prevent >
                 <input type="submit" value="submit提交">
             </form>
            <!--<form action="http://www.baidu.com" method="get" onsubmit="return checkForm()">
                 <input type="submit" value="submit提交">
             </form>-->
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",

        })


        //传统js方式
        function checkForm() {
            //表单验证必须有一个明确的boolean类型返回值
            //在应用验证方法时必须加上return 方法名称()
            //阻止事件的默认行为
            return false;
        }

    </script>

</html>

11vue中的按键修饰符

demo6 

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>v-on:按键修饰符</title>

        <script src="js/vuejs-2.5.16.js"></script>
    </head>

    <body>
        <div id="app">
            Vue的按键修饰符:<input type="text" v-on:keydown.enter="fun1('你按的是Enter键')">
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                fun1:function (msg) {
                    alert(msg);
                }
            }
        });
        
    </script>

</html>

12 Vue中v-textv-html以及v-bind的使用

demo7

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-text与v-html</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <div id="div1"></div>
            <div id="div2"></div>
        </div>
    </body>
    <script>
        //view model

        // 传统js的innerText和innerHTML
        // 这里还是个匿名函数
        window.onload = function () {
            document.getElementById("div1").innerHTML="<h1>Hello</h1>";
            document.getElementById("div2").innerText="<h1>Hello</h1>";
        }
    </script>
</html>

 显示效果: 

  使用Vue的语法实现

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-text与v-html</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <div v-html="message"></div>
            <div v-text="message"></div>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                message:"<h1>Hello Vue</h1>"
            }
        });
</script>
</html>

  demo8 

  v-bind: 给html标签的属性,设置data:变量的值

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-text与v-html在v-bind上的使用</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <font size="5" v-bind:color="ys1">传智播客</font>
            <br><!--换行符-->
            <font size="5" v-bind:color="ys2">黑马程序员</font>
        </div>
    </body>
    <script>
        //view model
        //Vue的插值表达式不能用于html标签的属性取值
        //可以通过使用v-bind:给html标签的属性设置变量的值
        new Vue({
            el:"#app",
            data:{
                ys1:"red",
                ys2:"blue"
            }
        })
    </script>
</html>

 13vue中的v-model的使用

 demo9 

 

 把form表单中的<input>标签的 value属性替换成 v-model

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>v-model</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>

    <body>
        <div id="app">
            <form action="" method="post"  >
                用户名:<input type="text" name="username" v-model="user.username"><br/>
                密码:<input type="text" name="password" v-model="user.password"><br/>
                <!--用户名:<input type="text" name="username" value="user.username"><br/>
                密码:<input type="text" name="password" value="user.password"><br/>-->
            </form>
        </div>
    </body>

    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                user:{
                    username:"test",
                    password:"root"
                }
            }
        })
        
    </script>

</html>

 14vue中的v-for的遍历使用

  v-for遍历数组

 demo10 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for遍历数组</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <ul>
                <li v-for="(item,index) in arr ">{{item}}={{index}}</li>
            </ul>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                arr:[1,2,3,4,5,6]
            }
        })
    </script>
</html>

  v-for遍历对象 (重点)

  demo11 

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for遍历对象</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
    <div id="app">
        <ul>

            <li v-for="(value,key) in product ">{{key}}==={{value}}</li>
<!--            <li v-for="(key,value) in product ">{{value}}==={{key}}</li>-->
        </ul>
    </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                product:{
                    id:1,
                    name:"笔记本电脑",
                    price:5000
                }
            }
        })
    </script>
</html>

demo 12 

 

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>v-for遍历对象demo12</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>

    <body>
        <div id="app">
            <table border="1">
                <tr>
                    <td>索引</td>
                    <td>编号</td>
                    <td>名称</td>
                    <td>价格</td>
                </tr>
                <tr v-for="(product,index) in products">
                    <td>{{index}}    </td>
                    <td>{{product.id}}        </td>
                    <td>{{product.name}}    </td>
                    <td>{{product.price}}    </td>
                </tr>
            </table>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                products:[
                    {id:1, name:"笔记本电脑",price:5000},
                    {id:2, name:"手机", price:2000},
                    {id:3, name:"电视", price:4000}
                ]
            }
        })
    </script>

</html>

 15vue中的v-if与v-show

  demo13

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-if与v-show</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <span v-if="flag">hello itcast</span><br/>
            <span v-show="flag">hello ithemai</span><br/>
            <button v-on:click="fun">切换</button>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                flag:true //model
            },
            methods:{
                fun:function(){
                    //!实现布尔值取反
                    this.flag=!this.flag;
                }
            }
        });
        
    </script>
</html>

======================

end

部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
原文地址:https://www.cnblogs.com/MarlonKang/p/11625083.html