Vue中的常用指令

本文详细介绍了Vue.js中内容渲染指令(v-text和v-html)、条件渲染指令(v-show、v-if、v-else、v-else-if)以及事件绑定指令(v-on)的使用方法,包括它们的语法和在实际代码中的应用示例。

1. 内容渲染指令

内容渲染指令用来辅助开发者渲染 DOM 元素的文本内容。常用的内容渲染指令有如下2 个:

  • v-text(类似innerText)

    • 使用语法:<p v-text="uname">hello</p>,意思是将 uame 值渲染到 p 标签中

    • 类似 innerText,使用该语法,会覆盖 p 标签原有内容

  • v-html(类似 innerHTML)

    • 使用语法:<p v-html="intro">hello</p>,意思是将 intro 值渲染到 p 标签中

    • 类似 innerHTML,使用该语法,会覆盖 p 标签原有内容

    • 类似 innerHTML,使用该语法,能够将HTML标签的样式呈现出来。

代码演示:

  <div id="app">
    <h2>个人信息</h2>
	// 既然指令是vue提供的特殊的html属性,所以咱们写的时候就当成属性来用即可
    <p v-text="uname">姓名:</p> 
    <p v-html="intro">简介:</p>
  </div> 

<script>
        const app = new Vue({
            el:'#app',
            data:{
                uname:'张三',
                intro:'<h2>这是一个<strong>非常优秀</strong>的boy<h2>'
            }
        })
</script>

 

2.条件渲染指令

条件判断指令,用来辅助开发者按需控制 DOM 的显示与隐藏。条件渲染指令有如下两个,分别是:

  1. v-show

    1. 作用: 控制元素显示隐藏

    2. 语法: v-show = "表达式" 表达式值为 true 显示, false 隐藏

    3. 原理: 切换 display:none 控制显示隐藏

    4. 场景:频繁切换显示隐藏的场景

  2. v-if

    1. 作用: 控制元素显示隐藏(条件渲染)

    2. 语法: v-if= "表达式" 表达式值 true显示, false 隐藏

    3. 原理: 基于条件判断,是否创建 或 移除元素节点

    4. 场景: 要么显示,要么隐藏,不频繁切换的场

    示例代码:

 <div id="app">
    <div class="box">我是v-show控制的盒子</div>
    <div class="box">我是v-if控制的盒子</div>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        flag: false
      }
    })
  </script>
  1. v-else 和 v-else-if

    1. 作用:辅助v-if进行判断渲染

    2. 语法:v-else v-else-if="表达式"

    3. 需要紧接着v-if使用

示例代码:

 <div id="app">
    <p>性别:♂ 男</p>
    <p>性别:♀ 女</p>
    <hr>
    <p>成绩评定A:奖励电脑一台</p>
    <p>成绩评定B:奖励周末郊游</p>
    <p>成绩评定C:奖励零食礼包</p>
    <p>成绩评定D:惩罚一周不能玩手机</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,
        score: 95
      }
    })
  </script>

 

事件绑定指令

使用Vue时,如需为DOM注册事件,及其的简单,语法如下:

  • <button v-on:事件名="内联语句">按钮</button>

  • <button v-on:事件名="处理函数">按钮</button>

  • <button v-on:事件名="处理函数(实参)">按钮</button>

  • v-on: 简写为 @

  1. 内联语句

<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>
  1. 事件处理函数

    注意:

    • 事件处理函数应该写到一个跟data同级的配置项(methods)中

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

<div id="app">
    <button>切换显示隐藏</button>
    <h1 v-show="isShow">黑马程序员</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
      }
    })
  </script>

3.给事件处理函数传参

  • 如果不传递任何参数,则方法无需加小括号;methods方法中可以直接使用 e 当做事件对象

  • 如果传递了参数,则实参 $event 表示事件对象,固定用法。

 <style>
    .box {
      border: 3px solid #000000;
      border-radius: 10px;
      padding: 20px;
      margin: 20px;
      width: 200px;
    }
    h3 {
      margin: 10px 0 20px 0;
    }
    p {
      margin: 20px;
    }
  </style>

 <div id="app">
    <div class="box">
      <h3>小黑自动售货机</h3>
      <button>可乐5元</button>
      <button>咖啡10元</button>
      <button>牛奶8元</button>
    </div>
    <p>银行卡余额:{{ money }}元</p>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        money: 100
      }
    })
  </script>

<think>好的,我现在需要回答用户关于Vue.js框架中常用指令及其用法的问题。首先,我要回忆一下Vue.js的核心指令有哪些,并确保自己对这些指令的理解是正确的。 首先,用户提到了常用指令,所以应该包括v-bind、v-model、v-on、v-for、v-if、v-show、v-html、v-text这些基本的。然后,我需要为每个指令提供一个简洁的解释,并给出示例代码,这样用户能更直观地理解。 接下来,根据系统级指令的要求,所有的行内数学表达式要用$...$,但这里的问题是关于Vue.js指令,可能不太涉及数学公式,不过需要注意是否有需要用到的地方。例如,在解释某些概念时,如果有变量或表达式,可能需要使用,但暂时看起来可能不需要。不过还是需要检查是否有遗漏。 独立公式需要单独成段,但同样,这个问题可能不涉及数学公式,所以可能用不上。接着要确保LaTeX语法正确,但这里可能不需要用到LaTeX,因为主要是代码示例。 用户要求用中文回答,所以要保持语言的中文。生成相关问题部分,需要根据内容提出几个相关问题,比如指令的区别、最佳实践、动态绑定等。 现在开始组织内容。首先介绍Vue.js指令系统,然后列出常用指令,每个指令用标题,比如“1. v-bind: 动态绑定属性”,然后解释用途,给出示例代码,并可能结合引用中的信息,比如引用[5]提到的渐进式设计,可以提到v-bind如何帮助逐步整合。 例如,v-model是双向数据绑定的,用于表单元素,可以结合引用[5]提到的视图层处理。v-for用于列表渲染,可能需要提到性能考虑,比如key的重要性,这里引用[5]提到的与其他库整合的可能。 然后,注意事项部分,比如避免v-ifv-for一起使用,key的重要性,v-html的安全问题。这些点需要准确,避免误导用户。 在生成相关问题的时候,要基于用户可能对指令的深入使用或常见问题,比如区别v-ifv-show,动态参数的使用,指令的最佳实践,如何自定义指令等。 检查引用中的内容,引用[5]提到了Vue的渐进式设计,可能可以联系到指令的使用如何简化开发。其他引用可能不太相关,但如果有合适的点可以引用,比如前端工具开发(引用[1])可能提到指令在构建工具中的应用,但可能不太直接相关,暂时可能不引用。 最后确保回答结构清晰,分点说明,每个指令有示例代码,代码用正确的格式,使用三个反引号包裹,并标明语言是html。同时,在注意事项部分,自然地添加引用标识,比如在提到渐进式设计时引用[5]。 现在需要确认是否有遗漏的指令,或者是否有过时的信息。比如,Vue 3是否有变化?但用户可能问的是常用指令,可能不涉及版本差异,除非特别指出。这里假设是Vue 2的常用指令,因为Vue 3的指令大部分保持一致。 总结,回答的结构应该是: 1. 引言 2. 常用指令分点说明,每个指令名称、用途、示例 3. 注意事项,结合引用 4. 相关问题 现在开始撰写正式回答,确保符合所有要求。</think>### Vue.js 常用指令及其使用方法 Vue.js 通过指令(Directives)扩展了 HTML 的功能,使开发者能够更高效地实现数据绑定、事件处理动态渲染。以下是常用指令及其用法: --- #### 1. **`v-bind`: 动态绑定属性** - **用途**:将数据绑定到 HTML 元素的属性(如 `href`、`class`、`style`)。 - **示例**: ```html <a v-bind:href="url">链接</a> <!-- 简写 --> <a :href="url">链接</a> ``` - **动态参数**: ```html <div :[attributeName]="value"></div> ``` --- #### 2. **`v-model`: 双向数据绑定** - **用途**:在表单元素(如 `<input>`、`<select>`)上实现双向数据绑定。 - **示例**: ```html <input v-model="message" placeholder="输入内容"> <p>输入的内容是:{{ message }}</p> ``` - **修饰符**: - `.lazy`:监听 `change` 事件而非 `input`。 - `.trim`:自动去除首尾空格。 --- #### 3. **`v-on`: 事件监听** - **用途**:监听 DOM 事件(如点击、键盘输入)。 - **示例**: ```html <button v-on:click="handleClick">点击</button> <!-- 简写 --> <button @click="handleClick">点击</button> ``` - **事件修饰符**: - `.stop`:阻止事件冒泡。 - `.prevent`:阻止默认行为。 --- #### 4. **`v-for`: 列表渲染** - **用途**:基于数组或对象渲染列表。 - **示例**: ```html <ul> <li v-for="(item, index) in items" :key="item.id">{{ index }} - {{ item.name }}</li> </ul> ``` - **关键点**:必须为每项添加唯一 `key` 以优化渲染性能[^5]。 --- #### 5. **`v-if` / `v-else-if` / `v-else`: 条件渲染** - **用途**:根据条件动态渲染或销毁元素。 - **示例**: ```html <div v-if="score >= 90">优秀</div> <div v-else-if="score >= 60">及格</div> <div v-else>不及格</div> ``` --- #### 6. **`v-show`: 显示/隐藏元素** - **用途**:通过 CSS `display` 属性控制元素可见性。 - **示例**: ```html <div v-show="isVisible">显示内容</div> ``` --- #### 7. **`v-html`: 渲染原始 HTML** - **用途**:将字符串解析为 HTML(需注意 XSS 风险)。 - **示例**: ```html <div v-html="rawHtml"></div> ``` --- #### 8. **`v-text`: 绑定文本内容** - **用途**:等价于 `{{ }}`,但会覆盖元素内原有内容- **示例**: ```html <span v-text="message"></span> ``` --- ### **注意事项** 1. **避免 `v-if` 与 `v-for` 共用**:Vue 会优先执行 `v-for`,可能导致逻辑错误。 2. **`v-if` vs `v-show`**:`v-if` 是条件渲染(销毁元素),`v-show` 是切换显示(保留 DOM)。 3. **`v-html` 的安全性**:避免直接渲染用户输入的内容,防止 XSS 攻击。 4. **渐进式整合**:Vue指令系统支持逐步增强现有项目,例如通过 `v-bind` 动态绑定样式或类名[^5]。 --- §§ 相关问题 §§ 1. `v-if` `v-show` 在性能上有何区别? 2. 如何在 Vue.js 中实现动态组件切换? 3. Vue 3 对指令语法有哪些改进? 4. 如何自定义 Vue 指令? 5. 为什么使用 `v-for` 时必须绑定 `key`?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值