首页 > 其他分享 >Vue 有哪些常用的指令

Vue 有哪些常用的指令

时间:2024-04-07 11:00:14浏览次数:26  
标签:Vue 哪些 app 语法 指令 key Document

目录

1. 指令 v-html

1.1. 作用

1.2. 语法

1.3. 练习

 2. 指令 v-show

2.1. 作用

2.2. 语法

3. 原理

4. 场景

 3. 指令 v-if

3.1. 作用

3.2. 语法

3.3. 原理

3.4. 场景

 4. 指令 v-else与 v-else-if

4.1. 作用

4.2. 语法

4.3. 注意

4.4. 使用场景

 5. 指令 v-on

5.1. 作用

5.2. 语法

5.3. 简写

5.4. 注意

6. 指令 v-bind 

6.1. 作用

6.2. 语法

6.3. 简写

6.4. 练习

7. 指令 v-for

7.1. 作用

7.2. 遍历数组语法

7.3. 省略index的写法

7.4. 练习

8. 指令 v-for 的key 

8.1. 语法

8.2. 作用

8.3. 注意点

8.4. v-for 中的 key - 不加 key

9. 指令 v-model 

9.1. 作用

9.2. 语法

9.3. 练习-登录页面


 

1. 指令 v-html

1.1. 作用

  • 设置元素的 innerHTML

动态解析标签

1.2. 语法

  • v-html = "表达式"

1.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>Document</title>
</head>
<body>

  <div id="app">
    <div v-html="msg"></div>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: `
          <a href="http://www.baidu.com">
            百度
          </a>
        `
      }
    })
  </script>

</body>
</html>

 

 2. 指令 v-show

2.1. 作用

  • 控制元素显示隐藏

2.2. 语法

  • v-show = "表达式" 表达式值 true 显示, false 隐藏

当为true时

当为false时

3. 原理

  • 切换 display:none 控制显示隐藏

v-show底层原理:切换 css 的 display: none 来控制显示隐藏

4. 场景

  • 频繁切换显示隐藏的场景

 

 3. 指令 v-if

3.1. 作用

  • 控制元素显示隐藏(条件渲染)

3.2. 语法

  • v-if = "表达式" 表达式值 true 显示, false 隐藏

当为true时

当为false时

3.3. 原理

  • 基于条件判断,是否 创建 或 移除 元素节点

v-if  底层原理:根据 判断条件 控制元素的 创建 和 移除(条件渲染)

3.4. 场景

  • 要么显示,要么隐藏,不频繁切换的场景

 

 4. 指令 v-else与 v-else-if

4.1. 作用

  • 辅助 v-if 进行判断渲染

4.2. 语法

  • v-else
  • v-else-if = "表达式"

4.3. 注意

  • 需要紧挨着 v-if 一起使用

4.4. 使用场景

v-else

<!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>Document</title>
</head>
<body>
  
  <div id="app">
    <p v-if="gender === 1">性别:♂ 男</p>
    <p v-else>性别:♀ 女</p>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        gender: 2
      }
    })
  </script>
</body>
</html>

v-else与v-else-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>Document</title>
</head>
<body>
  
  <div id="app">
    <p v-if="score >= 90">成绩评定A:奖励电脑一台</p>
    <p v-else-if="score >= 70">成绩评定B:奖励周末郊游</p>
    <p v-else-if="score >= 60">成绩评定C:奖励零食礼包</p>
    <p v-else>成绩评定D:惩罚一周不能玩手机</p>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        score: 95
      }
    })
  </script>
</body>
</html>

 

 5. 指令 v-on

5.1. 作用

  • 注册事件 = 添加监听 + 提供处理逻辑

5.2. 语法

  • 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>Document</title>
</head>
<body>

  <div id="app">
    <button @click="count--">-</button>
    <span>{{ count }}</span>
    <button v-on:click="count++">+</button>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        count: 100
      }
    })
  </script>
</body>
</html>
  • v-on : 事件名 = "methods中的函数名"

场景:逻辑复杂

<!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>Document</title>
</head>
<body>

  <div id="app">
    <button @click="fn">切换显示隐藏</button>
    <h1 v-show="isShow">Hello,Vue2</h1>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        isShow: true
      },
      methods: {
        fn () {
          //methods函数内的 this 指向 Vue 实例---this.isShow === app.isShow
          this.isShow = !this.isShow
        }
      }
    })
  </script>
</body>
</html>

5.3. 简写

  • v-on : === @事件名

5.4. 注意

  • methods函数内的 this 指向 Vue 实例

 

6. 指令 v-bind 

6.1. 作用

  • 动态的设置html的标签属性 → src url title ...

6.2. 语法

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

6.3. 简写

  • v-bind : 属性名 === : 属性名

6.4. 练习

<!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>Document</title>
</head>
<body>

  <div id="app">
    <img :src="imgUrl" :title="msg" alt="">
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        imgUrl: './imgs/10-02.png',
        msg: 'hello 波仔'
      }
    })
  </script>
</body>
</html>

 

7. 指令 v-for

7.1. 作用

  • 基于数据循环, 多次渲染整个元素 → 数组、对象、数字...

7.2. 遍历数组语法

  • v-for = "(item, index) in 数组"

item 每一项

index 下标

数组有多少项,就遍历多少次

7.3. 省略index的写法

  • v-for = "item in 数组"

7.4. 练习

<!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>Document</title>
</head>
<body>

  <div id="app">
    <h3>小黑水果店</h3>
    <ul>
      <li v-for="(item, index) in list">
        {{ index }} - {{ item }}
      </li>
    </ul>

    <ul>
      <li v-for="item in list">
        {{ item }}
      </li>
    </ul>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        list: ['西瓜', '苹果', '鸭梨', '榴莲']
      }
    })
  </script>
</body>
</html>

 

8. 指令 v-for 的key 

8.1. 语法

  • key属性 = "唯一标识"

8.2. 作用

  • 给列表项添加的唯一标识。便于Vue进行列表项的正确排序复用

key作用:给元素添加的唯一标识

8.3. 注意点

  • key 的值只能是 字符串 或 数字类型
  • key 的值必须具有 唯一性
  • 推荐使用 id 作为 key(唯一),不推荐使用 index 作为 key(会变化,不对应)

8.4. v-for 中的 key - 不加 key

  • v-for 的默认行为会尝试 原地修改元素 (就地复用)

 

 

9. 指令 v-model 

9.1. 作用

  • 给 表单元素 使用, 双向数据绑定 → 可以快速 获取 或 设置 表单元素内容

数据变化 → 视图自动更新

视图变化 → 数据自动更新

9.2. 语法

  • v-model = '变量'

9.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>Document</title>
</head>
<body>

  <div id="app">
    <!-- 
      v-model 可以让数据和视图,形成双向数据绑定
      (1) 数据变化,视图自动更新
      (2) 视图变化,数据自动更新
      可以快速[获取]或[设置]表单元素的内容
     -->
    账户:<input type="text" v-model="username"> <br><br>
    密码:<input type="password" v-model="password"> <br><br>
    <button @click="login">登录</button>
    <button @click="reset">重置</button>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        username: '',
        password: ''
      },
      methods: {
        login () {
          console.log(this.username, this.password)
        },
        reset () {
          this.username = ''
          this.password = ''
        }
      }
    })
  </script>
</body>
</html>

标签:Vue,哪些,app,语法,指令,key,Document
From: https://blog.csdn.net/m0_57184906/article/details/137440168

相关文章

  • 基于vue3的Crontab组件
    网上找的没有满意的,决定从若依前后端分离其前端vue2中的crontab进行转换,先上效果若依: 改后:  v2转v3没什么难度,其中有大量的将this.***替换为***.value,笔者写了个正则替换,希望可以帮助大家this.(\w+)$1.value 需要注意的有,在v2中【this.$refs[refName......
  • Vue input密码输入框自定义密码眼睛icon
    我们用的饿了么UI组件库里,密码输入框的icon是固定不变的,如下所示:点击"眼睛"这个icon不变,现在需求是UI给的设计稿里,密码输入框的"眼睛"有如下两种:代码如下:<el-input:key="passwordType"ref="password"......
  • 作为程序员的你,常用的工具软件有哪些?
    前言:现如今,技术发展十分迅猛,开发者只有通过不断的学习才能跟得上时代的步伐。而为了便于学习和工作(减少996),涌现了很多优秀且实用的开发工具用以帮助开发者提高工作效率。现在我把我工作多年来收集实用的开发利器分享出来,希望能够给同学们参考借鉴(以下排名不分先后)。假如各位同......
  • Docker常用指令
    Docker镜像常用命令搜索镜像dockersearchjava下载镜像dockerpulljava:8查看镜像版本dockersearch由于dockersearch命令只能查找出是否有该镜像,不能找到该镜像支持的版本,需要通过DockerHub来搜索支持的版本。进入DockerHub的官网,地址:https://hub.dock......
  • Docker学习笔记(三)Dockerfile指令详解
    文章目录FROM指定基础镜像RUN执行命令COPY复制文件ADD高级文件复制CMD容器启动命令ENTRYPOINT入口点ENV设置环境变量ARG构建参数VOLUME定义匿名卷EXPOSE声明端口WORKDIR指定工作目录USER指定当前用户HEALTHCHECK健康检查ONBUILD构建触发器LABEL添加元数据......
  • 04-A64指令集2——算术与移位指令
    本章思考题请简述N、Z、C、V这4个条件标志位的作用。答:如下表所示。条件标志位描述N负数标志(上一次运算结果为负值)Z零结果标志(上一次运算结果为零)C进位标志(上一次运算结果发生了无符号数溢出)V溢出标志(上一次运算结果发生了有符号数溢出)下面两条ADD......
  • Vue.js梳理({}语法与指令)
    一、原生APIvs函数库vs框架原生API浏览器/平台已实现的,可直接使用的原生函数问题:代码繁琐函数库(library)基于原生API基础上,进一步封装的,更简化的一组函数的集合框架(framework)前人将多次成功项目的经验总结,形成的帮成品项目优:后人继续开发即可,项目整体代码和做事......
  • 外贸主动获客软件有哪些?_外贸客户开发软件
    外贸主动获客软件旨在帮助出口企业积极寻找潜在客户、建立联系、跟踪线索以及管理销售过程。以下是一些常见的外贸主动获客软件:LinkedInSalesNavigator:功能:作为LinkedIn的专业销售工具,SalesNavigator提供强大的搜索过滤功能,使用户能够精准定位潜在客户、跟踪关键决策者,并......
  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(八)- 向量整数算术指令
     1.引言以下是《riscv-v-spec-1.0.pdf》文档的关键内容:这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量算术指令格式、向量整数和浮点算术指......
  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式
      1.引言以下是《riscv-v-spec-1.0.pdf》文档的关键内容:这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量算术指令格式、向量整数和浮点算术......