vue常用指令

Vue 提供了多种常用指令,用于在模板中动态地绑定数据和操作元素。下面是一些常用指令的详细说明:

常用指令

  1. v-if:根据条件判断是否渲染元素。

    • 用法:v-if="expression"
    • 示例:
      <template><div><p v-if="isActive">Hello, Vue!</p><p v-else>Not authorized.</p></div>
      </template>
      
  2. v-for:循环渲染元素列表。

    • 用法:v-for="item in items"
    • 示例:
      <template><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li></ul>
      </template>
      
  3. v-bind:动态绑定属性或者组件的属性。

    • 用法:v-bind:attribute="expression" 或者 :attribute="expression"
    • 示例:
      <template><div><img :src="imageUrl" alt="Image" v-bind:style="{ width: imageWidth + 'px' }"></div>
      </template>
      
  4. v-on:绑定事件监听器。

    • 用法:v-on:event="handler" 或者 @event="handler"
    • 示例:
      <template><button @click="handleClick">Click me</button>
      </template>
      
  5. v-model:双向绑定表单元素的值。

    • 用法:v-model="data"
    • 示例:
      <template><div><input type="text" v-model="message"><p>{{ message }}</p></div>
      </template>
      
  6. v-show:根据条件判断是否显示元素。

    • 用法:v-show="expression"
    • 示例:
      <template><div><p v-show="isActive">Hello, Vue!</p></div>
      </template>
      

这些指令是 Vue 中常用的一些指令,可以根据不同的需求和场景选择合适的指令来操作元素和绑定数据。

v-if、v-else、v-else-if、v-show 等 区别 和优缺点

v-ifv-elsev-else-ifv-show 是 Vue 中常用的条件判断指令,它们有一些区别和各自的优缺点。

  1. v-if

    • 区别:根据表达式的值来决定是否渲染元素,如果表达式为假,则不渲染元素,并从 DOM 中移除。
    • 优点:在条件不满足时,可以减少 DOM 的操作,提高性能。
    • 缺点:在条件频繁切换时,会有较多的 DOM 操作,影响性能。
  2. v-else

    • 区别:必须紧跟在 v-if 指令后面,用于渲染 v-if 条件不满足时的内容。
    • 优点:简洁明了,易于理解和维护。
  3. v-else-if

    • 区别:必须紧跟在 v-ifv-else-if 指令后面,用于多个条件判断时的中间条件。
    • 优点:可以根据多个不同的条件进行判断。
  4. v-show

    • 区别:根据表达式的值来决定是否显示元素,如果表达式为假,则隐藏元素,但并不从 DOM 中移除。
    • 优点:在条件频繁切换时,不会有额外的 DOM 操作,性能相对较好。
    • 缺点:在隐藏元素时,仍然会占据 DOM 空间。

根据具体的场景和需求,选择适合的条件判断指令。如果条件不经常变化,且需要在条件满足时减少 DOM 操作,可以使用 v-if。如果条件经常变化,或者需要在条件不满足时展示备用内容,可以使用 v-showv-elsev-else-if 则用于处理多个条件判断的情况。

其它指令

除了上述提到的常用指令(v-ifv-elsev-else-ifv-showv-forv-bindv-onv-model),Vue 还提供了其他一些常用指令,如下所示:

  1. v-text:设置元素的文本内容,类似于 {{ expression }} 的简写形式。

    • 用法:v-text="expression"
    • 示例:<p v-text="message"></p>
  2. v-html:设置元素的 HTML 内容,可以渲染 HTML 标签。

    • 用法:v-html="expression"
    • 示例:<div v-html="htmlContent"></div>
  3. v-pre:跳过元素和其子元素的编译过程,直接输出原始内容。

    • 用法:<div v-pre>{{ message }}</div>
  4. v-cloak:用于解决初始化时显示模板表达式的问题,配合 CSS 样式隐藏元素直到 Vue 实例完成编译。

    • 用法:<div v-cloak>{{ message }}</div>
  5. v-once:只渲染元素和组件一次,后续的数据更新不会再重新渲染。

    • 用法:<p v-once>{{ message }}</p>
  6. v-slot:用于父组件向子组件传递内容,通常用于实现插槽功能。

    • 用法:<template v-slot:slotName>...</template>
    • 示例:<my-component><template v-slot:header>...</template></my-component>
  7. v-preload:预加载指令,用于在组件渲染前预加载资源。

    • 用法:<img v-preload="imageUrl">
  8. v-lazy:懒加载指令,用于延迟加载图片或其他资源。

    • 用法:<img v-lazy="imageUrl">

这些指令提供了更多的功能和灵活性,可以根据具体的需求选择合适的指令来操作元素和实现功能。

整个示例

以下是一个示例,展示了如何使用 Vue 的各种指令来实现不同的功能:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue Directives Example</title><style>.hidden {display: none;}</style>
</head>
<body><div id="app"><!-- v-if --><p v-if="showMessage">Hello, Vue!</p><!-- v-else --><p v-else>Goodbye, Vue!</p><!-- v-else-if --><p v-else-if="count === 0">Count is zero.</p><p v-else-if="count > 0">Count is positive.</p><p v-else>Count is negative.</p><!-- v-show --><p v-show="showMessage">This is a hidden message.</p><!-- v-for --><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li></ul><!-- v-bind --><img v-bind:src="imageUrl" alt="Image"><!-- v-on --><button v-on:click="incrementCount">Increment</button><!-- v-model --><input v-model="message" type="text"><!-- v-text --><p v-text="message"></p><!-- v-html --><div v-html="htmlContent"></div><!-- v-pre --><div v-pre>{{ message }}</div><!-- v-cloak --><div v-cloak>{{ message }}</div><!-- v-once --><p v-once>{{ message }}</p><!-- v-slot --><my-component><template v-slot:header><h1>Header</h1></template><template v-slot:footer><h3>Footer</h3></template></my-component><!-- v-preload --><img v-preload="imageUrl"><!-- v-lazy --><img v-lazy="imageUrl"></div><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>Vue.directive('preload', {bind: function (el, binding) {var image = new Image();image.src = binding.value;}});Vue.directive('lazy', {bind: function (el, binding) {var options = {rootMargin: '0px',threshold: 0.1};var observer = new IntersectionObserver(function (entries, observer) {entries.forEach(function (entry) {if (entry.isIntersecting) {el.src = binding.value;observer.unobserve(el);}});}, options);observer.observe(el);}});Vue.component('my-component', {template: `<div><slot name="header"></slot><slot></slot><slot name="footer"></slot></div>`});new Vue({el: '#app',data: {showMessage: true,count: 0,items: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' }],imageUrl: 'https://example.com/image.jpg',message: 'Hello, Vue!',htmlContent: '<strong>Strong text</strong>'},methods: {incrementCount: function () {this.count++;}}});</script>
</body>
</html>

这个示例中展示了以下指令的用法:

  • v-ifv-elsev-else-if:根据条件显示不同的内容。
  • v-show:根据条件显示或隐藏元素。
  • v-for:循环渲染列表中的元素。
  • v-bind:绑定元素的属性或特性。
  • v-on:绑定事件监听器。
  • v-model:实现表单元素的双向数据绑定。
  • v-text:设置元素的文本内容。
  • v-html:设置元素的 HTML 内容。
  • v-pre:跳过元素的编译过程,直接输出原始内容。
  • v-cloak:在 Vue 实例完成编译前隐藏元素。
  • v-once:只渲染元素一次,后续的数据更新不会再重新渲染。
  • v-slot:实现插槽功能,传递内容给子组件。
  • v-preload:预加载资源。
  • v-lazy:懒加载资源。

通过这个示例,你可以了解到这些指令的用法和功能,以及如何在 Vue 中应用它们来实现不同的需求。

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

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

相关文章

chaitin-Nginx+Docker

Nginx实战 任务一 1、源码包安装NGINX A&#xff0c;搭建Web Server&#xff0c;任意HTML页面&#xff0c;其8080端口提供Web访问服务&#xff0c;截图成功访问http(s)&#x1f615;/[Server1]:8080并且回显Web页面 官网地址&#xff1a;http://nginx.org/en/download.html 步骤…

Python-re模块-正则表达式模块常用方法

re模块介绍&#xff1a; Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括: 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。 匹配字符串 - 使用正则表达式对象的match()、search()、finda…

MySQL中的视图

系列文章目录 MySQL常见的几种约束 MySQL中的函数 MySQL中的事务 文章目录 系列文章目录前言一、视图的概念二、视图的好处三、SQL展示总结 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&…

十二、ESP32控制步进电机

1. 运行效果 2. 步进电机 最大特点:能够控制旋转一定的角度 3. 步进电机原理

【vue】vue基础知识

1、插值表达式&属性绑定 <!--template展示给用户&#xff0c;相当于MVVM模式中的V--> <template><div class"first_div">//插值表达式<p>{{ message }}</p>//这里的参数是从父组件的template里传过来的<p>{{data_1}}</p…

超详情的开源知识库管理系统- mm-wiki的安装和使用

背景&#xff1a;最近公司需要一款可以记录公司内部文档信息&#xff0c;一些只是累计等&#xff0c;通过之前的经验积累&#xff0c;立马想到了 mm-wiki&#xff0c;然后就给公司搭建了一套&#xff0c;分享一下安装和使用说明&#xff1a; 当前市场上众多的优秀的文档系统百…

前端基础第一天-html-综合案例

通过综合案例&#xff0c;主要复习&#xff1a; 目录文件夹今日所学标签路径锚点链接 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

Demystifying Prompts in Language Models via Perplexity Estimation

Demystifying Prompts in Language Models via Perplexity Estimation 原文链接 Gonen H, Iyer S, Blevins T, et al. Demystifying prompts in language models via perplexity estimation[J]. arXiv preprint arXiv:2212.04037, 2022. 简单来说就是作者通过在不同LLM和不同…

VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

摘要 在这项工作中&#xff0c;我们解决了引用分割的挑战性任务。引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象。因此&#xff0c;为了在图像中的所有实例中找到目标实例&#xff0c;模型必须对整个图像有一个整体的理解。为了实现这一点&#…

Flutter 让软键盘不再自动弹起

1、问题说明&#xff1a; 在开发中&#xff0c;经常遇到这种事&#xff0c;一个页面有输入框&#xff0c;点击输入框后&#xff0c;会弹起软键盘&#xff0c;同时输入框会聚焦&#xff0c;手动收起软键盘后&#xff0c;点击另一个按钮前往下一个页面或者显示一个弹窗&#xff0…

一百四十一、Kettle——kettle8.2在Windows本地开启carte服务以及配置子服务器

一、目的 在kettle建好共享资源库后&#xff0c;为了给在服务器上部署kettle的carte服务躺雷&#xff0c;先在Windows本地测试一下怎么玩carte服务 二、Kettle版本以及在Windows本地安装路径 kettle版本是8.2 pdi-ce-8.2.0.0-342 kettle本地安装路径是D:\j…

Vue + Cesium快速搭建,全流程(最新总结)

方式一&#xff1a;直接引入&#xff08;最简单&#xff09; 1.安装Cesium&#xff08;Vue搭建可以看我上一期的文章&#xff09; npm i cesium -save2.将node_modules\cesium\Build\Cesium文件夹拷贝到项目的public文件中 3.在public\index.html引入Cesium <!DOCTYPE h…

[NOIP2007 普及组] 纪念品分组

[NOIP2007 普及组] 纪念品分组 题目描述 元旦快到了&#xff0c;校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡&#xff0c;他要把购来的纪念品根据价格进行分组&#xff0c;但每组最多只能包括两件纪念品&#xff0c; 并且…

百度秋招攻略,百度网申笔试面试详解

百度秋招简介 作为行业巨头&#xff0c;百度向社会提供的岗位一直都是非常吃香的&#xff0c;每年也都有很多考生密切关注&#xff0c;百度发布的招聘广告&#xff0c;以尽可能的让自己进入这家企业工作&#xff0c;实现自己的人生价值。那么百度每年的秋招时间是多久&#xf…

DB2数据库巡检脚本

DB2数据库巡检脚本的示例&#xff1a; #!/bin/bash# 设置DB2登录凭证 DB2_USER"your_username" DB2_PASSWORD"your_password"# 设置巡检结果输出文件路径 OUTPUT_FILE"/path/to/output.log"# 获取DB2版本信息 version_info$(db2 connect to you…

Spring Boot + Vue3前后端分离实战wiki知识库系统十一--文档管理功能开发三

文档内容的显示&#xff1a; 在上一次https://www.cnblogs.com/webor2006/p/17510360.html文档管理模块还差文档的显示木有完成&#xff0c;所以接下来先将这块模块给收尾了。 增加单独获取内容的接口&#xff1a; 概述&#xff1a; 在前端页面文档查询时&#xff0c;只查询了文…

leetcode 509. 斐波那契数

2023.8.6 明天放假回长沙了&#xff0c;回家先玩几天。 今天开始刷动态规划的题目了&#xff0c;先拿道简单的练练手。由于本题提示中说n在30以内&#xff0c;所以我是构造了一个大小为30的int型哈希数组&#xff0c;然后将30以内的斐波那契数列全部放入数组中&#xff0c;然后…

K8S系列文章之 服务部署核心概念

主要讲述如何在K8s中部署应用。 首先&#xff0c;我们在实战项目中经常会用到的一些概念 PodDeploymentServiceNamespacesDNS 使用上一篇文章&#xff0c;我们重建Kind K8s环境&#xff0c;并部署一个可以从本地访问的简单网页&#xff0c;加深理解。 环境(配置) centos7Doc…

人类与机器的分类不同

分类能力也是智能的重要标识之一。通过分类&#xff0c;我们可以将事物或概念进行归类和组织&#xff0c;从而更好地理解和处理信息。分类在人类认知和智能发展中起到了重要的作用&#xff0c;它有助于我们对世界进行认知、记忆、推理和决策。在机器智能领域&#xff0c;分类同…

zookeeper和kafka

目录 一、zookeeper理论 1.1、zookeeper定义 1.2、zookeeper工作机制 1.3、zookeeper特点 1.4、zookeeper的数据结构 1.5、zookeeper应用场景 1.6、zookeeper的选举机制 二、部署Zookeeper 集群 2.1、环境准备 2.2、安装 Zookeeper 2.3、修改配置文件 2.4、配置…