好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WebComponents

WebComponents

Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的 功能 封装在您的 代码 之外)并且在您的 web 应用中使用它们。

Web Components 可以理解成 自定义 组件。

使用 Web Components 可以达到如原生的 video 标签 的 效果 , video 标签 在被浏览器解析后有许多子节点,如播放控制器部分的控制按钮,这些在使用 video 的时候是不需要关心的,也不用手动书写这些子节点,同时又能被多处复用。

这些子节点通常是看不见的,藏起来的,但是通过 Chrome 的设置可以 显示 出来。

这种看不见的子节点被称为 Shadow DOM ,许多文献称为 影子节点 或者 影子 DOM 。

Web Components 具有非常好的隔离性,特别在样式表现上,可以做到完全隔离。

1. 使用

一个 Web Components 继承自 HTMLElement ,然后通过 customElements.define() 来 注册 这个 Component 。

以下例子?会创建 一个 名为 to-imooc 的组件。

  class   ToImooc   extends   HTMLElement   {   // Web Components 继承自 HTMLElement 
   constructor  (  )   { 
     super  (  )  ;   //  调用  父类 构造 函数  

     const  link  =  document .  createElement  (  'a'  )  ;   // 创建 一个  a 元素 

    link . href  =   'javascript:;'  ;   //  默 认什么都不做 
    link . innerText  =   'GOGOGO! Imooc 出发!'  ;   //  显示 的文案 

    link .  addEventListener  (  'click'  ,   (  )   =>   {   //  跳转 事件 
       alert  (  '坐稳啦!要发车啦!!!'  )  ; 

      window . location . href  =   '//imooc.com'  ; 
     }  )  ; 

     this  .  append  (   // this 就是 自定义 的节点 
      link , 
      document .  createElement  (  'br'  )  , 
     )  ; 
   } 
 } 

window . customElements .  define  (  'to-imooc'  ,  ToImooc )  ; 
 

这样就创建好了 一个 自定义 的组件。

然后在 HTML 中使用就好了。

    < to-imooc  >     </ to-imooc  >  
   < to-imooc  >     </ to-imooc  >  
   < to-imooc  >     </ to-imooc  >  
   < to-imooc  >     </ to-imooc  >  
 

这样就完成了 一个 简单的组件,可以重复使用。

2. 应用

根据 Can I Use 可以看出,该特性现在浏览器 支持 并不广泛,不太适合在生产环境使用,但基于该特性,还是衍射除了许多 “未来”。

2.1 微前端

微前端 尚处在发展时期,其核心概念和 微服务 相似。

现阶段较为常用的微前端框架为 single-spa 和 qiankun ,后者是基于前者实现的。

该技术能做到 技术栈无关 ,即 一个 应用,能由多个不同技术的子应用构成,同时做到子应用的相互隔离,这里的隔离就可以选择采用 Web Components 实现。

2.2 Omi

Omi 是由腾讯开源的跨端框架,其就是基于 Web Components 来设计的。

3. 小结

虽然 Web Components 还存在兼容性问题,但可以作为预备知识进行了解,或者应用于一些内部对兼容性无要求的项目。

小程序 ? ?TypeScript

查看更多关于WebComponents的详细内容...

  阅读:30次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源