【vue3】template标签的一些理解(提了一嘴component标签)

embedded/2024/9/25 21:27:59/

1、模板语法

Vue 框架使用了一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。

此,vue给我们提供模板语法书写html,模板编译后形成高度优化的javascript代码,将其转换为VNode对象(虚拟节点对象)并缓存下来,生成虚拟DOM,并结合响应式的数据和状态,以最优化最少的次数操作、更新真实DOM

2、template标签

注意⚠️

在vue2中template只允许包含一个子元素,不允许包含多个标签元素;而vue3中允许

template标签用于局部执行模板语法,实现一些代码片段。当没有搭配v-if系列、v-for、v-slot使用的时候,则不会被触发

它属于占位符,其本身不作为节点挂入DOM树,但是可以将包裹着的子元素展示,形成一虚拟DOM。利用这一特点,我们平常写vue3的时候可以用它来作为父元素,从而提升渲染性能,比如在写v-for、v-if的时候。

🌟以v-for为例子:

如果用普通的div元素作为父元素包裹来渲染列表,父元素也被多次渲染,会出现如下结果:

<div class="parent" v-for="(item,index) in childList"><div class="child" key="index">{{item}}</div>
</div>---实际生成的DOM节点---<div class="parent"><div class="child" key="1">...</div>
</div>
<div class="parent"><div class="child" key="2">...</div>
</div>
<div class="parent"><div class="child" key="3">...</div>
</div>....此处省略

这时候,使用template包裹,就可以实现只重复渲染子元素。

<template v-for="(item,index) in childList"><div class="child" key="index">{{item}}</div>
</template>---实际生成的DOM节点---<div class="child" key="1">...</div><div class="child" key="2">...</div><div class="child" key="3">...</div>....此处省略

🌟搭配v-slot插槽使用 

简而言之就是在被引用的组件里面设计<slot>插槽,留一个内容空位;在引用组件的时候,在该组件的子元素里面定制template内容,导入到指定slot插槽内。

举个例子🌰

这里用name属性给slot插槽加了名字,这样外面template可以用v-slot: [slot_name]指定要导入模板内容的对应插槽。(v-slot可以简写为#

<!--Baselayout.vue--><div class="container"><header><slot name="header"></slot></header><main><slot></slot></main><footer><slot name="footer"></slot></footer>
</div><!--outer.vue--><BaseLayout><template v-slot:header><!-- header 插槽的内容放这里 --></template>
</BaseLayout>

🌟提一嘴component标签

<component/>标签可以理解为:用于动态切换渲染组件的“元组件”

举个🌰

导入两个子组件,根据响应数据选择需要切换哪个子组件

注意⚠️

子组件不要忘记在components里面注册哦~~~

<script>
import Foo from './Foo.vue'
import Bar from './Bar.vue'export default {components: { Foo, Bar },data() {return {view: 'Foo'}}
}
</script><template><component :is="view" />
</template>


http://www.ppmy.cn/embedded/87945.html

相关文章

2、Flink 在 DataStream 和 Table 之间进行转换

1.概述 Table API 和 DataStream API 都可以处理有界流和无界流。 DataStream API 提供了流处理的基础(时间、状态和数据流管理);Table API 抽象了许多内部内容,并提供了一个结构化和声明性的 API;在处理历史数据时,需要管理有边界的流;无边界流出现在实时处理场景中,…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…

打卡第22天------回溯算法

开始学习了,希望我可以尽快成功上岸! 一、回溯理论基础 什么是回溯法?回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率回溯法的本质是穷举,穷举所有可能,然后找出我们想要的答案。如果想让回溯法高效一些,可…

【QT】无法打开QT的ui文件,出现闪退情况

打开qt的ui文件出现闪退的情况&#xff1a; 解决办法&#xff1a;点击扩展-Qt VS Tools-Options 找到Qt General中的Qt Designer 的Run in detached window改为True。

Mysql按照范围区间创建分区表

定义 每一个分区仅包含在指定范围内的数据列。这样的分区方式就是范围分区。在Mysql的范围分区表定义中&#xff0c;分区范围需要连续并且不会有覆盖。定义范围分区表时&#xff0c;使用VALUES LESS THAN操作符。在PARTITION BY RANGE语法中&#xff0c;建立分区表指定分区时&…

Zookeeper源码剖析-启动类

文章目录 从启动脚本开始分析ZooKeeper启动脚本 `zkServer.sh` 分析1. 脚本位置2. 脚本结构3. 主要部分3.1 检测环境变量3.2 加载配置文件3.3 设置环境变量3.4 日志配置3.5 启动和停止命令3.6 启动ZooKeeper3.7 停止ZooKeeper4. 其他功能5. 调用方式总结ZooKeeper的 QuorumPeer…

C/C++编程-算法学习-数字滤波器

数字滤波器 一阶低通滤波器结论推导11. 基本公式推导2. 截止频率 和 采样频率 推导 实现 二阶低通滤波器实现1实现2推导1推导2 一阶低通滤波器 结论 其基本原理基于以下公式&#xff1a; o u t p u t [ n ] α ∗ i n p u t [ n ] ( 1 − α ) ∗ o u t p u t [ n − 1 ] …

景区导览系统开发

景区导览系统的开发是一个综合性的项目&#xff0c;涉及多个领域的知识和技术&#xff0c;包括互联网、移动开发、数据库管理、地图导航、人工智能等。以下是一个详细的开发流程介绍&#xff1a; 一、需求分析 市场调研&#xff1a;了解当前旅游市场的趋势和游客的需求&#…