详解template标签用法(含vue中的用法总结)


Posted in Vue.js onJanuary 12, 2021

一、html5中的template标签

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

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

二、template标签操作的属性和方法

  • content属性:在js中template标签对应的dom对象存在content属性,对应的属性值是一个dom节点,节点的nodeName是#document-fragment。通过该属性可以获取template标签中的内容,template对象.content可以调用getElementById、querySelector、querySelectorAll方法来获取里面的子节点。
  • innerHTML:可以获取template标签中的html。
<template id="tem">
 <div id="div1">我是template</div>
 <div>我是template</div>
</template>
<script>
 let o = document.getElementById("tem");
 console.log(o.content.nodeName);//#document-fragment
 console.log(o.content.querySelectorAll("div"));//NodeList(2) [div#div1, div]。得到一个类数组
 console.log(o.content.getElementById("div1"));//<div id="div1">我是template</div>
 console.log(o.innerHTML);//'<div id="div1">我是template</div><div>我是template</div>'
</script>

三、vue中的template

 1、template标签在vue实例绑定的元素内部

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

<div id="app">
 <!--此处的template标签中的内容显示并且在dom中不存在template标签-->
 <template>
 <div>我是template</div>
 <div>我是template</div>
 </template>
</div>
<!--此处的template标签中的内容在页面中不显示,但是在dom结构存在该标签及内部结构-->
<template id="tem">
 <div id="div1">我是template</div>
 <div>我是template</div>
</template>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
 let vm = new Vue({
 el: "#app",
 });
</script>

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

<div id="app">
 <template v-if="true">
 <!--此时template标签中的内容显示在页面上,但是看dom结构没有template标签-->
 <div>我是template</div>
 <div>我是template</div>
 </template>
 <div v-if="true">
 <!--此时页面上显示div标签中的内容,并且看dom结构存在最外面的div标签-->
 <div>我是template</div>
 <div>我是template</div>
 </div>
 <!--此处会输出6个‘我是template'并且dom结构中不存在template标签-->
 <template v-for="a in 3">
 <div>我是template</div>
 <div>我是template</div>
 </template>
</div>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
 let vm = new Vue({
 el: "#app",
 });
</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中定义的数据。
<!--此处页面显示hello-->
<div id="app"></div>
<!--此处template标签必须在vue绑定的元素外面定义,并且在页面中不显示下面的template标签中的内容-->
<template id="first">
 <div v-if="flag">{{msg}}<div>
 <div v-else>111<div>
</template>
<script src="./node_modules/vue/dist/vue.js"></script>
<script>
 let vm = new Vue({
 el:"#app",
 data:{
  msg:"hello",
  flag:true
 },
 template:"#first"//通过该属性可以将自定义的template属性中的内容全部替换app的内容,并且会覆盖里面原有的内容,并且在查看dom结构时没有template标签
 });
</script>

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

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

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

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

到此这篇关于详解template标签用法(含vue中的用法总结)的文章就介绍到这了,更多相关template标签用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
在vue中动态修改css其中一个属性值操作
Dec 07 Vue.js
vue3中轻松实现switch功能组件的全过程
Jan 07 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
Vue3中的Refs和Ref详情
Nov 11 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 #Vue.js
vue实现防抖的实例代码
Jan 11 #Vue.js
Vuex实现简单购物车
Jan 10 #Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 #Vue.js
基于vuex实现购物车功能
Jan 10 #Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 #Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 #Vue.js
You might like
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
python多线程分块读取文件
2019/08/29 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
工程技术员岗位职责
2014/03/02 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
关于环保的活动方案
2014/08/25 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书