zoukankan      html  css  js  c++  java
  • WebComponent

    WebComponent

    WebComponent可自定义标签,在caniuse网站上看,chrome浏览器是在2018年才完全支持。

    webComponent实现自定义标签封装是由三个技术组成:

    Custome Element:自定义标签、行为
    Shadow DOM:控制元素私有性
    HTML Template:标记模板,可为自定义模板结构重复使用
    

    Custome Element

    自定义元素只需两个步骤

    # 1、创建继承HTMLElement的类
    class SomeTag extends HTMLElement {
    	constructor() {
    		super();//必须要手动调用父类构造
    	}
    }
    
    # 2、注册标签, 第三个参数可选 {extends: 'div'}
    customElements.define('some-tag', SomeTag);
    

    Shadow DOM

    创建一个影子文档,挂载到自定义元素下,形成作用域隔离。

    在自定义元素类中使用入校表达式,添加影子DOM

    # mode: open|close ; 值为close shadowRoot返回null
    var shadow = this.attachShadow({mode: 'open'});
    # element.shadowRoot 自定义标签实例获取影子的实例
    

    附录:

    问题1:Failed to construct 'CustomElement': The result must not have children

    需要注意,如果构造器有添加子节点、获取属性等操作DOM行为,html写该自定义标签浏览器会报错!原因是浏览器加载脚本后需要解析执行脚本,脚本执行时页面可能还没渲染完毕,操作DOM不安全。

    解决办法:用js创建自定义标签的实例,或者自定义标签脚本加上defer属性

    敌人总是会在你最不想它出现的地方出现!
  • 相关阅读:
    Idea初始化Vue项目
    为什么在vue的组件中,data要用function返回对象呢
    SpringBoot+RabbitMQ 快速入门
    Neo4j入门-CQL
    记一次坑爹的websocket Response code was not 101: 404的问题
    Neo4j入门-开始使用
    关于乱码问题的一些思考
    搭建apache2.4+php7+mysql+phpmyadmin
    oracle dba 关闭 002
    oracle 正则表达式 非字母 非数字
  • 原文地址:https://www.cnblogs.com/longhx/p/15741310.html
Copyright © 2011-2022 走看看