一、html5中的template标签
html中的template标签中的内容在页面中不会显示。但是在后台查看页面DOM结构存在template标签。这是因为template标签天生不可见,它设置了display:none;属性。

1 <!--当前页面只显示"我是自定义表现abc"这个内容,不显示"我是template",这是因为template标签天生不可见-->
2 <template><div>我是template</div></template>
3 <abc>我是自定义表现abc</abc>

二、template标签操作的属性和方法
content属性:在js中template标签对应的dom对象存在content属性,对应的属性值是一个dom节点,节点的nodeName是#document-fragment。通过该属性可以获取template标签中的内容,template对象.content可以调用getElementById、querySelector、querySelectorAll方法来获取里面的子节点。
innerHTML:可以获取template标签中的html。

 1 <template id="tem">
2 <div id="div1">我是template</div>
3 <div>我是template</div>
4 </template>
5 <script>
6 let o = document.getElementById("tem");
7 console.log(o.content.nodeName);//#document-fragment
8 console.log(o.content.querySelectorAll("div"));//NodeList(2) [div#div1, div]。得到一个类数组
9 console.log(o.content.getElementById("div1"));//<div id="div1">我是template</div>
10 console.log(o.innerHTML);//'<div id="div1">我是template</div><div>我是template</div>'
11 </script>

三、vue中的template
1、template标签在vue实例绑定的元素内部
它是可以显示template标签中的内容,但是查看后台的dom结构不存在template标签。如果template标签不放在vue实例绑定的元素内部默认里面的内容不能显示在页面上,但是查看后台dom结构存在template标签。

 1 <div id="app">
2 <!--此处的template标签中的内容显示并且在dom中不存在template标签-->
3 <template>
4 <div>我是template</div>
5 <div>我是template</div>
6 </template>
7 </div>
8 <!--此处的template标签中的内容在页面中不显示,但是在dom结构存在该标签及内部结构-->
9 <template id="tem">
10 <div id="div1">我是template</div>
11 <div>我是template</div>
12 </template>
13 <script src="node_modules/vue/dist/vue.js"></script>
14 <script>
15 let vm = new Vue({
16 el: "#app",
17 });
18 </script>

注意: vue实例绑定的元素内部的template标签不支持v-show指令,即v-show="false"对template标签来说不起作用。但是此时的template标签支持v-if、v-else-if、v-else、v-for这些指令。

 1 <div id="app">
2 <template v-if="true">
3 <!--此时template标签中的内容显示在页面上,但是看dom结构没有template标签-->
4 <div>我是template</div>
5 <div>我是template</div>
6 </template>
7 <div v-if="true">
8 <!--此时页面上显示div标签中的内容,并且看dom结构存在最外面的div标签-->
9 <div>我是template</div>
10 <div>我是template</div>
11 </div>
12 <!--此处会输出6个‘我是template’并且dom结构中不存在template标签-->
13 <template v-for="a in 3">
14 <div>我是template</div>
15 <div>我是template</div>
16 </template>
17 </div>
18 <script src="node_modules/vue/dist/vue.js"></script>
19 <script>
20 let vm = new Vue({
21 el: "#app",
22 });
23 </script>

2、vue实例中的template属性

将实例中template属性值进行编译,并将编译后的dom替换掉vue实例绑定的元素,如果该vue实例绑定的元素中存在内容,这些内容会直接被覆盖。
特点:

1)如果vue实例中有template属性,会将该属性值进行编译,将编译后的虚拟dom直接替换掉vue实例绑定的元素(即el绑定的那个元素);
2)template属性中的dom结构只能有一个根元素,如果有多个根元素需要使用v-if、v-else、v-else-if设置成只显示其中一个根元素;
3)在该属性对应的属性值中可以使用vue实例data、methods中定义的数据。

 1 <!--此处页面显示hello-->
2 <div id="app"></div>
3 <!--此处template标签必须在vue绑定的元素外面定义,并且在页面中不显示下面的template标签中的内容-->
4 <template id="first">
5 <div v-if="flag">{{msg}}<div>
6 <div v-else>111<div>
7 </template>
8 <script src="./node_modules/vue/dist/vue.js"></script>
9 <script>
10 let vm = new Vue({
11 el:"#app",
12 data:{
13 msg:"hello",
14 flag:true
15 },
16 template:"#first"//通过该属性可以将自定义的template属性中的内容全部替换app的内容,并且会覆盖里面原有的内容,并且在查看dom结构时没有template标签
17 });
18 </script>

上面的例子中html中的template标签可以变成自定的标签,如下。但是下面这种方式也可以将<abc></abc>标签中的内容替换掉app元素,但是<abc></abc>标签中的内容也会显示在页面上。所以此处利用template标签来定义vue实例中需要设置的template属性。

1 <abc id="first">
2 <div v-if="flag">{{msg}}<div>
3 <div v-else>111<div>
4 </abc>

上面的实例还可以写成下面的形式

 1 <!--此处页面显示hello-->
2 <div id="app"></div>
3 <script src="./node_modules/vue/dist/vue.js"></script>
4 <script>
5 let vm = new Vue({
6 el:"#app",
7 data:{
8 msg:"hello",
9 flag:true
10 },
11 template:"<div v-if='flag'>{{msg}}</div><div v-else>123</div>"//模板中只能有一个根元素,如果有多个需要使用v-if、v-else、v-else-if来选择显示哪一个
12 });
13 </script>

原文链接:https://blog.csdn.net/u010510187/java/article/details/100356624

关于template标签用法总结(含vue中的用法总结)的更多相关文章

  1. checkbox在vue中的用法小结

    关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样,之前对于vue插 ...

  2. checkbox在vue中的用法总结

    前言 关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样, 之前对于 ...

  3. template标签就相当于React中的fragment

    template标签就相当于React中的fragment

  4. 【vue】vue中ref用法

    1.获取当前元素: 例子: <div class="pop pos-a" :style="{ left: pop_x + 'px' ,top: pop_y + 'p ...

  5. swiper在vue中的用法

    首先通过npm i vue-awesome-swiper --save 来在vue中下载插件 然后再main.js中引入 require('swiper/dist/css/swiper.css')im ...

  6. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  7. Vue中import用法

    1. 引入第三方插件 第三方常用插件参考https://blog.csdn.net/vbirdbest/article/details/86527886 2. 导入 css 文件 import 'iv ...

  8. Vue中computed用法

    computed是什么?对于任何复杂逻辑,你都应当使用计算属性.computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义.然后就可以在页面上进行双向数据绑定展 ...

  9. 分享vue中 slot用法

    //slot默认用法 //slot带参数name用法

  10. vue中class用法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 【测试平台开发】——02Vue前端框架实战—router路由设计(登录页面)

    一.安装vue-cli Mac系统: sudo npm install -g vue-cli 检查是否安装好: vue -V 二.创建新项目 1.打开Vue项目管理器 输入命令: vue ui 但是没 ...

  2. python pyqt6 QPushButton 设定快捷键

      import os import sys from PyQt6.QtWidgets import QPushButton from PyQt6.QtGui import QIcon from Py ...

  3. SQL查折线图数据

    在做后台管理系统的时候,有很大概率是要与各种图表数据打交道, 那么如何通过SQL查出基本图表的数据呢,以折线图为例, X轴为日期,Y轴为统计数据,那么我们通过SQL如何查询出连续日期下的统计数据呢, ...

  4. 录音转文字SDK哪家强?

    最近在做一款录音App,有一个模块是录音转文字功能,于是对比了市面上常见的API,国内做的比较大的主要有讯飞.腾讯.阿里.百度.华为. 讯飞 讯飞在国内做语音SDK是做的比较早的,翻译出来的准确率挺不 ...

  5. 小tips:使用JSON.parse(JSON.stringify(object))实现深拷贝的局限及扩展

    使用JSON.parse(JSON.stringify(object))实现深拷贝局限 大部分情况我们都可以使用JSON.parse(JSON.stringify(object))来实现深拷贝,但该方 ...

  6. 月薪20k以上的软件测试工程师的必备知识点?全部拿走吧!

    我们都知道作为一个软件测试工程师,入门相对比较简单,但是要达到技术精通,甚至薪资能达到20k以上的话,那绝对需要对测试开发有一个系统的了解,以及对这些系统的知识能够熟练掌握. 今天的话是我从阿里以为做 ...

  7. 线段树can you answer these queries-------hdu4027

    问题描述: 给定一个数列,要求对指定区间内所有数开方,输出查询区间和 输入: 有很多个测试用例,每个用例第一行输出一个整数N,表示数列有N个数,1<=N<=100000;第二行输入N个整数 ...

  8. NOIP2023 游记 初见曙光

    NOIP2023 游记 Day 0 明天就考 NOIP 了,今天还是得扎实的复习一下. 安排一下我的复习计划: 上午&&下午 复习线段树 复习权值线段树 学习带权并查集 复习 lca ...

  9. 在windows下安装Composer(转载)

    在windows下安装Composer Composer是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer ...

  10. USB协议基础篇

    初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB. 一,从最常见的名词说起 1.1 什么是USB 这个我就不多解释了,直译就是通用串行总线.再不明白 ...