This is a guide intended to introduce to Web Components. Everyone can contribute here!
- Specifications
- Introduction
- Custom Elements
- Shadow DOM
- HTML Templates
- Tutorials
- Polyfills
- Libraries
- Frameworks
- Best Practices
- Blogs - History
- Who to follow
- License
Web Components the Right Way was made with love by Mateus Ortiz
-
Custom Elements provide a way for authors to build their own fully-featured DOM elements.
-
Shadow DOM describes a method of combining multiple DOM trees into one hierarchy and how these trees interact with each other within a document, thus enabling better composition of the DOM.
- W3C Editor's Draft
- DOM Living Standard, section 4.2.2: shadow tree
- DOM Living Standard, section 4.8: interface
ShadowRoot
- W3C DOM 4.1 Working Draft, section 4.2.2: shadow tree
- W3C DOM 4.1 Working Draft, section 4.8: interface
ShadowRoot
-
<template>
element is used to declare fragments of HTML that can be cloned and inserted in the document by script.
- The Holy Grail Of Reusable Components: Custom Elements, Shadow DOM, And NPM
- The Power of Web Components
- Web Components in 2018
- Making Web Components Work
- Web Components Introduction: Creating Custom HTML Elements in 2018
- Web Components — the right way
- Lessons Learned, making our app with Web Components
- Custom Elements v1: Reusable Web Components
- Custom Elements Everywhere
- All about HTML Custom Elements
- Introducing Custom Elements (WebKit)
- The Case for Custom Elements: Part 1
- The Case for Custom Elements: Part 2
- Custom Elements That Work Anywhere
- The future of accessibility for custom elements
- Using Custom Elements (MDN)
- A Guide to Custom Elements for React Developers
- Shadow DOM v1: Self-Contained Web Components
- The Rise of Shadow DOM
- What's New in Shadow DOM v1 (by examples)
- Introducing Slot-Based Shadow DOM API (WebKit)
- Using Shadow DOM (MDN)
-
"Let's Build Web Components!" by Benny Powers
-
"Web components: from zero to hero" by Pascal Schilp
- webcomponents.js - Suite of polyfills supporting the HTML Web Components specs.
- custom-elements - Polyfill for HTML Custom Elements v1.
- shadydom - ShadowDOM v1 shim.
- shadycss - ShadowDOM style encapsulation shim.
- template - Minimal polyfill for
<template>
.
- LitElement - Simple base class for creating fast, lightweight web components. Part of the Polymer Project.
- Polymer - Original web component library by the Polymer Project authors.
- Skate - Web component library focusing on a functional rendering pipeline and a small footprint.
- Omi - Next generation web framework in 4kb JavaScript (Web Components + JSX + Proxy + Store + Path Updating).
- hybrids - UI library for creating Web Components with simple and functional API.
- slim.js - Fast & Robust Front-End Micro-framework based on modern standards.
- Switzerland - Library allowing to create Web Components in a functional way via middleware functions.
- The Gold Standard Checklist for Web Components
- Custom Element Best Practices
- HowTo: Components
- Open Web Components Recommendations
- webcomponents.org - Home of the Web Components community.
- Polymer Blog - The latest goings-on with the Polymer project and in the community.
The articles below represent a long story of the Web Components specifications on the way towards the standardization. Some of them refer to earlier, so-called "v0" Shadow DOM and Custom Elements specs, and abandoned HTML Imports spec. These materials are here for historical reasons only, they are grouped by years and listed in chronological order.
- Web Components: The Long Game
- The broken promise of Web Components
- Regarding the broken promise of Web Components
- A No-Nonsense Guide to Web Components
- The State of the Componentised Web
- Web Components and you – dangers to avoid
- The Web's Declarative, Composable Future
Eric Bidelman | Addy Osmani | Rob Dodson | Web Components | Polymer |
Alex Komoroske | Pascal Precht | Zeno Rocha | Daniel Buchner | Angelina Fabbro |
Eduardo lundgren | Pascal Hartig | Sindre Sorhus | Christian Heilmann |
Copyright 2014-2018, All rights reserved.
Code licensed under the: MIT license
@author Mateus Ortiz mteusortiz@gmail.com