Vue2(初识vue)

news2024/11/18 19:37:16

目录

      • 一,Vue2简介
        • 1.1,什么是vue
        • 1.2,初始vue
        • 1.3,搭建vue环境
        • 1.4,第一个hello world
      • 二,基础知识
        • 2.1 指令
          • 2.2-1 指令v-text
          • 2.2-2 指令v-html
          • 2.2-3 指令v-if
          • 2.2-4 指令v-else
          • 2.2-5 指令v-show
          • 2.2-6 v-if指令与v-show指令区别
          • 2.2-7 指令v-on
          • 2.2-8 指令v-bind
          • 2.2-9 指令v-model
          • 2.2-10 指令v-for
      • 三,事件绑定
        • 3.1,在事件对应的方法中获取到事件对象
        • 3.1,事件修饰符-阻止冒泡
        • 3.2,事件修饰符-阻止默认行为
        • 3.3,一次事件
        • 3.3,键盘事件修饰符
      • 四,Vue过滤器
      • 五,vue中class样式的动态绑定
        • 5.1,字符串写法
        • 5.1,对象写法
        • 5.1,数组写法
      • 六,完整代码
      • 最后

一,Vue2简介

1.1,什么是vue

官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架。

1.2,初始vue

  • M:Model(模型) 对应data的数据
  • V:View(视图) 模板==>页面
  • VM:ViewModel(视图模型) Vue实例对象

在这里插入图片描述

1.3,搭建vue环境

vue环境的搭建有很多种:

  • 使用cdn
  • 下载javaScript文件,自行托管
  • 使用npm安装
  • 使用官方的cli来构建项目

对于我们初次学习,我们使用自行下载js的方式。

1.4,第一个hello world

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        {{message}}
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    var app = new Vue({
        el: '#app',     // 用于指定当前vue实例为哪个容器使用,值为css选择器字符串
        data: {					// 用于储存数据,数据供el指定的容器使用
            message: 'Hello world!',
        },
    });
</script>
</html>

在这里插入图片描述
注意

  • 一个vue实例只能接管一个容器
  • 插值语法:{{}} 可以读取到在data的所有属性
  • data中数据发生变化,那么在容器用到的数据会自动更新
  • data的写法,我们通常会写成函数的方式,代码如下:
        data(){
            return {
                message: 'Hello world!',
            }
        }

面试题:
Data为啥要写成函数?
Vue 里面data属性之所以不能写成对象的格式,是因为对象是对地址的引用,而不是独立存在的。如果一个.vue 文件有多个子组件共同接收一个变量的话,改变其中一个子组件内此变量的值,会影响其他组件的这个变量的值。如果写成函数的话,那么他们有一个作用域的概念在里面,相互隔阂,不受影响。

二,基础知识

2.1 指令

什么是指令?
在vue中提供一些对于页面+数据的更为方便的操作,这些操作就叫做指令。
譬如在HTML页面中这样使用

<div v-xxx=''></div>

在vue中v-xxx就是vue的指令,指令就是以数据去驱动DOM行为的,简化DOM操作。
常用的指令有哪些,及怎么使用这些指令

  • v-text 不可解析html标签
  • v-html 可解析html标签
  • v-if 做元素的插入(append)和移除(remove)操作
  • v-else-if
  • v-else
  • v-show display:none 和display:block的切换
  • v-for 数组 item,index 对象 value,key ,index
2.2-1 指令v-text
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <div v-text="showText"></div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                showText:'<h1>vue</h1>',
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-2 指令v-html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <div v-html="showHtml"></div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                showHtml:'<h1>vue</h1>',
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-3 指令v-if

v-if指令称为条件渲染指令,根据表达式的真假来插入和删除元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                isIf:true,
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-4 指令v-else

v-else指令为v-if指令添加“else块”,v-else元素必须立即跟在v-if元素的后面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1>
        <h1 v-else="isIf">我是isIf为false时显示</h1>
       <!-- v-if不成立时,才会显示 -->
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                isIf:false,
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-5 指令v-show

v-show指令控制切换一个元素的显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <h1 v-show="isShow">isShow是真的,显示了,false的情况下此节点display为none</h1>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
            // 表达式为真元素显示
                isShow:true,  
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-6 v-if指令与v-show指令区别

按下F12键,打开控制台查看

  • v-if指令满足条件时会渲染到HTML中,不满足条件时,不会渲染
  • 使用v-show指令的元素始终会被渲染到HTML中
    • 只是简单地为元素设置CSS的style属性。当不满足条件的元素被设置style="display:none"样式

应用场景的区别

  • v-if指令有更高的切换消耗,当v-if指令条件成立的时候会将元素加上,不成立的时候,就会移除DOM,并且内部的指令不会执行
  • v-show指令有更高的初始渲染消耗,v-show只是简单的隐藏和显示
2.2-7 指令v-on

v-on指令为HTML元素绑定事件监听

v-on:事件名称 ="函数名称() "
简写形式   @事件名称 ="函数名称()"
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        {{message}}<br>
        <button @click="fun1">点击1</button>
        <button @dblclick="fun2">双击2</button> 
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                message: 'Hello world!',
            } 
        },
        methods:{
             // 声明了一个叫fun1的方法
             fun1(){
                // 怎么在方法中使用data对象的变量,需要使用this
                console.log("button1被点击了",this.message);
                this.isShow=false
                if(this.isIf){
                    this.isIf=false
                }else{
                    this.isIf=true
                }
            },
            fun2(){
                console.log("button2被双击了");
            },
        }
    })
</script>
</html>

在这里插入图片描述

2.2-8 指令v-bind

v-bind指令可以在其名称后面带一个参数,参数通常是HTML元素的特性(attribute)

v-bind:属性名 ="表达式" 
简写形式 :属性名 ="表达式"
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <div>
            <img v-bind:src="img1url" width="300px" height="100px" alt="">
        </div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                img1url:'../img/banner1.jpg',
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-9 指令v-model

v-model指令能轻松实现表单输入和应用状态之间的双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <form action="">
            <!-- 双向数据绑定是表单元素进行绑定 -->
            <input type="text" name="personNmae" v-model="person.name">
            <input type="text" name="age" v-model="person.age">


            <select name="love" v-model="person.love">
                <option value="eat"></option>
                <option value="drick"></option>
            </select>


            <input type="radio" v-model="person.sex" name="sex" value="1"><input type="radio" v-model="person.sex" name="sex" value="2"></form>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                person:{
                    name:'王琪',
                    age:18,
                    love:'eat',
                    sex:1,
                },
            } 
        },
    })
</script>
</html>

在这里插入图片描述

2.2-10 指令v-for

v-for指令可以遍历data中的数据,并在页面进行数据展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <form action="">
            <div>
                <select v-model="shabi1" name="" id="">
                    <option v-for="(item, index) in shabi" >{{item}}</option>
                </select>
            </div>
            <div v-for="(attr,key) in person">
                {{key}}-{{attr}}
            </div>
        </form>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                person:{
                    name:'王导',
                    age:18,
                    love:'eat',
                    sex:1,
                },
                shabi:["小豪","王导","光头"],
                shabi1:"小豪",
            } 
        },
    })
</script>
</html>

在这里插入图片描述

三,事件绑定

事件绑定v-on:事件名=“表达式||函数名” 简写 @事件名=“表达式||函数名”
事件名可以是原生也可以是自定义的。注意函数的定义也要在Vue中,采用methods属性

3.1,在事件对应的方法中获取到事件对象

加括号,加括号一般是需要有额外参数的情况。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        <form action="">
            <div>
                <table border="1">
                    <tr>
                        <td>序号</td>
                        <td>姓名</td>
                        <td>年龄</td>
                        <td>操作</td>
                    </tr>
                    <tr v-for="(stu,index) in person.studentArray">
                        <td>{{index+1}}</td>
                        <td>{{stu.name}}</td>
                        <td>{{stu.age}}</td>
                        <td><button type="button" @click="fun1($event,stu.name)">修改</button></td>
                    </tr>
                </table>
            </div>
        </form>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                person:{
                    studentArray:[
                        {name:"小豪",age:"18"},
                        {name:"导哥",age:"20"}
                    ],
                },
            } 
        },
        methods:{
            // 声明了一个叫fun1的方法
            fun1(event,name){
                console.log("事件对象",event);
                console.log(name);
            },
        }
    })
</script>
</html>

3.1,事件修饰符-阻止冒泡

冒泡发生的情景:子元素和父元素绑定了相同的事件,然后点击了子元素,父元素也触发了该事件

使用原生js阻止冒泡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <div @click="fun3">
            外层div
            <div @click="fun3">里层div</div>
        </div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            fun3(event){
                console.log("sss");
                event.stopPropagation(); // 使用原生js阻止冒泡
            },
        }
    })
</script>
</html>

在这里插入图片描述
使用vue事件的修饰符阻止冒泡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <div @click="fun3">
            外层div
            <div @click.stop="fun3">里层div</div>
        </div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            fun3(event){
                console.log("sss");
                // event.stopPropagation(); // 使用原生js阻止冒泡
            },
        }
    })
</script>
</html>

在这里插入图片描述

3.2,事件修饰符-阻止默认行为

有些标签是由默认行为的,比如a标签,有个默认的页面跳转。

使用原生js阻止默认行为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <a href="http://www.baidu.com" @click="fun5">百度</a>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            fun5(event){
                alert("不可跳转!")
                event.preventDefault(); // 使用原生js阻止默认行为
            },
        }
    })
</script>
</html>

在这里插入图片描述
使用vue的事件修饰符阻止默认行为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <a href.prevent="http://www.baidu.com" @click="fun5">百度</a>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            fun5(event){
                alert("不可跳转!")
                // event.preventDefault(); // 使用原生js阻止默认行为
            },
        }
    })
</script>
</html>

在这里插入图片描述

3.3,一次事件

此事件只会执行一次,第二次点击无效

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <div @click.once="fun7">一次事件</div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            fun7(event){
                console.log("sss");
            },
        }
    })
</script>
</html>

在这里插入图片描述

3.3,键盘事件修饰符

键盘事件修饰符,主要筛选输入特定字符才触发。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        
        <!-- 13表示是输入enter,起的keycode值可以查询 -->
        <input type="text" @keyup.13="change">
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        methods:{
            change(event){
                console.log(event.key,event.keyCode);
            }
        }
    })
</script>
</html>

在这里插入图片描述

四,Vue过滤器

过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“(|)”对数据进行过滤,经常用于格式化文本,比如字母的大写、货币的千位使用、逗号分隔等

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<body>
    <div id="app">
        {{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") | againChange}}
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                times: 1690944730436,
            }
            
           
        },
         // 2. 定义过滤器
        filters: {
            //3.定义一个处理函数,参数value为要处理数据,format为传入参数
            conversion: function (value, format) {
            //这个转换方法就不介绍了,看看就行,过滤器用法为主
            var date = new Date(value);
            function addZero(date) {
                if (date < 10) {
                return "0" + date;
                }
                return date;
            }
            let getTime = {
                yyyy: date.getFullYear(),
                yy: date.getFullYear() % 100,
                MM: addZero(date.getMonth() + 1),
                M: date.getMonth() + 1,
                dd: addZero(date.getDate()),
                d: date.getDate(),
                HH: addZero(date.getHours()),
                H: date.getHours(),
                hh: addZero(date.getHours() % 12),
                h: date.getHours() % 12,
                mm: addZero(date.getMinutes()),
                m: date.getMinutes(),
                ss: addZero(date.getSeconds()),
                s: date.getSeconds(),
                w: (function () {
                let a = ["日", "一", "二", "三", "四", "五", "六"];
                return a[date.getDay()];
                })(),
            };
            for (let i in getTime) {
                format = format.replace(i, getTime[i]);
            }
            return format;
            },
            //4.再定义一个过滤器,给数据前加上"时间为:"这几个字
            againChange: function (value) {
            return "时间为:" + value;
            },
        },

    })
</script>
</html>

在这里插入图片描述

五,vue中class样式的动态绑定

5.1,字符串写法

  • 使用场景
    • 样式的类型不确定
  • 手动触发样式改变
  • 注意
    字符串使用的是vue实例data中的已有属性
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<style>
    .yangshi{
        font-size: 50px;
    }
    .yanse{
        color: aquamarine;
    }
</style>
<body>
    <div id="app">
        <div :class="myclass">你好vue</div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                myclass:'yangshi yanse',
            }
            
           
        },
    })
</script>
</html>

在这里插入图片描述

5.1,对象写法

  • 使用场景
    • 样式个数、类名确定,通过Boolean动态展示与否
  • 对象写在内联样式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<style>
    .yangshi{
        font-size: 50px;
    }
    .yanse{
        color: aquamarine;
    }
</style>
<body>
    <div id="app">
        <div :class="{yangshi:isyangshi,yanse:isyanse}">你好</div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                isyangshi:true,
                isyanse:true,
            }
            
           
        },
    })
</script>
</html>

在这里插入图片描述

5.1,数组写法

  • 使用场景
    • 需要绑定的样式个数不确定,类名也不确定
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
</head>
<style>
    .yangshi{
        font-size: 50px;
    }
    .yanse{
        color: aquamarine;
    }
</style>
<body>
    <div id="app">
        <div :class="myclassObject">你好</div>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                myclassObject:['yangshi','yanse']
            }
            
           
        },
    })
</script>
</html>

在这里插入图片描述

六,完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .yangshi{
        font-size: 50px;
    }
    .yanse{
        color: aquamarine;
    }
</style>
<body>
    <div id="app">
        {{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") | againChange}}
        <div :class="myclass">你好</div>
        <div :class="{yangshi:isyangshi,yanse:isyanse}">你好</div>
        <div :class="myclassObject">你好</div>
        <div v-html="showHtml"></div>
        <h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1>

        <h1 v-else>我是isIf为false时显示</h1>

        <h1 v-show="isShow">isShow是真的,显示了,false的情况下此节点display为none</h1>

        <button @click="fun1">点击1</button>
        <button @dblclick="fun2">点击2</button>


        <div>
            <img v-bind:src="img1url" width="300px" height="100px" alt="">
        </div>

        <div>
            <form action="">
                <!-- 双向数据绑定是表单元素进行绑定 -->
                <input type="text" name="personNmae" v-model="person.name">
                <input type="text" name="age" v-model="person.age">


                <select name="love" v-model="person.love">
                    <option value="eat"></option>
                    <option value="drick"></option>
                </select>


                <input type="radio" v-model="person.sex" name="sex" value="1"><input type="radio" v-model="person.sex" name="sex" value="2"><div>
                    <select v-model="shabi1" name="" id="">
                        <option v-for="(item, index) in shabi" >{{item}}</option>
                    </select>
                </div>
                <div v-for="(attr,key) in person">
                    {{key}}-{{attr}}
                </div>

                <div>
                    <table border="1">
                        <tr>
                            <td>序号</td>
                            <td>姓名</td>
                            <td>年龄</td>
                            <td>操作</td>
                        </tr>
                        <tr v-for="(stu,index) in studentArray">
                            <td>{{index+1}}</td>
                            <td>{{stu.name}}</td>
                            <td>{{stu.age}}</td>
                            <td><button type="button" @click="fun3($event,stu.name)">修改</button></td>
                        </tr>
                    </table>
                </div>
            </form>
        </div>

        <div>
            <div @click="fun4">
                外层div
                <div @click.stop="fun4">里层div</div>
            </div>
        </div>

        <div>
            <a href="http://www.baidu.com" @click.prevent="fun5">百度</a>
        </div>

        <div>
            <div @click.once="fun6">一次事件</div>
        </div>

        <div>
            <!-- 13表示是输入enter,起的keycode值可以查询 -->
            <input type="text" @keyup.13="change">
        </div>
    </div>

    
    
</body>
<script src="../js/vue2.7.js"></script>
<script>
    // 创建一个Vue实例
    var app = new Vue({
        el:"#app", // 绑定一个元素
        data(){
            return {
                name:'小豪老放屁!!',
                isIf:true,
                isShow:true,
                img1url:'../img/banner1.jpg',
                person:{
                    name:'王导',
                    age:18,
                    love:'eat',
                    sex:1,
                },
                showHtml:'<h1>王导</h1>',
                shabi:["小豪","王导","光头"],
                shabi1:"小豪",
                studentArray:[
                    {name:"光头",age:"18"},
                    {name:"王导",age:"20"}
                ],
                times: 1690944730436,
                myclass:'yangshi yanse',
                isyangshi:true,
                isyanse:true,
                myclassObject:['yangshi','yanse']
            }
            
           
        },
        methods:{
            // 声明了一个叫fun1的方法
            fun1(){
                // 怎么在方法中使用data对象的变量,需要使用this
                console.log("button1被点击了",this.name);
                this.isShow=false
                if(this.isIf){
                    this.isIf=false
                }else{
                    this.isIf=true
                }
            },
            fun2(){
                console.log("button2被双击了");
            },
            fun3(event,name){
                console.log("事件对象",event);
                console.log(name);
            },
            fun4(event){
                console.log("111");
                // elent.stopPropagation(); // 使用原生js阻止冒泡
            },
            fun5(event){
                alert("111");
                // elent.preventDefault(); // 使用原生js阻止默认行为
            },
            fun6(){
                console.log("sss");
            },
            change(event){
                console.log(event.key,event.keyCode);
            }
        },
         // 2. 定义过滤器
        filters: {
            //3.定义一个处理函数,参数value为要处理数据,format为传入参数
            conversion: function (value, format) {
            //这个转换方法就不介绍了,看看就行,过滤器用法为主
            var date = new Date(value);
            function addZero(date) {
                if (date < 10) {
                return "0" + date;
                }
                return date;
            }
            let getTime = {
                yyyy: date.getFullYear(),
                yy: date.getFullYear() % 100,
                MM: addZero(date.getMonth() + 1),
                M: date.getMonth() + 1,
                dd: addZero(date.getDate()),
                d: date.getDate(),
                HH: addZero(date.getHours()),
                H: date.getHours(),
                hh: addZero(date.getHours() % 12),
                h: date.getHours() % 12,
                mm: addZero(date.getMinutes()),
                m: date.getMinutes(),
                ss: addZero(date.getSeconds()),
                s: date.getSeconds(),
                w: (function () {
                let a = ["日", "一", "二", "三", "四", "五", "六"];
                return a[date.getDay()];
                })(),
            };
            for (let i in getTime) {
                format = format.replace(i, getTime[i]);
            }
            return format;
            },
            //4.再定义一个过滤器,给数据前加上"时间为:"这几个字
            againChange: function (value) {
            return "时间为:" + value;
            },
        },

    })
</script>
</html>

在这里插入图片描述

最后

送大家一句话:穷且益坚,不坠青云之志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/826496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA导入第三方jar包, 并在Maven中打包该jar包

IDEA导入jar包, 并在Maven中打包该jar包 背景步骤IDEA导入jar包Maven中打包第三方jar包 背景 项目因为某些原因, 需要引入demo中代码, 但是demo使用的是 java而且没有使用任何框架, 并且还引用第三方 jar, 因此在自己项目(SpringBootMaven)中集成demo时. 整个集成过程中颇为麻…

2023拒绝内卷!两年转行网络安全真实看法!

我目前转行网络安全两年&#xff0c;没啥天分&#xff0c;全靠努力&#xff0c;基本能够得上中级的水平了。看到大家对转行网络安全挺感兴趣&#xff0c;也有挺多争议&#xff0c;想把我的建议和经验告诉大家。 有很多人觉得网络安全已经饱和了&#xff0c;现在选择这个工作&a…

docker-compose 搭建 Sharding-Proxy 5.4.0 分库分表代理服务

感谢: 程序员一枚 提供搭建方式 项目地址: https://gitee.com/dromara/RuoYi-Cloud-Plus/tree/2.X/ 1.在 mysql 创建两个库 创建两个库 data-center_0 data-center_1 分别执行如何sql CREATE TABLE t_order_0 (order_id bigint(20) UNSIGNED NOT NULL COMMENT 主键ID,user_…

【数据结构】27.移除元素

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

P4145 上帝造题的七分钟 2 / 花神游历各国

上帝造题的七分钟 2 / 花神游历各国 题目背景 XLk 觉得《上帝造题的七分钟》不太过瘾&#xff0c;于是有了第二部。 题目描述 "第一分钟&#xff0c;X 说&#xff0c;要有数列&#xff0c;于是便给定了一个正整数数列。 第二分钟&#xff0c;L 说&#xff0c;要能修改…

Ubuntu22.04搭建mysql主从复制

记录哈&#xff0c;这个需要两台服务器&#xff0c;每台服务器上面都要安装mysql&#xff0c;若是没有安装&#xff0c;请分别在两台服务器上面运行下面的命令 sudo apt install mysql-server 引用 Ubuntu下的mysql8.0忘记密码怎么办? 环境 Ubuntu 22.04 主机:192.168.164.1…

mac前端代码编辑 Sublime Text 4 Dev 中文v4.0(4151)

Sublime Text 4 for Mac是一款功能强大的代码编辑器&#xff0c;适合所有需要高效编写代码和进行代码管理的程序员使用。 快速响应&#xff1a;Sublime Text 4在加载文件和执行命令时非常快速&#xff0c;能够让用户在高效的开发过程中体验到无缝的交互。 多种语言支持&#…

定了!全国2023下半年软考(高级、中级、初级)报名时间汇总

截止到2023年8月2日&#xff0c;有以下地区公布了软考报名时间&#xff1a; 安徽软考2023下半年报名时间&#xff1a;8月15日9:00至8月21日16:00 黑龙江软考2023下半年报名时间&#xff1a;8月16日至8月22日 甘肃软考2023下半年报名时间&#xff1a;8月28日9:00至9月6日18:00…

安全文件传输的重要性及其对企业的影响

在当今的信息时代&#xff0c;企业之间的文件传输已经成为日常工作的重要组成部分。无论是在商务合作、人力资源还是财务审计等方面&#xff0c;文件传输都发挥着关键的作用。然而&#xff0c;随着网络技术的发展&#xff0c;网络安全问题也日益突出&#xff0c;泄漏、篡改、丢…

django使用mysql数据库

Django开 发操作数据库比使用pymysql操作更简单&#xff0c;内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图&#xff0c;pymysql就是mysql的驱动&#xff0c;代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动&a…

EXCEL里数值列如何显示序号?如何重新排序? 怎么取得排序后的序号?

目录 1 EXCEL里如何显示序号&#xff1f; 2 如何重新排序&#xff1f; 3 怎么取得排序后的序号&#xff1f; 3.1 rank() 的序号可能不连续 3.2 方法2&#xff1a;SUMPRODUCT((C7>C$7:C$12)/COUNTIF(C$7:C$12,C$7:C$12))1 EXCEL里如何显示序号&#xff1f;如何重新排序…

A Survey of Embodied AI: From Simulators to Research Tasks 论文阅读

论文信息&#xff1a; 题目&#xff1a;A Survey of Embodied AI: From Simulators to Research Tasks 作者&#xff1a;Jiafei Duan, Samson Yu 来源&#xff1a;arXiv 时间&#xff1a;2022 Abstract 通过评估当前的九个具体人工智能模拟器与我们提出的七个功能&#xff0…

redis的事务、redis持久化方案、Java操作redis数据库

五、redis的事务 开启事务&#xff1a; 要等左边的提交事务&#xff0c;右边才能拿到修改后的值 本来name不能增加&#xff0c;会报错&#xff0c;但是事务中没提交不知道错 此时提交数据&#xff1a; redis事务将成功的正常提交&#xff0c;失败的才回滚&#xff0c;所以不具备…

C++源码Cmake生成各架构的库

网上一般的教程都是手写C源码进CMakeList 例如&#xff1a; add_executable (main a.cpp b.cpp a/c.cpp ... ) 这种写法太蠢了&#xff0c;不适合项目多层级目录使用 遍历所有文件夹 下面的代码是Cmake代码&#xff0c;一开始看到的时候我也是震惊的&#xff0c;但事实就是它…

2023年性价比电脑硬件主机推荐|电脑党必备硬件选购攻略

在自主搭建电脑变得流行且显卡价格飙升的这个时代&#xff0c;我想给大家推荐一款特别的产品——NUC&#xff08;Next Unit of Computing&#xff09;。 NUC是Intel所推出的一种「ITX台式机」&#xff0c;截止目前已经迭代了很多型号&#xff0c;比如之前我买过的猛兽峡谷&…

Flink读取mysql数据库(java)

代码如下: package com.weilanaoli.ruge.vlink.flink;import com.ververica.cdc.connectors.mysql.source.MySqlSource; import com.ververica.cdc.connectors.mysql.table.StartupOptions; import com.ververica.cdc.debezium.JsonDebeziumDeserializationSchema; import org…

夏日暴雨,6大安全应对攻略,让我们一起做好防范

夏季暴雨来袭&#xff0c;我们必须高度警惕&#xff01;短时间的强降雨可能导致积水、山区滑坡、城市内涝等问题&#xff0c;给社会和经济发展带来严重影响。今天&#xff0c;让我们一起探讨一些有效的防范措施&#xff0c;确保个人安全与减少灾害损失。关注天气预警&#xff0…

IC秋招| 秋招怎么做准备,这份攻略请收下!

近期大家关注的就是秋招了&#xff0c;如今一些企业已经开启了提前批招聘&#xff0c;不少同学已经投递了简历&#xff0c;但内心还是非常焦虑&#xff0c;那么今年的秋招到底该如何准备呢&#xff1f; 简历投递思路建议 刚开始对大厂没有把握的话&#xff0c;可以先约初创或…

SWAT模型【建模方法、实例应用、高级进阶技能】

查看原文>>>SWAT模型【建模方法、实例应用、高级进阶技能】 【内容简述】&#xff1a; 【其它相关推荐】&#xff1a; 一维二维水动力模拟、水质建模、复杂河网构建技术在环境影响评价、防洪评价与排污口论证等实际项目中的应用 基于R语言的水文、水环境模型优化技…

黑客滥用 Google AMP 进行规避性网络钓鱼攻击

近日&#xff0c;有安全研究人员警告称&#xff0c;有越来越多的网络钓鱼活动利用谷歌加速移动页面(AMP)绕过电子邮件安全措施&#xff0c;进入企业员工的收件箱。 谷歌AMP是由谷歌和30个合作伙伴共同开发的一个开源HTML框架&#xff0c;旨在加快网页内容在移动设备上的加载速…