【Vue】Vue指令

目录

概念

作用

分类

内容渲染指令

属性绑定指令

事件绑定指令

条件渲染指令

v-if/v-else-if/v-else多分支渲染 

v-show和v-if的区别 

列表渲染指令

v-for中的key属性 

双向绑定指令 

示例:图片切换

示例:可折叠面板

示例:书架列表


概念

作用在标签上,以v-开头的属性,是vue提供的一种特殊语法

作用

增强标签渲染数据的能力

分类

  1. 内容渲染指令:作用类似于插值,把表达式的结果渲染到双标签
  2. 属性绑定指令:把表达式的值于标签的属性动态绑定
  3. 事件绑定指令:用来于标签进行事件绑定,处理用户交互
  4. 条件渲染指令:根据表达式的true或false,决定标签是否展示
  5. 列表渲染指令:基于数组循环生成一套列表
  6. 双向绑定指令:数据与视图相互影响

内容渲染指令

  • v-html="表达式",会解析标签,类似于innerHtml
  • v-text="表达式",不会解析标签,作用与{{表达式}}一样

使用示例:

<template><p v-html="str"></p><p v-text="str"></p>
</template><script setup>import { ref } from 'vue'const str=ref('<span style="color:red">Hello World</span>')
</script>

效果如下:

属性绑定指令

v-bind用于把vue表达式的值与标签的属性动态绑定。

语法:

v-bind:属性名="表达式"

简写:

:属性名=“表达式” 

代码: 

<template><div title="{{ str }}">hello-1</div><div v-bind:title=" str ">hello-2</div>
</template><script setup>import { ref } from 'vue'const str=ref('paragraph')
</script>

效果:

如下便是使用v-bind绑定标签属性和不使用直接使用插值的区别:

事件绑定指令

v-on可以简写@

作用:与DOM元素进行事件绑定/处理

语法:

第一种:

v-on:事件名=“内联代码”

<template>
<div><p>{{ count }}</p><button v-on:click="count++">+1</button>
</div>
</template><script setup>import { ref } from 'vue'   const count=ref(0)
</script>

第二种:

v-on:事件名=“处理函数”

<template>
<div><p>{{ count }}</p><button v-on:click="increce">+1</button>
</div>
</template><script setup>import { ref } from 'vue'   const count=ref(0)const increce = () => {count.value++}
</script>

第三种:

v-on:事件名=“处理函数(实参列表)”

条件渲染指令

v-show和v-if/v-else-if/v-else

作用:

根据vue表达式值是true还是false,决定某个元素是显示还是隐藏

语法:

v-show="布尔表达式"

v-if="布尔表达式" 

<button v-show="false">+1</button>

v-if/v-else-if/v-else多分支渲染 

    <div v-if="mark >= 85">优秀</div><div v-else-if="mark >= 75">良好</div><div v-else-if="mark >= 60">及格</div><div v-else>不及格</div>

v-show和v-if的区别 

控制元素显示或隐藏的原理不同:

  • v-show:是通过控制元素css的display属性控制元素显示或隐藏的
  • v-if:是通过创建和插入元素或移除DOM元素控制元素显示或隐藏的

如果频繁的控制元素显示或者隐藏,推荐使用v-show,否则使用v-if

列表渲染指令

v-for作用:基于数组/对象/数字 循环生产列表

语法:

想循环谁,就给谁添加v-for

<li v-for="(值变量,下标变量) in 数组"> </li>  // ()括号可加可不加

使用示例:

<template>
<div><ul><li v-for="num,index in nums">{{ num }}=>{{ index }}</li></ul>
</div>
</template><script setup>import { ref } from 'vue'const nums=ref([11,22,33,44,55])
</script>

v-for中的key属性 

添加key属性,作用是提高vue再更新列表时的更新性能

语法:

:key="不重复的唯一值"

原理:vue内部尽可能保持DOM的复用 ,不去创建新的或更新DOM,加key且为id,通过key来标明当前元素是否发生了变化,如果key不变,vue直接复用之前的DOM.

key的类型:只能是数字或字符串

key的选用:首选id其次下标

如下:

未加key前,删除后,需要重新渲染如下标灰的地方

加key后

双向绑定指令 

v-model

所谓双向,就是数据和视图之间的关系,当数据变了,视图也会变(数据驱动视图的思想),当视图变了,数据也会变化。

作用:

经常用在表单元素上,比如输入框、下拉列表、单选框、复选框、文本框等

用于实现数据和标签value属性的双向绑定,进而可以快速收集表单数据

使用实例:

<template><div class="login-box">账户:<input type="text" v-model="loginForm.username" placeholder="Username">密码:<input type="password" v-model="loginForm.password" placeholder="Password"></div>
</template><script setup>
import { reactive } from 'vue'
const loginForm = reactive({username: '',password: ''
})
</script>

示例:图片切换

<script setup>import { ref } from 'vue'// 声明图片路径数组const imgList = ['https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-00.gif','https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-01.gif','https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-02.gif','https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-03.gif','https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-04.png','https://cxk-1305128831.cos.ap-beijing.myqcloud.com/11-05.png']
//声明响应式下标,初始值为0
const index = ref(0)
</script>
<template><div><button @click="index--" v-if="index>0">上一页</button></div><img :src="imgList[index]" alt="img" /><div><button @click="index++" v-if="index<imgList.length-1">下一页</button></div>
</template><style>
#app {display: flex;width: 500px;height: 240px;
}img {width: 240px;height: 240px;
}#app div {flex: 1;display: flex;justify-content: center;align-items: center;
}
</style>

示例:可折叠面板

<template><h3>可折叠面板</h3><div class="panel"><div class="title"><h4>自由与爱情</h4><span class="btn" v-on:click="flg=!flg">{{flg?'收起':'展开' }}</span></div><div class="container" v-show="flg"><p>生命诚可贵,</p><p>爱情价更高。</p><p>若为自由故,</p><p>两者皆可抛。</p></div></div>
</template><script setup>import { ref } from 'vue';const flg=ref(true);
</script><!-- 如果指明了lang="scss",项目运行不起来,需要安装sass模块,命令行执行:npm install sass -g 或者  pnpm add -D sass-embedded -->
<style lang="scss">body{background: #ddd;}#app{width:400px;margin: 20px auto;padding: 1em 2em 2em;border:4px solid green;border-radius: 1em;box-shadow: 3px 3px 3px rgba(0,0,0,0.5);background: #fff;h3{text-align: center;}}.panel{.title{display: flex;justify-content: space-between;align-items: center;border: 1px solid #ccc;padding:0 1em;h4{margin: 0;line-height: 2;}.btn{cursor: pointer;}}.container{border: 1px solid #ccc;padding:0 1em;}}
</style>

示例:书架列表

<template><h3>书架</h3><ul><li v-for="item,index in bookList"><span>{{ item.name }}</span><span>{{ item.author }}</span><button @click="onDel(index)">删除</button></li></ul>
<div></div>
</template><script setup>import { ref } from 'vue'const bookList = ref([{id:1,name:'红楼梦',author:'曹雪芹'},{id:2,name:'三国演义',author:'罗贯中'},{id:3,name:'西游记',author:'吴承恩'},{id:4,name:'水浒传',author:'施耐庵'},])const onDel = (index) => {if(window.confirm('确认删除该书籍吗?')){bookList.value.splice(index,1)}}
</script><style>#app{width: 400px;margin: 100px auto;}ul{list-style: none;}ul li{display: flex;justify-content: space-around;padding:10px 0;border-bottom: 1px solid #ccc;}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:类和对象(三)

1.深入了解构造函数 1.1初始化列表 引入&#xff1a;我们首先要知道&#xff0c;在类中我们是声明变量&#xff0c;在实例化的时候才是开空间&#xff0c;在调用构造函数的时候又分两段&#xff0c;一段是定义&#xff08;所有的成员变量进行定义&#xff09;&#xff0c;一段…

北京申请中级职称流程(2024年)

想找个完整详细点的申请流程资料真不容易&#xff0c;做个分享送给需要的人吧。 不清楚为什么说文章过度宣传&#xff0c;把链接和页面去掉了&#xff0c;网上自己找一下。 最好用windows自带的EDGE浏览器打开申请网站&#xff0c;只有在开始申请的时间内才可以进行网上申报&…

好用的js组件库

lodash https://www.lodashjs.com/https://www.lodashjs.com/ uuid 用于生成随机数&#xff0c;常用于生成id标识 GitHub - uuidjs/uuid: Generate RFC-compliant UUIDs in JavaScripthttps://github.com/uuidjs/uuid dayjs 常用于时间的处理 安装 | Day.js中文网 (fenxi…

php:使用socket函数创建WebSocket服务

一、前言 闲来无事&#xff0c;最近捣鼓了下websocket&#xff0c;但是不希望安装第三方类库&#xff0c;所以打算用socket基础函数创建个服务。 二、构建websocket服务端 <?phpclass SocketService {// 默认的监听地址和端口private $address 0.0.0.0;private $port 8…

Tailscale 自建 Derp 中转服务器(全程无 Docker + 无域名纯 IP 版本)

文章目录 整体大纲目的&#xff1a;为什么要建立 Derp 中转服务器云服务器安装 DerpDerp 中转服务器介绍安装 Go 环境通过 Go 安装 Derp处理证书文件自签一个域名给 Derp验证 Derp 是否启动 云服务器安装并登录 Tailscale第一种组合&#xff1a; 官方 Tailscale 账号 自己的 D…

shell--第一次作业

1.接收用户部署的服务名称 # 脚本入口 read -p "请输入要部署的服务名称&#xff1a;" service_name 2.判断服务是否安装 # 判断服务是否安装 if rpm -q "$service_name" &>/dev/null; then echo "服务 $service_name 已安装。" 已…

项目部署问题bug记录(长期更新)

一、编译相关 1.submodules/simple-knn/simple_knn.cu(90): error: identifier "FLT_MAX" is undefined me.minn { FLT_MAX, FLT_MAX, FLT_MAX }; 部署photoreg工程&#xff0c;在编译simple_knn的时候&#xff0c;报错&#xff1a; (photoreg) leelee…

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

影视后期学习Ⅰ~

1.DV是光盘 磁带 2.序列就是我们要制作的一个视频。 打开界面显示&#xff1a; 一号面板放的是素材&#xff0c;二号面板叫源监视器面板&#xff08;它的名字需要记住&#xff09;在一号面板点击文件之后&#xff0c;进入二号面板&#xff0c;在二号面板预览没问题后&#xf…

大语言模型---Llama模型文件介绍;文件组成

文章目录 1. 概要2. 文件组成 1. 概要 在使用 LLaMA&#xff08;Large Language Model Meta AI&#xff09;权重时&#xff0c;通常会涉及到与模型权重存储和加载相关的文件。这些文件通常是以二进制格式存储的&#xff0c;具有特定的结构来支持高效的模型操作。以下以Llama-7…

elasticsearch介绍和部署

1 elasticsearch介绍 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。可以很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性。Elasticsearch 的实现原理主要分为以下几个步骤&#xff0c;首先用户将数据提交到Elasticsea…

ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld

本工程实现调用ZYNQ-7000的内部ARM处理器&#xff0c;通过UART给电脑发送字符串。 硬件&#xff1a;正点原子领航者-7020 开发平台&#xff1a;Vivado 2018、 SDK 1 Vivado部分操作 1.1 新建工程 设置工程名&#xff0c;选择芯片型号。 1.2 添加和配置PS IP 点击IP INTEGR…

Jenkins更换主题颜色+登录页面LOGO图片

默认主题和logo图片展示 默认主题黑色和白色。 默认LOGO图片 安装插件 Login ThemeMaterial Theme 系统管理–>插件管理–>Available plugins 搜不到Login Theme是因为我提前装好了 没有外网的可以参考这篇离线安装插件 验证插件并修改主题颜色 系统管理–>A…

《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)

实验内容 实验二 编程实现进程&#xff08;线程&#xff09;同步和互斥 1&#xff0e;实验的目的 &#xff08;1&#xff09;通过编写程序实现进程同步和互斥&#xff0c;使学生掌握有关进程&#xff08;线程&#xff09;同步与互斥的原理&#xff0c;以及解决进程&#xf…

【倍数问题——同余系】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10, M 1e3 10; int maxx[M][4]; void consider(int r, int x) {if(x > maxx[r][1]){maxx[r][3] maxx[r][2];maxx[r][2] maxx[r][1];maxx[r][1] x;}else if(x > maxx[r][2]){maxx[…

结合第三方模块requests,文件IO、正则表达式,通过函数封装爬虫应用采集数据

#引用BeautifulSoup更方便提取html信息&#xff1b;requests模块&#xff0c;发生http请求&#xff1b;os模块&#xff0c;文件写入import requests from bs4 import BeautifulSoup import os#当使用requests库发送请求时&#xff0c;如果不设置User - Agent&#xff0c;默认的…

Linux虚拟机网络配置

Linux固定IP 跳转到 cd /etc/sysconfig/network-scripts/ 打开文件并编辑 vim ifcfg-ens33 增加或修改选中内容 重启网卡 systemctl restart network ifconfig -a 查看ip已固定 虚拟机网络编辑器调整 子网IP进行修改&#xff0c;例如本机IP修改为10.212.197.34 此处就修改…

CSS实现实现当文本内容过长时,中间显示省略号...,两端正常展示

HTML 结构解析 文档结构: <ul class"con">: 一个无序列表&#xff0c;包含多个列表项。 每个 <li class"wrap"> 表示一个列表项&#xff0c;内部有两个 <span> 元素&#xff1a; <span class"txt">: 显示文本内容。<…

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想&#xff1a;把待排序的数按照大小逐个插入到前面已经排序好的有序序列中&#xff0c;直到所有的都插入完为止&#xff0c;得到一个新的有序序列。 如图所示&#xff0c;当插入第i个&#xff08;i>1&#xff09;元素的时候&#xff0c;前面的arr[0]…

Qt:信号槽

一. 信号槽概念 信号槽 是 Qt 框架中一种用于对象间通信的机制 。它通过让一个对象发出信号&#xff0c;另一个对象连接到这个信号的槽上来实现通信。信号槽机制是 Qt 的核心特性之一&#xff0c;提供了一种灵活且类型安全的方式来处理事件和数据传递。 1. 信号的本质 QT中&a…