原生模板的优势

  • 延迟了资源加载

延迟了加载和处理模板所引用的资源的时机,这样,用户就能够在模板中使用任意多的资源,却不阻碍页面的渲染。

  • 延迟了渲染内容

无论模板在什么位置,浏览器不会把模板中的内容直接渲染出来。开发者可以将模板放在页面中的任意位置,然后根据具体的情形选择模板去渲染,而不必切换模板的display属性,或者担心由于解析不需要的模板内容而带来的开销。

  • 从DOM中隐藏内容

模板中的内容并不能视为DOM的一部分,当我们查询DOM节点时,绝对不会返回模板的节点。这样,模板就不会拖慢DOM节点的查询速度。模板终点内容在激活之前都可以视为隐藏的。

原生模板的用法

在<template>标签中编写模板,编写好的模板可以被插入到head body frameset等标签中,或者他们的任意后代标签中。

<head>
<template id="actq">
<p class="response"></p>
<script type="text/javascript">
(function() {
var p=confirm("tip?")
var responseEl = document.querySelector('.response')
if(p){
responseEl.innerHTML = 'success'
}
else{
responseEl.innerHTML = 'fail'
}
})();
</script>
</template>
</head>
<body>
<div id="atcq-root"></div>
</body>

使用模板时,将模板内容插入到DOM中即可。
首先获得对模板节点的引用

var template = document.querySelector("#atcq")

然后创建Shadow DOM,之后将模板中的内容填充到根元素中

var root = document.querySelector("#atcq-root").createShadowRoot()
root.appendChild(template.content)

Shadow DOM简介

shadow-dom 其实是浏览器的一种能力,它允许在浏览器渲染文档的时候向其中的 Dom 结构中插入一棵 DOM 元素子树,但是特殊的是,shadow DOM 子树并不在主 DOM树中。这颗子树形成了自己的『闭合空间』,比如shadow DOM子树可以包含与父文档中重复的ID和样式,而不会相冲突。

参考

Shadow DOM v1:独立的网络组件
影子DOM

在Shadow DOM使用原生模板的更多相关文章

  1. JS21. 使用原生JS封装一个公共的Alert插件(HTML5: Shadow Dom)

    效果预览 Shadow DOM Web components  的一个重要属性是封装--可以将标记结构.样式和行为隐藏起来,并与页面上的其他代码相隔离,保证不同的部分不会混在一起,可使代码更加干净.整 ...

  2. 封印术:shadow dom

    置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<鼠标滚动插件smoovejs和wowjs> 作者主页:myvin 博主QQ:851399101(点击Q ...

  3. 纯CSS菜单样式,及其Shadow DOM,Json接口 实现

    先声明,要看懂这篇博客要求你具备少量基础CSS知识, 当然如果你只是要用的话就随便了,不用了解任何知识 完整项目github链接:https://github.com/git-Code-Shelf/M ...

  4. JavaScript 是如何工作:Shadow DOM 的内部结构 + 如何编写独立的组件!

    这是专门探索 JavaScript 及其所构建的组件的系列文章的第 17 篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:引擎,运行时和调用堆栈的概述! Jav ...

  5. 【Web技术】401- 在 React 中使用 Shadow DOM

    本文作者:houfeng 1. Shadow DOM 是什么 Shadow DOM 是什么?我们先来打开 Chrome 的 DevTool,并在 'Settings -> Preferences ...

  6. 【shadow dom入UI】web components思想如何应用于实际项目

    回顾 经过昨天的优化处理([前端优化之拆分CSS]前端三剑客的分分合合),我们在UI一块做了几个关键动作: ① CSS入UI ② CSS作为组件的一个节点而存在,并且会被“格式化”,即选择器带id前缀 ...

  7. 使用shadow dom封装web组件

    什么是shadow dom? 首先我们先来看看它长什么样子.在HTML5中,我们只用写如下简单的两行代码,就可以通过 <video> 标签来创建一个浏览器自带的视频播放器控件. <v ...

  8. 理解Shadow DOM(一)

    1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻译的话可以理解为 影子DOM, 何为影子DOM呢?可以理解为一般情况下使用肉眼看不到的DOM结构,那如果一般情况下看不到的话,那 ...

  9. webAssmebly实现js数组排序 使用custom elements和Shadow DOM自定义组件

    直接上码了……………… .wat源码 (module (type $t0 (func (param i32 i32))) (type $t1 (func (result i32))) (type $t ...

随机推荐

  1. [LC] 273. Integer to English Words

    Convert a non-negative integer to its english words representation. Given input is guaranteed to be ...

  2. C - The Battle of Chibi HDU - 5542 (树状数组+离散化)

    Cao Cao made up a big army and was going to invade the whole South China. Yu Zhou was worried about ...

  3. 编译安装-Subversion 1.8.5

    下载地址:http://subversion.apache.org/download/#recommended-release @开头的行为注释,#开头的红色行为命令 @下载tar包 #wget ht ...

  4. android适配全机型悬浮框、视频APP项目、手势操作、Kotlin妹子App、相机图片处理等源码

    Android精选源码 图片滤镜处理,相机滤镜实时处理,相机拍照录制 android仿爱壁纸App更换壁纸效果源码 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视 ...

  5. mongo rename collection

    db.getCollection('a').renameCollection("b"); db.getCollection('a').find({}, {_id: 0}).forE ...

  6. spring mvc 设置@Scope("prototype")

    spring中bean的scope属性,有如下5种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例 prototype表示每次获得be ...

  7. MOOC(14)- 从数据库中获取预期结果

    数据库中的预期结果写的是SQL语句 从表格中读取到SQL语句,再去数据库获取真正的预期结果 # -*- coding: utf-8 -*- # @Time : 2020/2/18 9:50 # @Fi ...

  8. Logarithmic transformation|Data transfer|MASS|Box-Cox

    数据转换(Data transfer) 方差分析的前提是方差齐性,可以使用transfer改变方差使得方差变齐.不正态和outlier. Logarithmic transformation使方差聚合 ...

  9. python学习笔记(0)python基础概念

    一.字符集 说字符集之前,先说下2进制的故事,计算机比较傻只认识2进制,什么是2进制,就是0,1,计算机只认识这俩数字,其他的都不认识,这样的0或1为一"位",规定8位为一个字节, ...

  10. 深入JVM内核--JVM运行机制

    JVM启动流程 JVM基本结构 PC寄存器 每个线程拥有一个PC寄存器 在线程创建时 创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined 方法区 保存装载的类信息 类型的常量池 ...