首页 > 其他分享 >Vue3的学习---2

Vue3的学习---2

时间:2024-07-19 17:30:56浏览次数:14  
标签:学习 Vue return 渲染 app --- num Vue3 mount

2.Vue基本语法

2.1 文本渲染指令

v-html和v-text

v-html:将数据当作html代码渲染到页面上

v-text:将数据当作纯文本渲染到页面上

<body>
    <div id="app">
        <!-- v-html 和 v-text 指令的作用是将数据渲染到 HTML 元素或文本节点中,避免出现{{num}} -->
        <p v-html="msg"></p>
        <p v-text="msg"></p>
    </div>
    
    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    msg: '<h1>hello</h1>'
                }
            }
        }).mount('#app') 
    </script>
</body>

2.2 属性绑定指令

2.2.1 v-bind

v-bind 用于动态地绑定一个或多个属性、特性或组件的 prop 到表达式。它允许你将数据从 Vue 实例动态地绑定到 HTML 元素或组件的属性上。

<body>
    <div id="app">
        <!-- 使用v-bind,通过‘:’,绑定title属性 -->
        <p v-bind:title="msg">hello</p>
        <!-- 简写 -->
        <p :title="msg">hello</p>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data(){
                return {
                    msg: 'hello'
                }
            }
        }).mount('#app')
    </script>
</body>

2.2.2 样式绑定

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .one {
            color: slateblue;
        }

        .two {
            font-size: 48px;
        }
    </style>
</head>

<body>
    <div id="app">
        <p :class="one">hello world</p>
        <p :class="className">hello world</p>
        <p :class="{one: isOne, two: isTwo}">hello world</p>
        <p :class="userId==1?className:''">hello world</p>
        <p :style="{color:colorValue, fontSize:fontSizeValue}">hello world</p>
        <!-- 应使用小驼峰命名法 -->
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    className: 'one two',
                    isOne: true,
                    isTwo: false,
                    userId: 1,
                    className: 'one',
                    colorValue: 'blue',
                    fontSizeValue: '48px'
                }
            }
        }).mount('#app')
    </script>
</body>

2.3 事件处理指令

2.3.1 v-on

v-on是vue当中的事件绑定指令,可以绑定click、mouseover等事件。v-on: 可以简写为 @

<body>
    <div id="app">
        <button v-on:click="pointme">点击</button>
        <!-- 简写 -->
        <button @click="pointme">点击</button>
        <!-- 焦点失去事件 -->
        <input type="text" @blur="blurEvent">
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data(){
                return {

                }
            },
            // 方法
            methods:{
                pointme(){
                    console.log('点我了')
                },
                blurEvent(){
                    console.log('失去焦点了')
                }
            }
        }).mount('#app')
    </script>
</body>

2.3.2 事件处理的参数

<body>
    <div id="app">
        {{num}}
        <button v-on:click="change(1)">加</button>
        <button @click="change(-1)">减</button>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data(){
                return {
                    num: 0
                }
            },
            methods: {
                change(value) {
                    this.num += value
                }
            }
        }).mount('#app')
    </script>
</body>

2.3.3 样式切换实例

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .one {
            color: slateblue;
        }

        .two {
            color: dodgerblue;
        }
    </style>
</head>

<body>
    <div id="app">
        <p :class="className" @click="change">hello world</p>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    className: 'one'
                }
            },
            methods: {
                change() {
                    this.className = this.className == 'one' ? 'two' : 'one'
                }
            }
        }).mount('#app')
    </script>
</body>

2.3.4 事件对象

事件对象是在事件触发时,由浏览器自动创建并传递给事件处理函数的一个对象。它包含了与事件相关的各种信息,例如事件的类型、触发事件的元素、事件发生的时间等。事件对象通常作为事件处理函数的第一个参数传递。

<body>
    <div id="app">
        {{num}}
        <!-- 当只有一个$event时,可以省略 -->
        <button v-on:click="change(3, $event)">加</button>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    num: 0
                }
            },
            methods: {
                change(value, event) {
                    this.num += value
                    console.log(event)
                    // event.target表示触发事件的元素
                    console.log(event.target)
                }
            }
        }).mount('#app')
    </script>
</body>

2.3.5 事件修饰符

事件修饰符在vue中用于修改事件处理函数的默认行为。它可以帮助我们更加简洁地处理事件,而不需要在事件处理函数中编写额外的逻辑。事件修饰符通过在绑定指令(如 v-on:click)后面添加点号(.)和修饰符名称来使用。

常见的事件修饰符及其作用:
  1. .stop:阻止事件冒泡。相当于调用 event.stopPropagation()
  2. .prevent:阻止事件的默认行为。相当于调用 event.preventDefault()
  3. .capture:使用事件捕获模式,即在捕获阶段处理事件。
  4. .self:只有当事件是从监听器绑定发元素本身触发时才触发回调。
  5. .once:事件只会触发一次。
  6. .passive:默认行为将会立即触发,不会等待事件处理函数执行完毕。这通常用于优化移动端滚动性能。

2.4 条件渲染指令

2.4.1 v-if

v-if 用于条件性地渲染。它根据表达式的值( true 或 false )来决定是否将元素插入到DOM。如果值为 true,则元素会被渲染;如果为 false,则元素不会被渲染。

<body>
    <div id="app">
        <div v-if="num === 1">num等于1</div>
        <div v-else-if="num === 2">num等于2</div>
        <div v-else-if="num === 3">num等于3</div>
        <div v-else>num不等于1,2,3</div>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    num: 1
                }
            }
        }).mount('#app')
    </script>
</body>

2.4.2 v-show

v-show 用于条件性地渲染。它根据表达式的值( true 或 false )来决定是否将元素插入到DOM。如果值为 true,则元素会被渲染;如果为 false,则元素不会被渲染。

<body>
    <div id="app">
        <div v-show="isShow">这里是v-show</div>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    isShow: false
                }
            }
        }).mount('#app')
    </script>
</body>
v-ifv-show的区别:
  1. 编译条件:

    v-if是“真正的”条件渲染,因为它会确保在切换过程中条件块内的时间监听和子组件适当地被销 毁和重构。

    v-show只是简单地基于CSS的display属性进行切换。

  2. 初始渲染开销:

    v-if在初始渲染时,如果条件为假,则什么也不做,直到条件第一次变为真时,才会开始渲染条件块。

    v-show不管初始条件是什么,元素总会被渲染,并且只是简单地基于CSS进行显示隐藏。

  3. 切换开销:

    v-if有更高的切换开销,因为每次切换时,条件块内的组件和事件监听器都需要重新创建和销毁。

    v-show有更低的初始渲染开销,但有更高的切换开销,因为每次切换时,只是简单地改变CSS属性。

  4. 适用场景:

    v-if适用于运行条件很少改变的情况。

    v-show适用于需要非常频繁切换的情况。

2.5 循环遍历指令

2.5.1 v-for

v-for 是 用于循环渲染列表的指令。它可以根据一个数组或对象生成一个元素列表。

<body>
    <div id="app">
        <!-- (value, key, index)是指(属性值,属性名,序号) -->
        <p v-for="(value, key, index) in user">{{ index }}.{{ key }}: {{ value }}</p>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    user: {
                        userId: 1,
                        userName: '张三',
                        userAge: 20
                    }
                }
            }
        }).mount('#app')
    </script>
</body>

2.5.2 遍历数组元素

<body>
    <div id="app">
        <ul>
            <!-- :key="user.userId" 唯一标识,修改哪个就重新渲染哪个,不必重新渲染整个列表,提高渲染效             率 -->
            <li v-for="user in userArr" :key="user.userId">{{user.userId}} {{user.userName}}                 {{user.userAge}}</li>
        </ul>
    </div>

    <script src="../js/vue3.js"></script>
    <script>
        Vue.createApp({
            data() {
                return {
                    userArr: [
                        {
                            userId: 1,
                            userName: '张三',
                            userAge: 20
                        }, {
                            userId: 2,
                            userName: '李四',
                            userAge: 25
                        }, {
                            userId: 3,
                            userName: '王五',
                            userAge: 30
                        }
                    ]
                }
            }
        }).mount('#app')
    </script>
</body>

标签:学习,Vue,return,渲染,app,---,num,Vue3,mount
From: https://www.cnblogs.com/yishengwanwuzhao/p/18311973

相关文章

  • Chromium源码阅读(11):了解chromium base的raw-ptr
    chromiumbase的rawptr.h引起了我的注意,常见的ptr封装有refed_ptr、weak_ptr等。raw_ptr还要封装吗?那一定是有特殊的意义。果然,raw_ptr.md引入眼帘:原文地址:https://chromium.googlesource.com/chromium/src/+/HEAD/base/memory/raw_ptr.mdraw_ptr简介raw_ptr与原始指针......
  • 安川伺服驱动器SGDV-1R6A01B002000的应用
    YASKAWA安川伺服电机及驱动器应用YASKAWA安川伺服电机及驱动器是一种运动控制设备,可以广泛应用于各种机器人、自动化系统、数控机床等行业中。安川伺服系统采用先进的控制技术、传感器技术和电机技术,能够稳定、精准地执行各种运动控制任务。以下是安川伺服电机及驱动器的应用......
  • 安川伺服驱动器SGDV-1R6AE1A002000
    安川驱动器工作原理一、工作原理安川驱动器是一种在工业生产过程中广泛使用的电子设备,主要用于控制和调节电机的运转。安川驱动器是由交流电源产生交流电信号,通过变频控制芯片将交流电信号转化为直流电信号,再通过逆变电路将直流电信号转化为可调频率和电压的交流电信号,最终控......
  • 安川伺服驱动器SGDV-200A01A002000
    安川驱动器工作原理一、工作原理安川驱动器是一种在工业生产过程中广泛使用的电子设备,主要用于控制和调节电机的运转。安川驱动器是由交流电源产生交流电信号,通过变频控制芯片将交流电信号转化为直流电信号,再通过逆变电路将直流电信号转化为可调频率和电压的交流电信号,最终控......
  • 02线性表 - 链表
    这里是只讲干货不讲废话的炽念,这个系列的文章是为了我自己以后复习数据结构而写,所以可能会用一种我自己能够听懂的方式来描述,不会像书本上那么枯燥和无聊,且全系列的代码均是可运行的代码,关键地方会给出注释^_^全文1W+字版本:C++17编译器:Clion2023.3.24暂时只给出代码,不会涉......
  • DC-2靶机通关
        最近一段时间我将会持续更新DC系列的靶机通关过程,大家如果也有正在玩儿这些靶机的可以关注一下作者,欢迎大家一起讨论学习!!!        1.实验环境:攻击机:kali2023.2靶机:DC-22.1扫描网段内的主机:2.2扫描靶机开放端口等信息:这里可以发现主机开放了两个端口一......
  • [Linux命令-网络和安全操作]
    目录Vim编辑器:网络网络配置ifconfig:netstat:wget:从指定的URL下载文件 网络安全 在Linux中,进行网络和安全操作时,我们先简单了解一下Vim编辑器Vim编辑器:vim编辑器有三种模式:命令模式、编辑模式、末行模式模式间切换方法:(1)命令模式下,输入:后,进入末行模式(2)末......
  • 关于安装李沐深度学习d2l包报错的解决办法(保姆教程)
    目录目录:d2l包安装失败的解决过程前言一、李沐提供的安装方式1.创建一个新的环境2.激活d2l环境3.安装深度学习框架和d2l软件包3.1安装PyTorch的CPU或GPU版本3.2安装d2l包二、安装报错三、解决办法四、检验是否安装成功尝试了很多方法都没有成功,知道看到这一篇介绍,故转载至......
  • alpha-beta六子棋博弈算法
                c语言Alpha-Beta剪枝算法六子棋   介绍Alpha-Beta剪枝算法是一种用于优化博弈树搜索的算法,可以在搜索过程中减少不必要的计算,从而提高搜索效率。该算法常用于博弈游戏,如六子棋。六子棋是一种类似于五子棋的棋类游戏,在一个六边形的棋盘......
  • docker-compose教程(安装,使用, 快速入门)
    docker-compose教程(安装,使用,快速入门)一、docker-compose介绍DockerCompose是一个用来定义和运行多个复杂应用的Docker编排工具。例如,一个使用Docker容器的微服务项目,通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢,一个个手动启动?假如有上百个微服务呢,显然不现......