Web Component 实战笔记

本文深入探讨Web Component的模版元素、HTML Import、Shadow DOM和自定义元素,介绍其关键特性和实践方法。同时,分析了Polymer、Lit、Bosonic和Mozilla Brick等框架,并对比了它们之间的差异,帮助开发者选择合适的Web Component解决方案。
摘要由CSDN通过智能技术生成

Web Component 模块分为模版元素,Shadow DOM, 自定义元素, HTML Import

一、模版元素

1. 模版元素

HTML 元素中包含css, html, javascript, 这些都是可复用的,W3C Web Component规范中包含了元素。对于web 开发来说,template 还是太新了,所以相较于Handlebars.js 这个相当成熟的库来说,Web Component 模版少了一些功能,当然,他一定会很快强大起来的。

2. IDL

<template> 元素是一个HTMLTemplateElement接口, 具体的IDL(W3C用于定义规范所用的语言)定义如下

#DOM Interface
interface HTMLTemplateElement : HTMLElement {
   
  readonly attribute DocumentFragment content;
};
  • HTMLTemplateElement: 这是template 接口, 继承了HTMLElement class
  • content - 这是HTML template 中唯一一个元素,他返回模版的内容,而且是只读的
  • DocumentFragment - 这是content返回的类型,可以视为轻量级文档,而且没有父元素

3. 模版元素的延迟加载

模版元素是延迟加载的,下面例子如下

<div id="message"></div>
<template id="aTemplate">
    <img id="profileImage" src="http://www.gravatar.com/avatar/c6e6c57a2173fcbf2afdd5fe6786e92f.png">
    <script>
        alert("This is a script.");
    </script>
</template>
<script>
    (function(){
   
        var imageElement = document.getElementById("profileImage"),
            messageElement = document.getElementById("message");
        messageElement.innerHTML = "IMG element "+imageElement;
    })();
</script>

Google运行结果如下
在这里插入图片描述
我们可以看到上面document.getElementById(“profileImage”) 是没有得到值的,也就是说现在aTemplate 并没有加载。

4. 激活模版中节点

所以这证明模版是延迟加载的,那怎么激活模版中的节点呢,两种方法, 克隆节点和导入节点

a 克隆节点

<div id="message"></div>
<template id="aTemplate">
    <img id="profileImage" src="./WechatIMG828.png" width="100" height="100">
    <script>
        alert("This is a script.");
    </script>
</template>
<script>
    (function(){
   
        const messageEl = document.getElementById("message");
        const aTemplate = document.querySelector("#aTemplate"),
            templateContent = aTemplate.content,
            activeContent = templateContent.cloneNode
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值