一、基础篇 vue模板语法

news2025/1/11 8:36:37

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。

在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

插值

文本

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:

<h1>Message:{{message}}</h1>
<template>
    <div class="content">
        <h1>{{message}}</h1>
    </div>
</template>

<script>
export default {
    data() {
        return {
            message: '我是Home页面',
        }
    },
}
</script>

<style scoped>
</style>

原始HTML

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用v-html

<h2 v-html="rawHtml"></h2>
<template>
    <div class="content">
        <h1>Message:{{message}}</h1>
        <div v-html="rawHtml"></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            message: '我是Home页面',
            rawHtml: '<div>我是html内容</div>'
        }
    },
}
</script>

<style scoped>
</style>

Attribute

Mustache 语法不能作用在 HTML attribute 上,遇到这种情况应该使用 v-bind 指令

<div v-bind:id="dynamicId">{{dynamicId}}</div>

对于布尔 attribute (它们只要存在就意味着值为 true),v-bind 工作起来略有不同,在这个例子中:

<button v-bind:disabled="isButtonDisabled">Button</button>
<template>
    <div class="content">
        <h1>Message:{{message}}</h1>
        <h2 v-html="rawHtml"></h2>
        <div v-bind:id="dynamicId">{{dynamicId}}</div>
        <button v-bind:disabled="isButtonDisabled">Button</button>
    </div>
</template>

<script>
export default {
    data() {
        return {
            message: '我是Home页面',
            rawHtml: '<div>我是html内容</div>',
            dynamicId: 'id1',
            isButtonDisabled: false,
        }
    },
}
</script>

<style scoped>
</style>

 如果 isButtonDisabled 的值是 nullundefined 或 false,则 disabled attribute 甚至不会被包含在渲染出来的 <button> 元素中。

使用 JavaScript 表达式

在模板上vue提供了完全的 JavaScript 表达式支持

<template>
    <div class="content">
        {{ number + 1 }}
        {{ ok ? 'YES' : 'NO' }}
        {{ message.split('').reverse().join('') }}
        <div v-bind:id="'list-' + id"></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            number: 1,
            ok: true,
            message: 'hello vue',
            id: 1,
        }
    },
}
</script>

<style scoped>
</style>

 指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况,后续再讨论)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。回顾我们在介绍中看到的例子:

<template>
    <div class="content">
        <p v-if="show">现在你看到我了</p>
    </div>
</template>

<script>
export default {
    data() {
        return {
            show: true,
        }
    },
}
</script>

<style scoped>
</style>

v-if 指令将根据表达式 show的值的真假来插入/移除 <p> 元素。

参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。例如,v-bind 指令可以用于响应式地更新 HTML attribute:

<template>
    <div class="content">
        <a v-bind:href="url">www.baidu.com</a>
    </div>
</template>

<script>
export default {
    data() {
        return {
            url: 'https://www.baidu.com/',
        }
    },
}
</script>

<style scoped>
</style>

在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。

另一个例子是 v-on 指令,它用于监听 DOM 事件:

<template>
    <div class="content">
        <!-- 在这里参数是监听的事件名 -->
        <a v-on:click="doSomething">www.baidu.com</a>
    </div>
</template>

<script>
export default {
    data() {
        return {
            url: 'https://www.baidu.com/',
        }
    },
    methods:{
        //a标签的点击事件
        doSomething(){
            location.href = this.url;
        },
    },
}
</script>

<style scoped>
</style>

动态参数

从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数:

<template>
    <div class="content">
        <!--注意,参数表达式的写法存在一些约束,如之后的“对动态参数表达式的约束”章节所述。-->
        <a v-bind:[attributeName]="url">www.baidu.com</a>
    </div>
</template>

<script>
export default {
    data() {
        return {
            url: 'https://www.baidu.com/',
            attributeName: 'href',
        }
    },
}
</script>

<style scoped>
</style>

这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的 Vue 实例有一个 data property attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href

同样,你可以使用动态参数为一个动态的事件名绑定处理函数:

<template>
    <div class="content">
        <!--注意,参数表达式的写法存在一些约束,如之后的“对动态参数表达式的约束”章节所述。-->
        <a v-on:[eventName]="doSomething">www.baidu.com</a>
    </div>
</template>

<script>
export default {
    data() {
        return {
            eventName: 'click',//事件名
        }
    },
    methods:{
        doSomething(){
            console.log(6666);
        }
    },
}
</script>

<style scoped>
</style>

修饰符

修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()

<form v-on:submit.prevent="onSubmit">...</form>

缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application)时,v- 前缀也变得没那么重要了。因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

v-bind 缩写
<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>
v-on 缩写
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

下一篇 基础篇 vue计算属性和侦听器

vue计算属性和侦听器icon-default.png?t=N7T8https://blog.csdn.net/qq_45963071/article/details/135618579

后续会持续更新😁......

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

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

相关文章

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换[一]

前言 在现代工业自动化领域&#xff0c;OPC UA&#xff08;开放性生产控制和统一架构&#xff09;是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用&#xff0c;帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

Springboot注解@Profile的作用

目录 作用 使用场景 使用技巧 激活配置文件 生产例子 作用 Springboot这个注解说白了就是用于区分有些组件、类、方法在不同环境下是否要注入启动的一个注解&#xff0c;打个比方我有个swagger配置类&#xff0c;只要注入这个类在spring中我就可以使用Swaggger这个插件&am…

x-cmd pkg | tokei - 代码行数统计工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 tokei 是一个使用 Rust 编写的显示有关代码统计信息的命令行工具&#xff0c;可以分门别类的统计目录内的代码行数。 tokei 具有良好的跨平台性&#xff0c;可以在 Linux、macOS、Windows 等多种平台上安装运行。 首…

呼叫中心的排班管理

排班管理是呼叫中心现场管理的重要内容之一。安排合适的人员在合适的地点和时间做合适的事情&#xff0c;这不仅仅是衡量排班质量的关键&#xff0c;也是管理的核心。而OKCC也是基于多年对呼叫中心提供服务&#xff0c;理解排班的业务流程&#xff0c;提供充分的数据支持。 呼叫…

Kafka 简介

目录 1、概念介绍 Kafka 由来 ZooKeeper Kafka 特性 Kafka 使用场景 Kafka 复制备份 2、Kafka 架构 Broker Topic Producer Partition Consumers Consumer Group Distribution 1、概念介绍 Kafka 由来 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布…

kubesphere DevOps部署SpringCloud项目

&#x1f34e;devops部署SpringCloud项目 &#x1f345;环境说明&#x1f345;部署流程&#x1f9c1;创建DevOps工程&#x1f9c1;填写流水线信息&#x1f9c1;创建流水线 &#x1f345;部署应用所需脚本&#x1f9c1;jenkinsfile&#x1f9c1;Dockerfile&#x1f9c1;deploy.y…

pyqtgraph绘图类

pyqtgraph绘图类 pyqtgraph绘图有四种方法: 方法描述pyqtgraph.plot()创建一个新的QWindow用来绘制数据PlotWidget.plot()在已存在的QWidget上绘制数据PlotItem.plot()在已存在的QWidget上绘制数据GraphicsLayout.addPlot()在网格布局中添加一个绘图 上面四个方法都接收同样…

Kurator v0.5.0发布,打造统一的多集群备份与存储体验

Kurator 是由华为云推出的开源分布式云原生套件。面向分布式云原生场景&#xff0c;Kurator 旨在为用户提供一站式的解决方案&#xff0c;帮助用户快速构建自己的分布式云原生平台。 在最新发布的 v0.5.0 版本中&#xff0c;Kurator 强化了其在多集群环境中的应用备份与恢复&am…

localStorage、sessionStorage、vuex区别和使用感悟

一、介绍及区别 localStorage的生命周期是永久&#xff1b;不手动在浏览器提供的UI上清除localStorage信息&#xff0c;否则这些信息将永远存在。 sessionStorage的生命周期为当前窗口或标签页&#xff0c;一旦窗口或标签页被永久关闭&#xff0c;那么所有通过sessionStorage存…

解析APP自动化测试工具主要用途

在移动应用开发领域&#xff0c;APP自动化测试工具成为保障软件质量和提升开发效率的不可或缺的利器。本文将探讨APP自动化测试工具的主要用途&#xff0c;以及如何通过这些工具实现高效的测试流程。 一、提高测试效率 自动化执行测试用例&#xff1a;APP自动化测试工具可以自动…

原生js监听当前元素之外的点击事件

监听当前元素之外的点击事件 一、具体场景二、具体实现三、完整代码 一、具体场景 当我们需要实现点击其他位置关闭弹窗的时候&#xff0c;就需要监听当前元素之外的点击事件。 二、具体实现 实现思路&#xff1a;监听整个dom的点击事件&#xff0c;判断当前元素是否包含点击…

统计学R语言实验2 :概率与分布

实验2 概率与分布 一、实验目的 1. 掌握理解离散型概率分布的相关概念。 2. 掌握理解连续型概率分布的相关概念。 3. 熟悉R语言等语言的集成开发环境。 二、实验分析与内容 完成教材P52-53的第2题和第8题 &#xfeff; &#xfeff;2.一条食品生产线每8小时一班中出现…

性能压力测试:企业成功的关键要素

性能压力测试在现代企业软件开发中扮演着至关重要的角色&#xff0c;它不仅仅是一项技术手段&#xff0c;更是保障企业成功的关键要素。本文将探讨性能压力测试在企业中的重要性&#xff0c;并阐述其对业务稳定性、用户体验和品牌声誉的影响。 一、保障业务稳定性 1、应对高负载…

LinuxC/C++编译指令

以C为例,C语言只需将指令中的g改成gcc即可 创建并编写一个源文件 一般情况下&#xff0c;对源文件直接一步编译即可 g 源文件名 -o 生成文件名 或者 g -o 生成文件名 源文件名 下面是对代码进行分步编译的指令 对源文件预处理&#xff0c;生成.i文件 对.i文件进行编译&#…

【分布式技术】分布式存储ceph部署

目录 一、存储的介绍 单机存储设备 单机存储的问题 商业存储 分布式存储 二、分布式存储 什么是分布式存储 分布式存储的类型 三、ceph简介 四、ceph的优点 五、ceph的架构 六、ceph的核心组件 七、OSD存储后端 八、Ceph 数据的存储过程 九、Ceph 版本发行生命周…

Hadoop——HDFS、MapReduce、Yarn期末复习版(搭配尚硅谷视频速通)

一、HDFS 1.HDFS概述 1.1 HDFS定义 HDFS(Hadoop Distributed File System),它是一个文件系统&#xff0c;用于存储文件&#xff0c;通过目录树来定位文件&#xff1b;其次&#xff0c;它是分布式的&#xff0c;由很多服务器联合起来实现其功能&#xff0c;集群中的服务器有各自…

[分布监控平台] Zabbis 监控

zabbix 是什么&#xff1f; zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix …

计算机网络——应用层(3)

计算机网络——应用层&#xff08;3&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 点对点&#xff08;P2P&#xff09;P2P网络一般用途优点缺点总结 套接字编程基本步骤UDP套接字TCP套接字基本步骤 二者对比 小程一言 我的计算机网络专栏&#xff0c;是自…