Vue的学习 —— <vue指令>

目录

前言

正文

内容渲染指令

内容渲染指令的使用方法

v-text

v-html

属性绑定指令

双向数据绑定指令

事件绑定指令

条件渲染指令

循环列表渲染指令

侦听器


前言

在完成Vue开发环境的搭建后,若想将Vue应用于实际项目,首要任务是学习Vue的基础知识。只有掌握了Vue框架的核心知识,我们才能依据实际需求,游刃有余地进行项目开发。接下来详细Vue开发的基础知识。

正文

内容渲染指令

内容渲染指令用于渲染DOM元素的内容。常见的内容渲染指令如下:

  • v-text:v-text用于渲染DOM元素的文本内容,如果文本内容中包含HTML标签,那么浏览器不会对其进行解析。v-text的语法格式如下:

    <标签名 v-text="数据名"></标签名>
  • v-html:在使用Vue进行内容渲染时,如果内容中包含HTML标签并且希望这些标签被浏览器解析,则可以使用v-html。v-html用于渲染DOM元素的HTML内容,其用法与v-text相似。v-html的语法格式如下:

    <标签名 v-html="数据名"></标签名>

内容渲染指令的使用方法

下面演示内容渲染指令的使用方法:

v-text

  1. 创建src\components\VTextDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
        <div v-text="message"></div>
    </template>
    <script setup>
        const message = '<span>盛年不重来,一日难再晨</span>'
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VTextDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,页面打开后效果如下图所示:

v-html

  1. 创建src\components\VHtmlDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
        <div v-html="message"></div>
      </template>
      <script setup>
      const message = '<strong>盛年不重来,一日难再晨</strong>'
      </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VHtmlDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,页面打开后效果如下图所示

属性绑定指令

在Vue开发中,有时需要绑定DOM元素的属性,从而更好地控制属性的值,此时可以使用属性绑定指令v-bind来实现。v-bind的语法格式如下:

<标签名 v-bind:属性名="数据名"></标签名>
<!-- v-bind还支持将属性与字符串拼接表达式绑定,示例代码如下。-->
<div :id="'list' + index"></div>

下面演示v-bind的使用方法:

  1. 创建src\components\VBindDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
      <p><input type="text" v-bind:placeholder="username"></p>
      <p><input type="password" v-bind:placeholder="password"></p>
    </template>
    <script setup>
      const username = '请输入您的用户名'
      const password = '请输入您的密码'
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VBindDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,页面打开后效果如下图所示:

双向数据绑定指令

Vue为开发者提供了v-model指令来实现双向数据绑定,使用它可以在input、textarea和select元素上创建双向数据绑定,它会根据使用的元素自动选取对应的属性和事件组合,负责监听用户的输入事件并更新数据。

v-model内部会为不同的元素绑定不同的属性和事件,具体如下:

  • textarea元素和text类型的input元素绑定value属性和input事件,意味着用户输入的内容将实时反映在元素的value属性上,同时input事件也会被触发

  • checkbox类型的input元素和radio类型的input元素与checked属性和change事件绑定,当用户选择或取消选择这些元素时,checked属性将更新,并触发change事件。

  • select元素绑定value属性和change事,当用户从下拉列表中选择一个选项时,该选项的值将更新元素的value属性,并触发change事件

v-model的语法格式如下:

<标签名 v-model="数据名"></标签名>

下面演示v-modell实现输入框的值与变量保持同步:

  1. 创建src\components\VModelDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
      请输入姓名:<input type="text" v-model="username">
      <div>姓名是:{{ username }}</div>
    </template>
    <script setup>
    import { ref } from 'vue'
    const username = ref('zhangsan')
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VModelDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,页面打开后初始效果如下图所示:

  4. 在输入框中输入“李四”后,页面效果如下图所示:

事件绑定指令

在Vue开发中,有时需要给DOM元素绑定事件,从而利用事件实现交互效果,这时可以利用事件绑定指令v-on来实现。v-on的语法格式如下:

<标签名 v-on:事件名="事件处理器"></标签名>

在上述语法格式中,事件名即DOM中的事件名,例如click、input、keyup等;事件处理器可以是方法名或内联JavaScript语句。如果逻辑复杂,事件处理器建议使用方法名,方法需要在<script>标签中定义;如果逻辑简单,只有一行代码,则可以使用内联JavaScript语句。另外,v-on还有简写形式,可以将“v-on:事件名”简写为“@事件名”。

下面演示v-on指令的使用方法:

  1. 创建src\components\VOnDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
      <button @click="printInfo">输出信息</button>
    </template>
    <script setup>
    const printInfo = () => {
      console.log('Hello World!!!')
    }
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VOnDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,按F12打开调试控制台,打开后初始效果如下图所示:

  4. 点击“输出信息”按钮,控制台效果如下图所示:

条件渲染指令

在Vue中,当需要根据不同的判断结果显示不同的DOM元素时,可以通过条件渲染指令来实现。条件渲染指令可以辅助开发者按需控制DOM元素的显示与隐藏。条件渲染指令如下:

  • v-if:根据布尔值切换元素的显示或隐藏状态,本质是通过操作DOM元素来切换显示状态

    • 当给定的值为true时,元素存在于DOM树中

    • 当给定的值为false时,元素从DOM树中移除

  • v-show:v-show与v-if都用来决定某一个元素是否在页面上显示出来。v-show的原理是通过为元素添加或移除display: none样式来实现元素的显示或隐藏。当需要频繁切换某个元素的显示或隐藏时,使用v-show会更节省性能开销;而当只需要切换一次显示或隐藏时,使用v-if更合理。

下面演示条件渲染指令的用法:

  1. 创建src\components\ConditionDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
     小明的学习评定等级为:
      <p v-if="type === 'A'">优秀</p>
      <p v-else-if="type === 'B'">良好</p>
      <p v-else>差</p>
      <button @click="type = 'A'">切换成优秀</button>
      <button @click="type = 'B'">切换成良好</button>
      <button @click="type = 'C'">切换成差</button>
      <p v-if="flag">通过v-if控制的元素</p>
      <p v-show="flag">通过v-show控制的元素</p>
      <button @click="flag = !flag">显示/隐藏</button>
    </template>
    <script setup>
    import { ref } from 'vue'
    const type = ref('B')
    const flag = ref(true)
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/ConditionDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,点击页面中的按钮,观察页面变化情况,如下图所示:

循环列表渲染指令

例如在开发购物应用时,为了方便用户查找商品信息,通常会以商品列表的形式展示商品信息。在商品列表中,每件商品的结构都是相同的,如果每件商品的结构都要手动定义,会非常麻烦。为此,Vue提供了列表渲染指令v-for。开发者只需在模板中定义一件商品的结构,v-for便会根据开发者提供的数据自动渲染商品列表中所有的商品。

使用v-for(根据list数组中的元素)渲染列表后,当在list数组中删除一个元素后,index会发生变化,v-for会重新渲染列表,导致性能下降。为了给v-for一个提示,以便它能跟踪每个节点的身份,从而对现有元素进行重用和重新排序,建议通过key属性为列表中的每一项提供具有唯一性的值,示例代码如下:

<div v-for="item in items" :key="item.id"></div>

下面演示v-for指令用法:

  1. 创建src\components\VForDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
        <div v-for="(item, index) in list" :key="index">
          索引:{{ index }} --- 元素的内容是:{{ item }}
        </div>
      </template>
      <script setup>
      import { reactive } from 'vue'
      const list = reactive(['HTML', 'CSS', 'JavaScript'])
      </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/VForDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,页面效果如下图所示:

侦听器

在Vue中,开发者可以自定义方法来进行数据的更新操作,但是不能自动监听数据的状态。如果想在数据更新后自动进行相应的操作,可以通过侦听器来实现。

侦听器通过watch()函数定义,watch()函数的语法格式如下:

watch(侦听器的来源, 回调函数, 可选参数)

watch()函数有3个参数,下面对这3个参数分别进行讲解:

第1个参数是侦听器的来源,侦听器的来源可以有以下4种。

  • 一个函数,返回一个值

  • 一个响应式数据

  • 一个响应式对象

  • 一个由以上类型的值组成的数组

第2个参数是数据发生变化时要调用的回调函数,这个回调函数的

第1个参数表示新值,即数据发生变化后的值,

第2个参数表示旧值,即数据发生变化前的值。

第3个参数是可选参数,它是一个对象,该对象有以下2个常用选项。

  • deep:默认情况下,当侦听一个对象时,如果对象中的属性值发生了变化,则无法被监听到。如果想监听到,可以将该选项设为true,表示进行深度监听。该选项的默认值为false,表示不使用该选项。

  • immediate:默认情况下,组件在初次加载完毕后不会调用侦听器的回调函数,如果想让侦听器的回调函数立即被调用,则需要将选项设为true。该选项的默认值为false,表示不使用该选项。

下面演示watch函数的用法:

  1. 创建src\components\WatchDemo.vue文件用于存放演示代码,写入如下代码:

    <template>
        <input type="text" v-model="cityName">
    </template>
    <script setup>
    import { watch, ref } from 'vue'
    const cityName = ref('beijing')
    watch(cityName, (newVal, oldVal) => {
        console.log(newVal, oldVal)
    })
    </script>
  2. 修改src\main.js文件,切换页面中显示的组件

    import App from './components/WatchDemo.vue'
  3. 保存代码,使用浏览器访问http://127.0.0.1:5173/,打开开发者控制台,任意输入框内容,观察控制台变化,页面效果如下图所示:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内存屏障 - LINUX KERNEL MEMORY BARRIERS 上 与 下

内存屏障&#xff08;Memory Barrier&#xff09;是在计算机体系结构中使用的一种同步机制&#xff0c;用于确保在多线程或多核处理器环境中&#xff0c;对共享内存的操作按照预期顺序进行。它们通过强制在特定点执行一些指令来规定内存访问的顺序&#xff0c;并防止内存乱序执…

干货分享:AI知识库-从认识到搭建

随着知识库的出现&#xff0c;人工智能也逐渐加入进来&#xff0c;形成了“AI知识库”。也许将AI和知识库拆开&#xff0c;你能理解是什么意思&#xff0c;但是当两个词结合在一起时&#xff0c;你又真的能理解它是做什么的吗&#xff1f;这就是今天我们要来聊的话题&#xff0…

未来互联网:Web3的技术革新之路

引言 随着技术的不断发展和社会的日益数字化&#xff0c;互联网作为信息交流和社交媒介的重要平台已经成为我们生活中不可或缺的一部分。然而&#xff0c;传统的互联网架构在数据安全、隐私保护和去中心化等方面存在着诸多挑战。为了解决这些问题&#xff0c;Web3技术应运而生…

【PB案例学习笔记】-01创建应用、窗口与控件

写在前面 这是PB案例学习笔记系列文章的第一篇&#xff0c;也是最基础的一篇。后续文章中【创建程序基本框架】部分操作都跟这篇文章一样&#xff0c; 将不再重复。该系列文章是针对具有一定PB基础的读者&#xff0c;通过一个个由浅入深的编程实战案例学习&#xff0c;提高编…

uniapp编译H5解决ios的border-radius失效问题,以及ios满屏显示不全的问题

1.解决方案 .card-itemA {width: 650rpx;height: 326rpx;box-shadow: 0rpx 0rpx 30rpx 14rpx rgba(236, 235, 236, 0.25);background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);border-radius: 60rpx;overflow: hidden;// 兼容ios的圆角问题transfor…

Centos7 配置 DNS服务器

Centos 7 配置DNS服务器 环境描述&#xff1a; 一台服务器和一台用于测试的客户机 服务器IP&#xff1a;192.168.200.132 客户机IP&#xff1a;192.168.200.143 服务器配置 yum install bind bind-utils -y #安装软件包vim /etc/named.conf //编辑named主配置文件listen-on p…

d18(169-174)-勇敢开始Java,咖啡拯救人生

目录 特殊文件 .properties 属性文件 读取属性文件 写出属性文件 .xml XML文件 读取XML文件 ​编辑 写出XML文件 约束XML文件 日志技术 Logback 日志级别 特殊文件 .properties 属性文件 每行都是一个键值对 键不能重复 文件后缀一般是.properties 读取属性文件 …

LeetCode 力扣题目:买卖股票的最佳时机 IV

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

华为手机恢复出厂设置后怎么还原数据?该如何预防数据丢失?

华为手机恢复出厂设置是将手机恢复到出厂时的初始状态&#xff0c;同时会删除所有用户数据和个人设置。如果不做任何预防措施&#xff0c;在恢复出厂设置后&#xff0c;您将丢失手机上的所有数据。那华为手机恢复出厂设置后怎么还原数据呢&#xff1f;以下是关于如何在华为手机…

Mac下安装ffmpeg

1、安装gedit brew install gedit2、配置环境变量&#xff0c;打开~/.zshrc&#xff0c;在末尾添加语句 export PATH$PATH:/usr/local/ffmpeg/bin3、执行语句&#xff0c;使环境变量生效 source ~/.zshrc 4、终端输入 ffmpeg &#xff0c;看环境变量是否配置成功。 至此&a…

c++高级篇(一) —— 初识Linux下的进程控制

linux的信号 信号的概念 在Linux中&#xff0c;信号是一种用于进程间通信和处理异步事件的机制&#xff0c;用于进程之间相互传递消息和通知进程发生了事件&#xff0c;但是&#xff0c;它不能给进程传递任何数据。 信号产生的原因有很多种&#xff0c;在shell中&#xff0c…

栈和队列的基础知识,C语言实现及经典OJ题

题目来源&#xff1a;力扣 基础知识 一.栈 1.栈的概念 定义&#xff1a;堆栈又名栈&#xff08;stack&#xff09;&#xff0c;它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶&#xff0c;相对地&#xff0c;把另一端称为栈底。 压…

【数据结构】栈和队列OJ面试题

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;由于C语言没有栈的接口&#xff0c;所以我们需要自己造一个“模子”。我们直接copy之前的实现的栈的接口就可以了&#xff08;可以看我之前的博客【数据结构】栈和队列-CSDN博客copy接口&#xff09;&…

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析 起因 最近在学习安全协议&#xff0c;大多数实验都是基于Windows下IIS&#xff0c;或者Linux下nginx搭建的Web服务&#xff0c;搭建环境和编写配置文件比较麻烦。而且我有多个不同环境的设备&#xff0c;折腾起来…

Hive-拉链表的设计与实现

Hive-拉链表的设计与实现 在Hive中&#xff0c;拉链表专门用于解决在数据仓库中数据发生变化如何实现数据存储的问题。 1.数据同步问题 Hive在实际工作中主要用于构建离线数据仓库&#xff0c;定期的从各种数据源中同步采集数据到Hive中&#xff0c;经过分层转换提供数据应用…

计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目主要包括&#xff1a;物体表面缺陷检测技术项目介绍&#xff0c;数据构造&#xff0c;模型介绍。 物体表面缺陷检测技术是工业自动化…

四川汇聚荣:做拼多多网点需要具备什么能力?

做拼多多网点需要具备什么能力?这个问题对于想要在电商平台上开店的商家来说&#xff0c;是必须要了解的。拼多多作为国内领先的社交电商平台&#xff0c;吸引了众多商家入驻。那么&#xff0c;要想在拼多多上开网店&#xff0c;需要具备哪些能力呢?下面就从四个方面进行详细…

Android Cursor与Adapter结合使用

查询数据库均会把查询的结果包装在一个Cursor的子类对象中返回。Cursor就像是位于结果集之上的一个游标&#xff0c;可以对结果集进行向前、向后或随机的访问。而Cursor本身是一个接口类&#xff0c;提供了对结果集访问的一些抽象方法&#xff0c;根据功能的不同在其子类有着不…

Python | Leetcode Python题解之第88题合并两个有序数组

题目&#xff1a; 题解&#xff1a; class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"""Do not return anything, modify nums1 in-place instead."""p1, p2 m - 1, n - 1tail m n - 1whi…

elasticsearch 动态映射

文章目录 动态映射动态映射的弊端静态映射实战&#xff1a;映射创建后还可以更新吗 动态映射 动态映射的核心是在自动检测字段类型后添加新字段 哪些字段类型支持动态检测呢&#xff1f; 答&#xff1a;boolean类型、float类型、long类型、Object类型、Array类型、date类型、…