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

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

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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 要抓住国际白银现货行情 以下这几点需要注意
  • Java毕业设计 基于SSM和Vue的美容院管理系统小程序
  • 科普文:Lombok使用及工作原理详解
  • 【Python数据结构与算法】递归----上台阶
  • 设计理念中——抽象与接口和用(C#)
  • 【运维自动化】网络统一监控运维管理解决方案(PPT建设方案)
  • SpringCache的使用
  • unplugin-vue-components 插件配置 忽略 部分目录下的组件自动导入
  • Python 实现光波带宽换算(完结)
  • 信号处理——自相关和互相关分析
  • promise一点通,promise.all用法,try catch基本用法图
  • 智能相机背后的图像防抖(IS)技术介绍
  • 【GoLang】Golang 快速入门(第一篇)
  • MySQL和PostgreSQL group by后 Concatenate 拼接所有的字符串
  • Java--接口和内部类
  • (三)从jvm层面了解线程的启动和停止
  • 30秒的PHP代码片段(1)数组 - Array
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ERLANG 网工修炼笔记 ---- UDP
  • es6
  • Javascript设计模式学习之Observer(观察者)模式
  • Java比较器对数组,集合排序
  • Java反射-动态类加载和重新加载
  • Sass 快速入门教程
  • Spring框架之我见(三)——IOC、AOP
  • Unix命令
  • Vue UI框架库开发介绍
  • 工作中总结前端开发流程--vue项目
  • 类orAPI - 收藏集 - 掘金
  • 算法-插入排序
  • 写代码的正确姿势
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #数据结构 笔记三
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (day6) 319. 灯泡开关
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (第27天)Oracle 数据泵转换分区表
  • (二)Linux——Linux常用指令
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (六)vue-router+UI组件库
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)菜鸟学数据库(三)——存储过程
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 8 跨平台高性能边缘采集网关
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net FrameWork总结