什么是Web Components

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

背景

  • 组件化开发已经是前端主流开发方式,因为组件化开发在代码复用提升团队效率方面有着无可比拟的优势,现在流行的React,Vue都是组件框架。
  • 谷歌公司一直在推动浏览器的原生组件,即 Web Components API。相比第三方框架,原生组件简单直接,符合直觉,不用加载任何外部模块,代码量小。目前,它还在不断发展,但已经可用于生产环境。

组件:最初的目的是代码重用,功能相对单一或者独立。在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层。

使用方法
1. 创建一个类或函数来指定web组件的功能,推荐请使用 ECMAScript 2015 的类语法。
2. 使用 CustomElementRegistry.define() 方法注册自己的新自定义元素 ,并向其传递要定义的元素名称、指定元素功能的类、以及可选的其所继承自的元素。
3. 如果需要的话,使用Element.attachShadow() 方法将一个shadow DOM附加到自定义元素上。使用原生的DOM方法向shadow DOM中添加子元素、事件监听器等。
4. 如果需要的话,使用 <template>和<slot> 定义一个HTML模板。再次使用常规DOM方法克隆模板并将其附加到shadow DOM中。
5. 最后在页面中使用我们的自定义元素,就像使用原生HTML元素一样

写一个Web Components组件
1. 预期效果:预期渲染一个这样的自定义品牌名片到页面上面

只要开发者在页面上调用了<company-card></company-card>即可渲染页面,根据规范,自定义元素的名称必须包含连词线,用与区别原生的 HTML 元素

2. 自定义的元素需要使用js类来创建,页面中所有的自定义元素都会是这个类的实例:

然后就可以实现基础效果:

然后我们的js直接取出自定义元素上面的属性赋值给对应的标签即可

3.使用template来创建元素

  • 如果使用原生js来创建组件,我们的开发效率会大打折扣,达不到我们想要的组件化提升效率的目的,所以浏览器提供了template来创建元素,重新写一下样式代码。
  • 同时组件里面的数据,我们可以通过在自定义标签上写属性,传入到组件里面,更加符合组件开发的思路。

然后我的js直接取出自定义元素上面的属性赋值给对应的标签即可。

4. 加入样式
组件的样式需要加入到template组件里面,为每个组件独享的样式,跟vue思路差不多最终的template可能是这样的

5. 最终实现效果

生命周期函数 在custom element的构造函数中,可以指定多个不同的回调函数,它们将会在元素的不同生命时期被调用

结语:

不得不承认,Web Components 标准的提出解决了一些问题,必须交由浏览器去处理的是 Shadow DOM,在没有Shadow DOM 的浏览器上实现代码隔离的方式多多少少有缺陷。个人我觉得组件化的各个 API 不够简洁易用,依旧有 getElementById 这些的味道,但是交由各个类库去简化也可以接受,而 import 功能上没问题,但是加载多个

组件时性能问题还是值得商榷,标准可能需要在这个方面提供更多给浏览器的指引,例如是否有可能提供一种单一请求加载多个组件 HTML 的方式等。

在现在的移动化趋势中,Web Components 不仅仅是 Web 端的问题,越来越多的开发者期望以 Web 的方式去实现移动应用,而多端复用的实现渐渐是以组件的形式铺开,例如 React Native 和 Weex。所以 Web Components 的标准可能会影响到多端开发 Web 化的一个模式和发展。

但是,对于Web Components的发展前景还是比较看好,生产环境下还是观望一下就好。

什么是web components?相关推荐

  1. 【译】Web Components简介

    本文翻译自:css-tricks.com/an-introduc- 前端开发正在以惊人的速度发展.曾经的前端开发,技术栈都是很简单的,如今却越来越复杂.这一点从无数的文章.教程和Twitter上就可以 ...

  2. Web Components 简述

    要说最近几年来,前端开发最火的一个趋势或最火的前端开发框架是什么,第一想到的是,组件及推崇组件化开发的React框架.本文将介绍Web Components规范并就组件的几大特性进行讨论. 前言 在开 ...

  3. 在ASP.NET中使用Office Web Components (OWC)创建统计图

    图形和图表是Web上数据表现的很好的形式,在ASP.NET,可以使用Office Web Components (OWC)来创建统计图.Office Web Component (OWC)是包含在Mi ...

  4. 【译】 Web Components 的高级工具

    原文地址:Advanced Tooling for Web Components 原文作者:Caleb Williams 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold ...

  5. Fiori Fundamentals和SAP UI5 Web Components

    这周有位同事邀请我给团队讲一讲SAP技术的演进历史,所以我准备了下面几个主题来介绍. 其中SAP的技术回顾和演进,我的思路就是从前后台两方面分别介绍. 我画了一张非常简单的图: 去年5月我写过一篇文章 ...

  6. Web Components 上手指南

    现在的前端开发基本离不开 React.Vue 这两个框架的支撑,而这两个框架下面又衍生出了许多的自定义组件库: Element(Vue) Ant Design(React) 这些组件库的出现,让我们可 ...

  7. Firefox UI已迁移至Web Components

    这不是一项一蹴而就的工程,Mozilla 开发者表示团队花费了大约两年的时间,采用"增量更新"的方式才逐渐将 Firefox UI 迁移至使用 Web Components 构建. ...

  8. Programming MS Office 2000 Web Components第二章第一节(第二部分)

    排序和过滤 阅读本节时,如果您打开随书光盘Samples\Chap02目录下的SortFilterExample.htm文件.您会发现这个例子很有用.本节展示的代码和描述的特定环境来自这个文件. 电子 ...

  9. [转载]Programming MS Office 2000 Web Components第二章第三节

    第二章第三节 编程模型要点 现在总结一下我们对电子表格组件的介绍,我将讲述(电子表格)控件编程模型的各个要点,以便您了解如何运用这个控件,以及当您需要编写脚本来实现不同的功能时该如何去做.本节不是编程 ...

  10. Vue 与 Web Components

    Web Components 是一组 Web 原生 API 的总称,允许开发人员创建可重用的自定义组件. 在 Vue 和 Web Components 大体上是互补的技术.Vue 能很好地解析和创建自 ...

最新文章

  1. shell相关测验题
  2. Java如何读取JAR包外的properties文件及打成jar包后无法读取到jar包内的properties文件
  3. linux网络编程一:主机字节序与网络字节序的的判断
  4. FFmpegInterop 库在 Windows 10 应用中的编译使用
  5. Java语言实现插值查找
  6. buu [GKCTF2020]汉字的秘密
  7. 使用Docker运行java项目需要注意的glibc依赖库问题
  8. Spark streaming java代码
  9. mac wmware 无网络_无线网络中常用的技术名词
  10. 子查询 不同情况 mysql
  11. BlogEngine.NET 1.5的BlogProvider、DbBlogProvider
  12. scrapy.request
  13. RSA加密算法理解(整理自网络)
  14. 软件测试之Web测试流程和方法
  15. Django支付宝在线支付
  16. WIN10鼠标乱跳问题解决办法
  17. Nginx平滑升级与自定义错误页面
  18. 金工计算机测试题,金工考试题精选.doc
  19. 服务器独享宽带和共享宽带有那些区别
  20. XML shema 约束入门 (2 ) 约束文件加入与说明

热门文章

  1. ubuntu mysql 二进制安装_Linux 从二进制版安装 MySQL 5
  2. 围城书评_书评:优化Java
  3. 计算机辅助工程分析课程论文,教学大纲—计算机辅助工程分析.doc
  4. 翻译心得 —— Cornel Imaging
  5. javac不是内部或外部命令解决方案
  6. 原生小程序实现左滑触线删除按钮
  7. 笔记本计算机无法启动怎么解决,笔记本突然无法开机的原因_笔记本突然关机无法开机怎么解决-win7之家...
  8. 生育相关政策解答(转)
  9. 硬件板卡功耗与散热性能测试规范
  10. 深度deepin安装惠普hp打印机