当前位置: 首页 > news >正文

vue - 内置指令

Vue3 提供了一系列内置指令,用于简化 DOM 操作和实现常见功能。这些指令以 v- 前缀开头,通常用于模板中,以下是详细分类及解析:

一、核心渲染指令

用于控制元素的渲染逻辑和数据绑定。

  1. v-text

    • 功能:更新元素的文本内容(相当于 textContent)。
    • 示例:
      <span v-text="message"></span>
      <!-- 等价于 -->
      <span>{{ message }}</span>
      
    • 特点:会覆盖元素原有的文本,而插值表达式 {{}} 只会替换占位符。
  2. v-html

    • 功能:将数据以 HTML 格式插入元素(相当于 innerHTML)。
    • 示例:
      <div v-html="rawHtml"></div>
      
    • 注意:动态渲染 HTML 存在 XSS 风险,仅用于可信内容,禁止用于用户输入。
  3. v-show

    • 功能:根据表达式的真假值,通过 CSS display 属性控制元素显示/隐藏。
    • 示例:
      <p v-show="isVisible">条件显示</p>
      
    • 特点:元素始终存在于 DOM 中,只是切换显示状态,适合频繁切换的场景。
  4. v-if / v-else-if / v-else

    • 功能:根据表达式的真假值,动态创建/销毁元素(条件渲染)。
    • 示例:
      <div v-if="type === 'A'">A</div>
      <div v-else-if="type === 'B'">B</div>
      <div v-else>Other</div>
      
    • 特点:会真实改变 DOM 结构,适合条件较少切换的场景;可与 <template> 配合实现多元素条件渲染。
  5. v-for

    • 功能:基于可迭代数据(数组、对象、字符串等)循环渲染元素。
    • 示例:
      <!-- 遍历数组 -->
      <li v-for="(item, index) in items" :key="index">{{ index }}: {{ item.name }}
      </li><!-- 遍历对象 -->
      <div v-for="(value, key) in user" :key="key">{{ key }}: {{ value }}
      </div>
      
    • 注意:必须使用 :key 绑定唯一标识,优化渲染性能并避免状态混乱。

二、事件处理指令

用于绑定 DOM 事件。

  1. v-on
    • 功能:绑定事件监听器,缩写为 @
    • 示例:
      <button v-on:click="handleClick">点击</button>
      <button @click="handleClick">点击(缩写)</button>
      
    • 扩展:
      • 支持事件修饰符:@click.stop(阻止冒泡)、@click.prevent(阻止默认行为)等。
      • 支持按键修饰符:@keyup.enter(回车键触发)。
      • 支持自定义事件:@custom-event="handleEvent"

三、属性绑定指令

用于绑定 HTML 属性或组件 props。

  1. v-bind
    • 功能:动态绑定一个或多个属性,缩写为 :
    • 示例:
      <!-- 绑定 HTML 属性 -->
      <img v-bind:src="imageUrl" :alt="imageAlt"><!-- 绑定 class -->
      <div :class="{ active: isActive, 'text-danger': hasError }"></div><!-- 绑定 style -->
      <div :style="{ color: textColor, fontSize: '16px' }"></div><!-- 绑定组件 props -->
      <ChildComponent :user="currentUser"></ChildComponent>
      
    • 特点:可绑定任意属性,表达式结果会被解析为属性值。

四、表单输入绑定指令

用于在表单元素和数据之间创建双向绑定。

  1. v-model
    • 功能:简化表单控件的双向数据绑定(本质是 v-bind + v-on 的语法糖)。
    • 支持元素:inputtextareaselect 等。
    • 示例:
      <input v-model="username" type="text">
      <textarea v-model="content"></textarea>
      <select v-model="selectedValue"><option value="1">选项1</option>
      </select>
      
    • 修饰符:
      • .trim:自动去除输入首尾空格。
      • .number:将输入转为数字类型。
      • .lazy:在 change 事件而非 input 事件触发时更新数据。

五、其他实用指令

  1. v-pre

    • 功能:跳过元素及其子元素的编译过程,直接渲染原始内容。
    • 示例:
      <div v-pre>{{ 这里的表达式不会被编译 }}</div>
      
    • 适用场景:展示包含 {{ }} 的原始文本,提升编译性能。
  2. v-cloak

    • 功能:在 Vue 实例编译完成前隐藏元素,避免未编译的模板闪烁。
    • 用法:
      [v-cloak] { display: none; }
      
      <div v-cloak>{{ message }}</div>
      
    • 原理:编译完成后,Vue 会自动移除 v-cloak 属性。
  3. v-once

    • 功能:元素或组件只渲染一次,后续数据变化不会重新渲染。
    • 示例:
      <div v-once>{{ message }}</div>
      
    • 适用场景:优化静态内容的渲染性能。

总结

Vue3 内置指令可分为以下几类:

  • 渲染控制v-textv-htmlv-showv-if/v-elsev-for
  • 事件处理v-on@
  • 属性绑定v-bind:
  • 表单绑定v-model
  • 性能/编译控制v-prev-cloakv-once

这些指令覆盖了日常开发的大部分场景,通过简化 DOM 操作,使开发者更专注于数据逻辑而非 DOM 细节。

http://www.wxhsa.cn/company.asp?id=4715

相关文章:

  • 东南大学数据库课程02-DataModel数据模型
  • Torch核心数据结构Tensor(张量)
  • vue - 进阶
  • 读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案
  • MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏
  • Playwright MCP浏览器自动化教程
  • 故障分析:ORA-00900 修改props$中字符集导致
  • 实用指南:Flask学习笔记(三)--URL构建与模板的使用
  • Ollama + Python 极简工作流
  • 快速搞定Dify+Chrome MCP:打造能操作网页的AI助手
  • HCIP——RSTP
  • ORA-01555系列:三、ORA-01555总结与高级优化建议
  • Unstable Twin - TryHackMe
  • 单片机实现挡位调节
  • 完整教程:从 WildCard 野卡到 gptplus.plus:一次解决 OpenAI 支付难题的实战复盘,轻松搞定Gpt充值
  • 阿里 Qoder 新升级,Repo Wiki 支持共享、编辑和导出
  • 长城杯WriteUp
  • vite取别名@
  • JavaScript数据网格方案AG Grid 34.2 发布:更灵活的数据结构、更流畅的大数据交互与全新 UI 体验
  • BOE(京东方)IPC电竞嘉年华盛典圆满收官 第三届无畏杯总决赛引领电竞生态发展热潮
  • P1886 滑动窗口 /【模板】单调队列
  • kingbase金仓数据库docker部署完整步骤
  • glTF/glb功能、应用和 5 个基本最佳实践
  • AI 应用开发,不就是调个接口么?
  • 95.费解的开关
  • godot4人物移动一段距离后随机旋转代码,(死循环)
  • Spotify 音乐ML练习数据集含158 个特征,11
  • abc423
  • AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡
  • 最新药物数据集下载:来自Drugs