如何快速上手Vue框架?(中)

简介: 如何快速上手Vue框架?(中)

6.3 v-else

用法:

true不显示,false显示

注意:

不能单独使用,必须要和v-if搭配

v-if和v-else中间不能有多余标签

案例:演出实现二者搭配的效果

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #divs {
            border: 1px solid red;
            width: 100px;
            height: 150px;
        }
    </style>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <div v-if=flag id="divs">这是加了v-if渲染的div</div>
    <div v-else=flag >这是加了v-else渲染的div</div>
    <input type="button" value="按钮" @click="changeDiv">
</div>
<script>
    new Vue({
      el:"#app",
      data:{
          flag:true
      },
      methods:{
          changeDiv:function () {
              //按下按钮触发单击事件的瞬间,flag被取反并同时作用于所渲染的标签体
              this.flag=!this.flag;
          }
      }
    })
</script>
</body>
</html>

案例演示效果:

①变化前

②变化后

6.4 v-show

用法:

根据表达式的值来决定是否显示元素或组件,当表达式的值为真时会显示,否则会隐藏,但是元素仍然会被渲染到 DOM 中。

案例:演示实现v-show的效果

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #divs {
            border: 1px solid red;
            width: 100px;
            height: 150px;
        }
    </style>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
<!--    <div v-if=flag id="divs">这是加了v-if渲染的div</div>-->
    <div v-show=flag id="divs">这是加了v-show渲染的div</div>
    <input type="button" value="按钮" @click="changeDiv">
</div>
<script>
    new Vue({
      el:"#app",
      data:{
          flag:true
      },
      methods:{
          changeDiv:function () {
            //按下按钮触发单击事件的瞬间,flag被取反并同时作用于所渲染的标签体
              this.flag=!this.flag;
          }
      }
    })
</script>
</body>
</html>

案例实现效果:

①渲染前

②渲染后

6.5 v-if 与v-show的区别

使用场景不同

v-if 适用于在条件满足时只渲染一次的情况。

v-show 适用于需要频繁切换显示与隐藏的情况。

why?

因为 v-if 在条件不满足时会从 DOM 中删除元素,而 v-show 则只是通过修改 CSS 样式来隐藏元素,因此 v-show 的性能比 v-if 更好。


七. Vue如何实现列表渲染?

用法:

Vue 的列表渲染可以使用 v-for 指令,它可以遍历数组或对象,并将每个元素渲染出来。

位置:

循环遍历哪个标签,v-for加在哪个标签上

语法:

v-for=" "

7.1 简单数组

案例:在hyml中的无序列表中遍历数据模型中的hobbys并显示在页面中

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <ul>
        <li v-for="hobby in hobbys">{{hobby}}</li>
    </ul>
    <input type="button" value="新增" @click="addHobby">
    <input type="button" value="删除" @click="deleteHobby">
</div>
<script>
    new Vue({
        el:"#app",
        data: {
            hobbys:["Java","mysql","写博客","刷视频号"]
        } ,
        methods:{
            //新增一个习惯
            addHobby:function () {
                this.hobbys.push("CODM")
            },
            //删除一个习惯,从后往前删
            deleteHobby:function () {
                this.hobbys.splice(this.hobbys.length-1,1)
            }
        }
    })
</script>
</body>
</html>

7.2 对象数值

案例:在table标签中将数据模型中的computers对象数组遍历并显示到页面

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <table>
        <tr>
            <th>序号</th>
            <th>品牌</th>
            <th>价格</th>
        </tr>
        <tr v-for="computer in computers">
            <td >{{computer.id}}</td>
            <td >{{computer.brand}}</td>
            <td >{{computer.price}}</td>
        </tr>
    </table>
</div>
<script>
    new Vue({
        el:"#app",
        //遍历对象数值
        data: {
            computers:[
                {
                  id:1001,
                  brand:"华为",
                  price: 7800
                }, {
                  id:1002,
                  brand:"联想" ,
                  price:8900
                }, {
                  id:1003,
                  brand:"苹果",
                  price:13000
                }
            ]
        } 
    })
</script>
</body>
</html>

需要索引的语法:

v-for=“(变量,index) in 数组”

索引index从0开始,可以加数学运算

案例:在刚才的对象数组中加入序号

代码演示如下:

</head>
<body>
<div id="app">
    <table>
        <tr>
            <th>索引</th>
            <th>序号</th>
            <th>品牌</th>
            <th>价格</th>
        </tr>
        <tr v-for="(computer,index) in computers">
            <td>{{index+1}}</td>
            <td >{{computer.id}}</td>
            <td >{{computer.brand}}</td>
            <td >{{computer.price}}</td>
        </tr>
    </table>
</div>
<script>
    new Vue({
        el:"#app",
        //遍历对象数值
        data: {
            computers:[
                {
                  id:1001,
                  brand:"华为",
                  price: 7800
                }, {
                  id:1002,
                  brand:"联想" ,
                  price:8900
                }, {
                  id:1003,
                  brand:"苹果",
                  price:13000
                }
            ]
        }
    })
</script>
</body>
</html>


八. Vue如何实现事件驱动?

语法:

v-on:事件类型=“函数调用”

案例:实现单击事件和change事件

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <!--  单击事件  -->
    <input type="button" value="按钮" v-on:click="clickTest(10,'java')"><br>
    <!--  change事件  -->
    <input type="text" v-on:change="changeTest">
</div>
<script>
    new Vue(
        {
        el:"#app",
        data:{},
        methods:{
                clickTest:function (a,b) {
                    alert("这是vue绑定并测试的单击事件")
                    alert("传入的值:"+a+"\t"+b)
                },
                changeTest:function () {
                    alert("这是vue绑定并测试的change事件")
                }
            }
        }
    )
</script>
</body>
</html>

注意:

上述事件驱动的语法可这样简写:

v-on:click=“clickTest” ==> @click="clickTest"

下面的methods里的自定义函数可这样简写(不常用):

clickTest:function (a,b) {
                    alert("这是vue绑定并测试的单击事件")
                    alert("传入的值:"+a+"\t"+b)
                }
clickTest(){
  alert("点击事件绑定成功")
}

九. Vue如何实现取消控件默认行为?

9.1 什么是控件默认行为?

控件的默认行为指的是:

  • 点击超链接跳转页面
  • 点击表单提交按钮提交表单

9.2 超链接与表单取消控件默认行为

语法

js:event.preventDefault(); //取消控件的默认行为

Vue:@click.prevent=“clickTest” //100%取消

案例:模拟实现超链接与表单取消控件默认行为

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
</head>
<body>
<div id="app">
    <a href="https://www.baidu.com/" @click="clickTest">跳转至百度</a>
    <form  action="helloworld.html" method="get" @submit.prevent="submitTest" >
        <input type="text" name="username">
        <input type="submit" >
    </form>
</div>
<script>
    new Vue({
        el:"#app",
        data:{},
        methods:{
            clickTest:function () {
                //如果你不根让超链接进行跳转
                alert("将要跳转至百度")
                //取消控件的默认行为
                event.preventDefault();
            },
            submitTest:function () {
                //如果你不根让超链接进行跳转
                alert("将要提交表单")
                //取消控件的默认行为
                // event.preventDefault();
            }
        }
    })
</script>
</body>
</html>


十. Vue如何实现阻止事件冒泡?

10.1 关于事件修饰符

Vue事件修饰符是Vue提供的一种语法糖,用于简化事件处理程序的编写。事件修饰符是在事件后面添加的特殊后缀,用于改变事件的行为。

常见的事件修饰符有以下几种:

  • .stop阻止事件冒泡
  • .prevent阻止默认事件
  • .capture事件捕获阶段触发事件处理程序
  • .self只有在事件的目标元素上触发事件才会触发事件处理程序
  • .once只触发一次事件处理程序
  • .passive告诉浏览器不需要阻止默认事件,以提高性能

10.2 什么是事件冒泡?

指在 HTML 元素嵌套的结构中,当一个事件被触发时,它会从最内层的元素开始,逐层向外传递,直到传递到最外层的元素为止。在这个过程中,如果某个元素绑定了事件处理函数,它就会被调用执行。

例如,当用户在一个按钮上点击鼠标时,click 事件就会被触发,并且会从按钮元素开始沿着层次结构向外传递,直到传递到整个文档的最外层。在传递的过程中,任何绑定了 click 事件的元素都会被调用执行相应的事件处理函数。

10.3 如何实现阻止事件冒泡

语法:

js:event.stopPropagation(); //阻止事件冒泡
vue:@click.stop="div2Test"

案例:模拟实现阻止事件冒泡

代码演示如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.js"></script>
    <style>
        #div1{
            border: 2px solid red;
            width: 300px;
            height: 300px;
        }
        #div2{
            border: 2px solid blue;
            width: 150px;
            height: 150px;
        }
    </style>
</head>
<body>
<div id="app">
    <div id="div1" @click="div1Test">
        <div id="div2" @click.stop="div2Test"></div>
    </div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{},
        methods:{
            div1Test:function () {
                alert("点击了大红框");
            },
            div2Test:function () {
                //发生了事件冒泡:即点中了小蓝框,小蓝框的单击事件于大红框的单击事件先后触发
                alert("点击了小蓝框");
                //现有需求:点击小蓝框,只触发小蓝框的单击事件
                //js的原生阻止方法
                // event.stopPropagation();
            }
        }
    })
</script>
</body>
</html>

相关文章
|
1月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
7天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
1月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
41 1
vue学习第一章
|
1月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
30 1
|
1月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
29 1
|
1月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
32 1
|
1月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能

热门文章

最新文章