Web组件(英语:Web Components)是W3C正在向HTML和DOM规范添加的一套功能,它允许在Web文档和Web应用程序中创建可重用的小部件(英语:Web Widget)或组件。这样做的目的是将基于组件的软件工程引入万维网。组件模型将允许单个HTML元素的封装和互操作性。
Web组件由四大部分组成,可单独或组合使用。
Google Chrome、Mozilla Firefox、Microsoft Edge、Safari和Opera已支持HTML模板。
自定义元素和影子DOM的一个早期版本(称为v0)已在某些基于Blink的浏览器(例如Google Chrome和Opera)以及Mozilla Firefox(需要手动修改配置)中支持。较新版的自定义元素和影子DOM(v1)API正在Safari 10、Google Chrome (53.0.2785)以及Mozilla Firefox中开发。Microsoft Edge尚未开始实现自定义元素和影子DOM。
对旧版浏览器的向后兼容性可以使用基于JavaScript的polyfill(英语:polyfill)实现。
已有多个程序库在创建自定义元素时基于Web组件以提高抽象度。几个比较为人熟知的是:X-Tag、Slim.js、Polymer(英语:Polymer (library))和Bosonic。
其中的Bosonic和Polymer提供可免费使用的现成组件。这些组件可交替使用,因为它们都基于开放的Web技术。
Alex Russell在2011年的Fronteers大会上首次提出Web组件。
Google在2013年发布了一个基于Web组件的程序库“Polymer”。