JavaWeb-Vue入门

目录

一、基本介绍

二、基本语法-绑定属性

2.1 绑定元素属性 v-bind/{{ }}

2.2 双向绑定元素属性 v-model

2.2.1 .trim修饰符

三、基本语法-条件渲染 v-if/v-else/v-show

3.1 v-if

3.2 v-if 和 v-else

3.3 v-show

四、基本语法-列表渲染(v-for="e in eList") 

4.1 迭代普通数组

4.2 迭代对象数组

五、基本语法-事件驱动(v-on:事件名/@事件名)

六、基本语法-侦听属性 watch


一、基本介绍

        声明式渲染

        『声明式』是相对于『编程式』而言的。

  • 声明式:告诉框架做什么,具体操作由框架完成
  • 编程式:自己编写代码完成具体操作

        渲染

 

  • 蓝色方框:HTML标签
  • 红色圆形:动态、尚未确定的数据
  • 蓝色圆形:经过程序运算以后,计算得到的具体的,可以直接在页面上显示的数据、
  • 渲染:程序计算动态数据得到具体数据的过程

        演示

        需要引入vue.js,让js初始化new一个Vue对象出来。本来想引入Thymeleaf设置路径的,但发现引入后vue就失效了,可能是有冲突吧。

<html>
<head>
    <meta charset="UTF-8">
    <title>VUE</title>
    <script language="JavaScript" src="../../static/script/vue.js"></script>
    <script language="JavaScript">

        window.onload=function () {
            var vue=new Vue({
            // el用于指定Vue对象要关联的HTML元素。el就是element的缩写
	        // 通过id属性值指定HTML元素时,语法格式是:#id
                el:"#msg",

            // data属性设置了Vue对象中保存的数据
                data:{
                    message:"hello,WZ!"
                }
            })
        }
    </script>
</head>
<body>
        <!-- 使用{{}}格式,指定要被渲染的数据 -->
        <div id="msg">{{message}}</div>
</body>
</html>

        通过验证Vue对象的『响应式』效果,我们看到Vue对象和页面上的HTML标签确实是始终保持着关联的关系。

二、基本语法-绑定属性

2.1 绑定元素属性 v-bind/{{ }}

        语法

一、标签属性

        v-bind : HTML标签的原始属性名        可省略为  : HTML标签的原始属性名
二、标签体内

        {HTML标签的原始属性名 }}

        举例

<head>
    <meta charset="UTF-8">
    <title>VUE</title>
    <script language="JavaScript" src="../../static/script/vue.js"></script>
    <script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                el:"#msg",//绑定id
                data:{
                    message1:"hello,Vue!",    //指定要渲染的内容
                    message2:"hello,Vue!"
                }
            });
        }
    </script>
</head>
<body>
    <div id="msg">
        <div>{{message1}}</div>   //标签体
        <input type="text" :value="message2"> //标签属性
    </div>
</body>

2.2 双向绑定元素属性 v-model

        何为双向?

        使用了双向绑定后,就可以实现:页面上数据被修改后,Vue对象中的数据属性也跟着被修改

        语法

        v-mode:HTML标签的原始属性名 = ”... ...“

        可省略为:

        v-mode= "... ..."

        举例: 

 <script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                el:"#demo",
                data:{
                    vueValue:"yyds"
                }
            });
        }
    </script>

... ...

<div id="demo">
	<!-- v-bind:属性名 效果是从Vue对象渲染到页面 -->
	<!-- v-model:属性名 效果不仅是从Vue对象渲染到页面,而且能够在页面上数据修改后反向修改Vue对象中的数据属性 -->

	<input type="text" v-model:value="vueValue" />
    <input type="text" v-model="vueValue" />
	<p>{{vueValue}}</p>

</div>

        此时,如果修改了 <input>  标签内的值,那么 <p> 标签的内容也会改变

2.2.1 .trim修饰符

        加在v-model后,可以将文本前后空格去掉。

<input type="text" v-model.trim="vueValue" />

三、基本语法-条件渲染 v-if/v-else/v-show

        根据Vue对象数据属性判断是否对HTML页面内容进行渲染

3.1 v-if

<script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                  el:"#demo",
                  data:{
                        condition:true  //指定条件为true
                }
            });
        }
</script>

... ...

<div id="demo">
	<img v-if="condition" src="/images/1.jpg" />     //如果条件为true,加载图片1
	<img v-if="!condition" src="/images/0.jpg" />    //如果条件为false,加载图片0
</div>

3.2 v-if 和 v-else

        类似于if else

<script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                  el:"#demo",
                  data:{
                        condition:true  //指定条件为true
                }
            });
        }
</script>

... ...

<div id="demo">
	<img v-if="condition" src="/images/1.jpg" />     //如果条件为true,加载图片1
	<img v-else="condition" src="/images/0.jpg" />    //如果条件不为true,加载图片0
</div>

3.3 v-show

        v-show通过其隐藏的display属性来控制标签是否显示

<div id="demo">
	<img v-show="condition" src="/images/beauty.jpg" />
</div>

四、基本语法-列表渲染(v-for="e in eList") 

4.1 迭代普通数组

        假设给出一个颜色数组,依次输出每个颜色名字:

<script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                el:"#demo",
                data:{
                    colorList: [
                        "red",
                        "green",
                        "blue",
                        "pink",
                        "white"
                    ]
                }
            });
        }
</script>

... ...

<div id="demo">
    <ul>
        <!-- 使用v-for语法遍历数组 -->
        <!-- v-for的值是语法格式是:引用数组元素的变量名 in Vue对象中的数组属性名 -->
        <!-- 在文本标签体中使用{{引用数组元素的变量名}}渲染每一个数组元素 -->
        <li v-for="color in colorList">{{color}}</li>
    </ul>
</div>

4.2 迭代对象数组

        输出员工表中每个员工的信息:

<script language="JavaScript">
        window.onload=function () {
            var vue=new Vue({
                el:"#demo",
                data:{
                    employeeList:[
                        {
                            "empId":11,
                            "empName":"tom",
                            "empAge":111,
                            "empSubject":"java"
                        },
                        {
                            "empId":22,
                            "empName":"jerry",
                            "empAge":222,
                            "empSubject":"php"
                        },
                        {
                            "empId":33,
                            "empName":"bob",
                            "empAge":333,
                            "empSubject":"python"
                        }
                    ]
                }
            });
        }
</script>

... ...

<div id="demo">
    <table>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>专业</th>
        </tr>
        <tr v-for="employee in employeeList">
            <td>{{employee.empId}}</td>
            <td>{{employee.empName}}</td>
            <td>{{employee.empAge}}</td>
            <td>{{employee.empSubject}}</td>
        </tr>
    </table>
</div>

五、基本语法-事件驱动(v-on:事件名/@事件名)

        语法:

        v-on:事件名="... ..."   或者  @事件名="... ..."

        例如:

<div id="app">
    <p>{{message}}</p>
    <!-- v-on:事件类型="事件响应函数的函数名" -->
    <button @click="reverseMessage">Click me to reverse message</button>
</div>

        为了响应这些事件,要在js代码块中定义对应的函数

<script language="JavaScript">
        window.onload=function () {
            var vue= new Vue({
                el:"#app",
                data:{
                    message:"Hello Vue!"
                },
                methods: {
                    reverseMessage: function () {
                        this.message = this.message.split("").reverse().join("");
                    }
                }
                });
        }
</script>
</head>

六、基本语法-侦听属性 watch

        所谓『侦听』,就是对message属性进行监控,当属性的值发生变化时,调用我们准备好的函数

        格式:

<script language="JavaScript">
        window.onload=function () {
            var vue= new Vue({
                el:"#xxx",
                data:{
                 ... ...
                },
                "watch":{
                    属性1:function (newVal) {
                        操作1
                    },
                    属性2:function (newVal) {
                        操作2
                    }
                }
                });
        }
</script>

        我们可以实现一个简单的加法器

<script language="JavaScript">
        window.onload=function () {
            var vue= new Vue({
                el:"#app",
                data:{
                    num1:"1",
                    num2:"1",
                    res:"0"
                },
                "watch":{
                    num1:function (newVal) {
                        this.res=parseInt(newVal)+parseInt(this.num2)
                    },
                    num2:function (newVal) {
                        this.res=parseInt(newVal)+parseInt(this.num1)
                    }
                }
                });
        }
</script>

... ...

<div id="app">
    <input type="text" v-model="num1"><br/>
    <input type="text" v-model="num2"><br/>
    结果:<span>{{res}}</span>
</div>

        效果:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值