【HTML】模板元素(`<template>`标签)的特点与使用方法

模板元素(template标签)的特点与使用方法

提要

在我接触到的各种js框架(lwc,vue,react)中,都或多或少使用到了模板元素(<template>),最近在阅读React源码的过程中,也看到这样的注释:

’ Warning: Encountered a script tag while rendering React component. ’ +

​ 'Scripts inside React components are never executed when rendering ’ +

​ 'on the client. Consider using template tag instead ’

我们知道,react组件在渲染的时候是不会执行任何script代码的,这对防注入等安全问题有好处。在源码的注释中它提示到,如果要执行Script代码,建议放在template元素内部。本文就为大家介绍一下template标签的具体作用以及使用方法。

什么是<template>元素

<template>元素,中文称为模板元素,顾名思义,它最大的作用是将元素标签内的所有元素作为模板储存在HTML文件中。并且,浏览器会忽略模板元素的内容,仅检查它内部语法的有效性。我们可以在合适的时候,利用JavasScript来访问、使用模板元素来创建内容。

优势

如果为了不可见性,我们可以用其他方式,如visibility: hide或者display:none等样式,为什么要使用模板元素呢?

  1. 模板元素的内容可以是任何HTML

    <template>
       <tr>
       	<div>
         <td>Contents</td>
         </div>
       </tr>
    </template>
    

    如果不是包含在模板元素中,上述的<tr>标签会被浏览器自动包裹在一个<table>标签内,且<div>标签也会被认为无效而自动修复。但是在模板元素中,所有的内容会被原封不动地保存。

  2. <template>的内容不在文档中。
    直到被查看、使用之前,模板元素的内容都被认为不在文档里,因此所有的样式、Script代码也不会被应用、运行。这也是React注释中推荐的方式 —— 利用文档元素储存Script代码,直到它被使用之后自动执行。

使用方式

模板元素的使用方式很简单,在JS中抓取模板元素的内容,并且将他插入到某个节点中。
模板元素的content属性可以看作是一个文档片段(DocumentFragment),在模板元素被插入时,仅仅只有模板元素的内容会被插入。(<template>标签会被无视)

<table id="producttable">
  <thead>
    
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值