Awesome Web Components
Web Componentsを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
概要
- An Introduction to Web Components
- Intro to Web Components
- The Holy Grail Of Reusable Components: Custom Elements, Shadow DOM, And NPM
- The Motivation For Using Web Components, an Introduction
- The Power of Web Components
- Web Components 101
- Web Components: From the orbital height
- What are browser-native web components?
- Why Web Components?
標準
Custom Elements
Custom Elementsは、独自の完全な機能を持つDOM要素を作成する手段を提供します。
- A Guide to Custom Elements for React Developers
- All about HTML Custom Elements
- Custom elements
- Custom Elements v1: Reusable Web Components
- Handling properties in custom element upgrades
- Handy Custom Elements’ Patterns
- HTML Living Standard: Custom elements
- MDN - Using Custom Elements
- web-platform-tests
Shadow DOM
Shadow DOMは、複数のDOMツリーを一つの階層へ組み合わせ、文書内で相互作用させる方法を定め、DOMの構成を改善します。
- A complete guide on shadow DOM and event propagation
- DOM Living Standard: Shadow tree
- MDN - Using Shadow DOM
- Mind the document.activeElement!
- Open vs. Closed Shadow DOM
- Shadow DOM
- Shadow DOM and events
- Shadow DOM in depth
- Shadow DOM slots, composition
- Shadow DOM styling
- Shadow DOM v1: Self-Contained Web Components
- The Rise of Shadow DOM
- Understanding Slot Updates with Web Components
- What is the Shadow DOM?
- Who doesn’t love some slots?
- Your Content in Shadow DOM Portals
- web-platform-tests
HTML Templates
<template>要素は、スクリプトで複製して文書へ挿入できるHTML断片を宣言するために使います。
- Crafting Reusable HTML Templates
- HTML Living Standard: The
templateelement - HTML templates with vanilla JavaScript
- MDN - <template>: The Content Template element
- MDN - Using templates and slots
- Template element
- Templating in HTML
- The HTML5 template element
- Understanding The Template Element In HTML
- web-platform-tests
CSS Shadow Parts
CSS Shadow Partsは、スタイル設定のためにShadow DOM内部の特定要素を公開できるようにします。
- W3C First Public Working Draft
- CSS Shadow Parts are coming!
- MDN -
::part()CSS pseudo element - MDN -
partglobal attribute - ::part and ::theme, an ::explainer
- web-platform-tests
ガイド
アクセシビリティ
- Accessibility for Web Components
- Accessibility with ID Referencing and Shadow DOM
- Dialogs and shadow DOM: can we make it accessible?
- How to Make Accessible Web Components — a Brief Guide
- Managing focus in the shadow DOM
- The future of accessibility for custom elements
- The Guide to Accessible Web Components
- Web Components and the Accessibility Object model (AOM)
- Web Components punch list
- Web components still need to be accessible
ベストプラクティス
- Custom Element Best Practices
- Developing Components: Publishing
- Gold Standard Checklist for Web Components
- Guidelines for creating web platform compatible components
- How to Publish Web Components to NPM
- Open Web Components Recommendations
コードラボ
- Build a Story Web Component with LitElement
- Building Custom Elements with Web Components for the 2020 Elections
- Creating Custom Form Controls with ElementInternals
- From Web Component to Lit Element
- HowTo Components –
<howto-checkbox> - HowTo Components –
<howto-tabs> - HowTo Components –
<howto-tooltip> - Lit: basics
- Lit: intermediate
- Lit for React Developers
- Web Components: basics
例
- generic-components - アクセシビリティと使いやすさに焦点を当てた、一般的なウェブコンポーネントのコレクション。
- howto-components - 一般的なウェブUIパターンを実装したウェブコンポーネントのコレクション。
- Nude UI - アクセシブルでカスタマイズ可能かつ極めて軽量なウェブコンポーネントのコレク及。
- open-wc code examples - ウェブコンポーネントを開発するためのベストプラクティスとデザインパターンのコレクション。
- vanilla-retro-js - HTMLの非推奨タグを対象とした、純粋なJavaScriptによるUIコンポーネントライブラリ。
- web-components-examples - MDNウェブコンポーネントドキュメンテーションに関連するウェブコンポーネントの例のシリーズ。
記事
アーキテクチャ
- A deep analysis into isomorphic, autonomous cross-framework usage #MicroFrontends
- Frankenstein Migration: Framework-Agnostic Approach (Part 1)
- Frankenstein Migration: Framework-Agnostic Approach (Part 2)
- Generating Config driven Dynamic Forms using Web Components
- Hiding internal framework methods and properties from web component APIs
- How to deliver Custom Elements
- Making Web Components for Different Contexts
- Supporting both automatic and manual registration of custom elements
- Web Components — the right way
相互運用性
- Advanced Tooling for Web Components
- Custom Elements Everywhere
- Custom Elements That Work Anywhere
- JavaScript frameworks, meet Web Components
- Web Components aren’t a framework replacement - they’re better than that
- Web Components: Seamlessly interoperable
制約
- Beyond the polyfills: how Web Components affect us today?
- Custom elements, shadow DOM and implicit form submission
- Form-associated custom elements
- You might not need shadow DOM
スタイル設定
- Does shadow DOM improve style performance?
- Eschewing Shadow DOM
- How Nordhealth uses Custom Properties in Web Components
- Options for styling web components
- Style scoping versus shadow DOM: which is fastest?
- Styling a Web Component
- Styling in the Shadow DOM With CSS Shadow Parts
- Thinking Through Styling Options for Web Components
- Web Component Pseudo-Classes and Pseudo-Elements are Easier Than You Think
- Web Standards Meet User-Land: Using CSS-in-JS to Style Custom Elements
実利用
事例
- Apple Just Shipped Web Components to Production and You Probably Missed It
- Bringing Order to Web Design Chaos (with Web Components)
- Get moving with Microsoft’s FAST web components
- How Web Components Are Used at GitHub and Salesforce
- How we use Web Components at GitHub
- Implementing a Design Language System with Stencil.js
- ING ❤ Web Components
- ING Open-Sources Lion, Its White-Label Web Component Library – Q&A with Thomas Allmer
- Lessons Learned, making our app with Web Components
- Looking back on five years of web components
- Shipping Web Components in 2020
- The Firefox UI is now built with Web Components
- Using web components to encapsulate CSS and resolve design system conflicts
- Web Components at GitHub - Web Components SF Meetup
- Web Components at Scale at Salesforce: Challenges Encountered, Lessons Learnt
- Web Development At Scale: Composable Applications With Web Components
- web.dev engineering blog #1: How we build the site and use Web Components
コンポーネント
<active-table>- 編集可能なテーブルウェブコンポーネント。<api-viewer>- Web ComponentsのAPIドキュメンテーションとライブプレイヤー。<chess-board>- 独立したチェスボードウェブコンポーネント。<css-doodle>- CSSでパターンを描画するためのウェブコンポーネント。<dark-mode-toggle>- ダークモードのスイッチやトグルを作成できるカスタム要素。<deep-chat>- AI機能を備えたチャットウェブコンポーネント。<emoji-picker>- 軽量なエモジピッカー(ウェブコンポーネントとして配布)。<fg-modal>- アクセシブルなモーダルダイアログウェブコンポーネント。<file-viewer>- Svelteで構築されたファイルを表示するウェブコンポーネント。<json-viewer>- JSONデータをツリー表示するためのウェブコンポーネント。<lite-youtube>- 視覚的なパフォーマンスに注目した軽量YouTube埋め込み。<midi-player>- MIDIファイルプレイヤーおよびビジュアライザウェブコンポーネント。<model-viewer>- インタラクティブな3Dモデルをレンダリングするためのウェブコンポーネント。<notectl-editor>- プラグインアーキテクチャ、不変状態、ゼロ設定フレームワーク対応の現代的な豊富なテキストエディタ。<pdfjs-viewer-element>- PDF.js のデフォルトビューを埋め込むカスタム要素<phantom-ui>- 実際の DOM のサイズを測定して、それに合わせたシャイマープレースホルダーをレンダリングするスケルトンローダー<player-x>- メディアプレイヤーのウェブコンポーネント<progressive-image>- 画像プレースホルダーを段階的に強化するカスタム要素<qr-code>- カスタマイズ可能でアニメーション可能な SVG 基盤の QR コードをレンダリングするウェブコンポーネント<range-slider>- キーボード対応のアクセシブルな範囲スライダーのカスタム要素<rapi-doc>- OpenAPI スペックからドキュメンテーションを作成するウェブコンポーネント<shader-doodle>- シェーダーを書く・レンダリングするウェブコンポーネート<theme-switch>- ライト、ダーク、システムテーマの切り替えを可能にするアニメーション付きトグルボタン<trix-editor>- 日常的な文章作成に使える豊かなテキストエディタのカスタム要素<vime-player>- カスタマイズ可能で拡張可能でフレームワークに依存しないメディアプレイヤー<web-vitals>- 自作要素で web vitals をページに迅速に導入してください。
コンポーネントライブラリ
- AgnosticUI - CLIベースのUIコンポーネントライブラリ。Litウェブコンポーネントをプロジェクトに直接コピー。ReactおよびVue用のネイティブフレームワーク体験を提供する完全なラッパー。
- AMP - ユーザー中心のウェブサイト、ストーリー、広告、メールなどを作成しやすいウェブコンポーネントフレームワーク
- AnywhereUI - フレームワークバインディングを含む豊かなウェブコンポーネントのコレクション。StencilJSで作成。
- Apollo Elements - Apollo GraphQL とさまざまなウェブコンポーネントライブラリを組み合わせるカスタム要素
- AXA Pattern Library - AXA CH がWeb Componentsで構築したUIコンポーネントライブラリ
- Blackstone UI - Blackstone Publishingが開発したインターフェースを作成するウェブコンポーネント
- Blaze UI Atoms - Blaze CSS で駆動されたウェブコンポーネントのセット
- Brightspace UI core - Brightspaceアプリケーションを作成するためのウェブコンポーネントのコレクション
- Burnish Components - MCPツール呼び出し出力のUIをレンダリングするウェブコンポーネント
- Clever components - Clever Cloud が開発したウェブコンポーネントのコレクション
- Curvenote - インタラクティブな科学記事を作成するためのウェブコンポーネント
- DataFormsJS - SPAルーティング、ウェブサービスからのデータ表示など、独立したコンポーネント
- Dile Components - ウェブサイトおよびアプリケーション向けの一般用途ウェブコンポーネント
- elements-sk - 「a la carte」ウェブ開発に用いるカスタムエレメントのコレクション
- github-elements - GitHubのウェブコンポーネントコレクション
- Elix - 一般的なユーザーインターフェースパターンに最適な、高品質かつカスタマイズ可能なウェブコンポーネント
- Furo Webcomponents - Eclipse Furo と最適に連携する企業向けウェブコンポーネントセット
- Fusion Web Components - Equinor Fusion が使用するウェブコンポーネントシリーズ
- Ignite UI Web Components - Infragistics から提供されるUIコンポーネントの完全なライブラリ
- Immersive Custom Elements - 浸透型(VR&AR)コンテンツを埋め込むためのウェブコンポーネントセット
- Joomla UI custom elements - Joomla 4 カスタムエレメントのコンパイル
- Ketch.UP - Sme.UP 用のウェブコンポーネントライブラリ
- LDRS - 軽量かつカスタマイズ可能なロードアニメーション/スピナー
- Lion Web Components - 非常にパフォーマンスが高く、アクセシブルで柔軟なウェブコンポーネントのセット
- LRNWebComponents - ELMS:LN が生成したプロジェクト用のウェブコンのセット
- Lume - 3Dグラフィックス向けカスタムエレメント。Three.js でWebGL/WebGPUレンダリング、Solid.js で反応性とテンプレートを実現
- Medblocks UI - openEHRおよびFHIRシステムの迅速開発に用いるウェブコンポーネント
- Microsoft Graph Toolkit - Microsoft Graph向けのウェブコンポーネのコレクション
- Mutation testing elements - ウェブコンポーネントで可視化するための変更テスト結果のスキーマ
- Nightingale - 生命科学分野向けのデータ可視化ウェブコンポーネント
- Nuxeo Elements - Nuxeoでウェブアプリケーションを構築する際に使用するウェブコンポーネント
- One Platform Components - Red Hat One Platform向けのウェブコンポーネントセット
- Open Business Application Platform Web Components - ビジネスアプリケーション向けのウェブコンポーネントコレクション
- Pixano Elements - データアノテーションタスクに特化した再利用可能なウェブコンポーネント
- PlayCanvas Web Components - PlayCanvasエンジンで構築する3Dインタラクティブウェブアプリ向けのカスタムエレメント
- Playground Elements - サーバレスコード体験用のウェブコンポーネント
- Shoelace - 未来志向のウェブコンポーネントライブラリ
- Smart Web Components - ビジネスアプリケーション向けのウェブコンポーネント
- Stripe Elements - Stripe.js v3 Elements向けのカスタムエレメントワッパー
- TEI Publisher Components - TEI Publisherおよびその生成アプリケーションで使用されるウェブコンポーネントコレクション
- Titanium Elements - Leavitt Group Enterprisesが使用する軽量ウェブコンポーネのコレクション
- Tradeshift Elements - Tradeshift UIコンポーネントをウェブコンポーネントとして再利用
- TrendChart Elements - シンプルで軽量かつレスポンシブなチャートを生成するコンポーネント
- Umbraco UI Components - Umbraco CMS向けのユーザーインターフェースウェブコンポーネントコレクション
- Vaadin components - ビジネスウェブアプリケーション構築向けの高品質ウェブコンポーネントの進化セット
- VSCode Webview Elements - Webview APIを使用するVSCode拡張機能を構築するためのコンポーネント
- Warp View - Warp 10向けのチャートウェブコンポーネントコレクション
- Webmarkets web components - Webmarketsの公開ウェブコンポーネントセット
- Wired Elements - 手描き風のスケッチスタイルを持つ共通UI要素のセット
- Wokwi Elements - アーロンドと各種電子部品向けのウェブコンポーネント
- XWeather - OpenWeatherMap APIの一部を実装したウェブコンポーネントのコレクション
デザインシステム
- Astro Space UX Design System - 確立されたインタラクションパターンを活用した、豊かな宇宙アプリ体験を構築するためのコンポーネントセット
- Auro Design System - アルスカエアラインズのデザインシステムでアイデアを革新し、未来を共同で創出
- Blueprint UI - 柔軟で軽量なウェブコンポーネントを備えたウェブコンポーネントベースのデザインシステム
- Bolt Design System - Twigとウェブコンポーネドを活用したUIコンポーネント、再利用可能な視覚スタイルおよびツールセット
- Calcite Components - EsriのCalciteデザインフレームワークに共通するウェブコンポーネント
- Carbon Web Components - Web Componentsに基づくCarbonデザインシステムのバリエーション
- Clarity Core Web Components - Clarityデザインシステムからなるウェブコンポーネントのセット
- Crayons - Freshworksデザインシステムに準拠したウェブコンポーネントのコレクション
- FAST Components - FASTデザイン言語に基づくウェブコンポーネントのライブラリ
- Fluent UI Web Components - MicrosoftのFluentデザイン言語をサポートするウェブコンポーネントのライブラリ
- Forge Components - Forgeデザインシステムに準拠するウェブコンポーネントのライブラリ
- GOV.UK Web Components - GOV.UKデザインシステムを消費する、エンカプセルされたウェブコンポーネントのセット
- Helix UI - Helixデザインシステム向けのウェブコンポーネントライブラリ
- Liquid - Liquidデザインシステムに基づくUIコンポーネントライブラリ
- Lyne Components - Lyneデザインシステムの構成要素はウェブコンポーネントに基づいている
- Material Web Components - Material Designをウェブコンポーネントとして実装
- Momentum UI Web Components - Momentumデザインに基づくUIコンポーネントのセット
- Nord - Nordhealthの製品・デジタル体験・ブランド向けデザインシステム
- NuML | NUDE Elements - Web Components と実行時 CSS 生成をベースとした HTML フレームワークおよびデザインシステム
- NVIDIA Elements - AI/ML ファクトリー、ロボティクス、自律自動車向けのデザイン言語および UI アグリーティング
- OutlineJS - Web Components をベースとしたデザインシステムのスタートキット
- PatternFly Elements - 統一デザインキットをベースにした柔軟かつ軽量な Web Components のコレクション
- Pharos Design System - JSTOR のデザインシステムによる統一的でサポート的で美しい体験の実現
- Red Hat Design System - Red Hat ブランドによる一貫した体験を構築するための Web Components
- Siemens iX Web Components - Siemens iX デザインシステムを実装した Web Components
- Spectrum Web Components - Adobe Spectrum デザイン言語を Web Components で実装
- UI5 Web Components - SAP Fiori デザインガイドラインを実装した再利用可能な UI 要素のセット
- U-M Library Design System - ミシガン大学図書館デザインシステム
- Zooplus web components - Z+ ショップスタイルガイドを実装したウェブコンポーネントのセット
ユースケース
- How we chose to build our Design System using StencilJS Web Components
- How searching for a bundle-free React led me to web components
- Reasons Web Components are perfect for a big company
- 5 Reasons Web Components Are Perfect for Design Systems
- Web components: the secret ingredient helping power the web
- Web Components for Enterprise. Part 1: Salesforce, Oracle, SAP
- Web Components for Enterprise. Part 2: Nuxeo, Ionic, Vaadin
- Why I use Web Components - My use cases
- Why we use Web Components by @viljamis
- Why we use Web Components by @maxlynch
ライブラリ
クラスベース
- DNA - プログレッシブウェブコンポーネントライブラリ
- element-js - シンプルで軽量なWebコンポーネントベースクラスと美しいAPI
- FAST Element - パフォーマンスが高く、メモリ効率が良く、標準に適合したWebコンポーネのための軽量ライブラリ
- Forge Core - Forge Web Components を構築する際に使用される構成要素とユーティリティ
- Joist - 最小限の機能を追加するための小さなライブラリのセットで、開発者の生産性を高める
- Lit - 高速かつ軽量なWebコンポーネントを構築するためのシンプルなライブラリ
- Lightning Web Components - 極めて高速で企業レベルのWebコンポーネント基盤
- Lume Element - Solid.js のシグナルとエフェクトによって反応性とテンプレートを備えたカスタムエレメントの作成
- Omi - 4kb JavaScriptによる次世代ウェブフレームワーク(Web Components + JSX + Proxy + Store + Path Updating)
- Panel - ウェブコンポーネント+バーチャルDOM:強力なUI用のウェブ標準
- ReadyMade - デコレーターを使ってカスタムエレメントクラスを書く。依存関係なし
- slim.js - 現代の標準に基づく高速かつ堅牢なフロントエンドマイクロフレームワーク
- Stencil - ウェブコンポーネントを生成するコンパイラ
- Tonic - 極めてシンプルで安定し、審査に適したコンポーネントフレームワーク
- WebCell - VDOM、JSX、MobXおよびTypeScriptに基づくウェブコンポーネントエンジン
関数型
- atomico - 関数とハックを使ってウェブコンポーネントベースのインターフェースを作成するための小さなライブラリ
- Elemento - シグナルとLitを使って機能的なウェブコンポーネントを作成するための軽量ライブラリ
- haunted - ReactのHooks APIをウェブコンポーネントに実装
- hybrids - シンプルかつ機能的なAPIでウェブコンドメインを作成するためのUIライブラリ
- Solid Element - Solidにカスタムウェブコンポーネントと拡張を追加するライブラリ
統合
- ember-custom-elements - カスタムエレメントを使ってEmberおよびGlimmerのコンポーネントをレンダリング
- preact-custom-element - Preactコンポーネントからカスタムエレメントを生成/登録
- @adobe/react-webcomponent - Reactコンポーネントをカスタムエレメントに自動的にラップ
- nuxt-custom-elements - プロジェクトのコンポーネントをカスタムエレメントとして外部ページに統合できるようにエクスポート
- react-shadow - ReactでシャドウDOMを使用し、スタイルの封じ込めのすべてのメリットを享受
- reactify-wc - Reactのプロパティと関数を使ってウェブコンポーネントを使用
- remount - カスタムエレメントを使ってReactコンポーネントをDOMにマウント
- @riotjs/custom-elements - Riot.jsを使ってシンプルなAPIでオリジナルのカスタムエレメントを作成
ベンチマーク
- All the Ways to Make a Web Component
- web-components-benchmark - さまざまな例を使ってウェブコンポーネント技術をベンチマーク
- web-components-todo - ベンチマーク目的で、同じTODOアプリケーションを異なるWebコンポーネントライブラリで構築したもの。
フレームワーク
Angular
- Angular Elements Overview
- Building and consuming Angular Elements as Web Components
- How to use Angular ngModel and ngForms with WebComponents
- Using Web Components in Angular
- Web Components With Angular Ivy In 6 Steps
React
- 3 Approaches to Integrate React with Custom Elements
- Building Interoperable Web Components That Even Work With React
- Rendering React Components With Custom Elements
- How to use Web Components in React
- Using Web Components With Next (or Any SSR Framework)
Vue
Svelte
エコシステム
メタフレームワーク
- AMP - Webコンポーネントフレームワークで、ユーザー中心のウェブ体験を簡単に作成できる。
- Enhance - Web標準に基づくHTMLフレームワークで、軽量なウェブアプリケーションを構築できる。
- luna-js - WebComponents標準との対話がスムーズになるSSRフレームワーク。
- Rocket - 静的サイト向けの現代的なウェブセットアップにJavaScriptを少し加えたもの。
- Web Components Compiler - ネイティブWebコンポーネのサーバー側レンダリングを簡単にするコンパイラ。
- WebC - フレームワークに依存しないスタンドアローンHTMLシリアライザで、Webコンポーネントのマーカップを生成できる。
スターターキット
- Create Open Web Components - Webコンポーネントプロジェクトのスケルトンを作成するツール。
- custom-element-boilerplate - カスタムエレメントを作成するためのボイラープレート。
- hello-web-components - TypeScriptで書かれたシンプルなスタートアップ「hello world」Webコンポーネント。
- nutmeg - vanilla Webコンポーネントのビルド、テスト、公開を、少しのスパイスで行う。
テストソリューション
- capybara-shadowdom - CapybaraにShadow DOMの基本的なサポートを追加するRubyのgem。
- Cypress component tests for Lit - LitのWebコンポーネントのコンポーネントテストをCypressで実行する方法。
- cypress-lit - Cypressで、LitエレメントやネイティブWebコンポーネントを、現代的なブラウザでテストする。
- Developing Components: Testing - @web/test-runnerを使って、実際のブラウザでWebコンポーネントをテストする。
- How To Automate Shadow DOM In Selenium WebDriver - Mavenプロジェクト内でSelenium WebDriverを使ってShadow DOM要素を検索する。
- Native Automation support for Shadow DOM - Shadow DOMとオープンソースのテストフレームワーク。
- Open Web Components: Testing - テストライブラリを組み合わせて構成した、意見のあるパッケージ。
- query-selector-shadow-dom - Shadow DOMのルートを貫けるquerySelector、自動テストに有用。
- shadow-automation-selenium - Seleniumを使ってShadow DOMを自動化する。
- Testing Shadow DOM elements in Selenium - セレニウム4では、シャドウDOMノードにアクセスする方法が存在します
- Test web components with Playwright - あなたがネイティブなウェブコンポーネントをいくつか作成しました。それらを人気ブラウザでテストするにはどうすればよいでしょうか
- W3C Webdriver conquering automation of Shadow DOM - シャドウDOMツリーとW3Cのウェブドライバーとの相互作用
ツール
- Backlight - 開発者とデザイナーの協働を意識したBacklightは、チームがデザインシステムを構築・ドキュメント化・公開・拡張・維持できる非常に包括的なコーディングプラットフォームです
- Custom Elements Locator - ページ上のカスタム要素を検索するChrome拡張機能
- @storybook/web-components - シンプルなウェブコンポーネントスニペット向けのUI開発環境
- webcomponents.dev - ウェブプラットフォーム開発者向けのコンポーネントIDE
- web-component-analyzer - ウェブコンポーネントを分析し、ドキュメントや診断情報を出力するCLI
- Web Components Codemods - ウェブコンポーネのCodemods
書籍
- Web Components in Action - ベン・ファーレルによる書籍、マニングの早期リリースプログラムで入手可能
- Web Component Development with Modern Libraries and Tooling - マーク・フォルマーンによる書籍、マニングの早期アクセスプログラムで入手可能
- Web Component Essentials - コリー・リルンによる書籍、リーンプブで早期プレビュー版が入手可能
チュートリアル
- Building Web Components with Vanilla JavaScript
- Creating a Custom Element from Scratch
- Creating a Reusable Avatar Web Component
- Creating Web Components with Stencil
- Encapsulating Style and Structure with Shadow DOM
- Getting started with LitElement and TypeScript
- Web Components: from zero to hero
- Deep Dive: Web Components & Dependency Injection – The Experiment
- Handling data with Web Components
- How to use D3js with WebComponents
- Navigation Lifecycle using Vaadin Router, LitElement and TypeScript
- Recreating The Arduino Pushbutton Using SVG And
<lit-element> - Routing Management with LitElement and TypeScript
- Snake-Eating Game Making with Web Components of Omi and MVP Architecture
- Stencil – Web Components On Steroids
- Using Modern Web Components
- Using Web Components in WordPress is Easier Than You Think
- Web Components 101: Framework Comparison
- Web Components 101: Lit Framework
- Web Components Tools: A Comparison
- Where to begin building Web Components? - The Basics
- Where to begin building Web Components? - Class-based Libraries
知見
ポッドキャスト
- Code[ish], episode 38: Building with Web Components
- Frontend Happy Hour, episode 62: Web Components - shots of shadow DOM
- Labs Talk - Web Components with Peter Muessig
- Real Talk JavaScript, episode 7: Custom Web Components with Rob Wormald
- Real Talk JavaScript, episode 101: Back to Basics with Native HTML and LitElement
プレゼンテーション
- Are Web Components the Betamax of web development? by @lostinbrittany
- Designing Standard Systems by @stefsull and @bferrua
- Frontend Architecture for Scalable Design Systems by @salem_cobalt
- lit-apollo: Data-Driven Components that Use the Platform by @PowersBenny
- Mastering Shadow DOM by @Martine_Dowden
- Modernizing Large Frontends with Web Components by @samjulien
- Shadow DOM: off the beaten track by @serhiikulykov
- Using Web Components to Build a Framework-agnostic UI Library by @brianbouril and @danciupuliga
- Web Components and the AOM by @LeonieWatson
- Web Components and Styles Scoping by @bashmish
- Web Components can do that?! by @vogloblinsky
- Web Components: Introduction and State of the Art by @webcomp_dev
講演
- Better Apps: Delivering Universal UI Patterns as Web Components by @janmiksovsky
- Custom Web Shadow Elements, or Whatever… by @aerotwist
- Styling and Theming Web Components by @justinfagnani
- Web Components at Enterprise Scale by @diervo
利用統計
- Chrome Platform Status:
CustomElementRegistryDefine - Chrome Platform Status:
ElementAttachShadow - Chrome Platform Status:
HTMLTemplateElement
提案仕様
フォーム関連Custom Elements
- Form Participation API Explained - グーグル・クロームチームによるドキュメント
- Form-associated custom elements - クロームプラットフォームステータスにおける機能
- web-platform-tests
構築可能なStylesheetオブジェクト
- Specification Draft
- web-platform-tests
- Explainer
- Constructable Stylesheets - Chromeプラットフォームでの機能ステータス。
カスタム状態疑似クラス
その他
- bruck - ウェブコンポーネントとハウディニーパインAPIを用いて構築されたプロトタイピングシステム
- Vaadin Directory - ウェブコンポーネントを公開・議論・評価
- webcomponents.org - ウェブコンポーネントを議論・共有
アーカイブ
polyfill
現代のブラウザーは、以下のpolyfillなしでWeb Components標準をサポートします。 主な例外は、WebKit(Safari)がカスタマイズされた組み込み要素を受け入れないことです。
Custom Elements polyfill
- @webcomponents/custom-elements - ポリマーチームによるカスタムエレメントのポリフィル
- document-register-element - アンデラ・ギアマルチによるカスタムエレメントのポリフィル
カスタマイズされた組み込み要素のpolyfill
- @corpuscule/custom-builtin-elements - CorpusculeJS によるカスタマイズされた組み込み要素のポリフィル。
- @ungap/custom-elements-builtin - ungap project によるカスタマイズされた組み込み要素のポリフィル。
Shadow DOM shim
- @webcomponents/shadydom - シャドウDOM v1のシム
- @webcomponents/shadycss - シャドウDOMスタイルのエンカプスレーションシーム。
- @lwc/synthetic-shadow - LWC によるシャドウDOMポリフィル。
HTML Templates polyfill
- @webcomponents/template -
<template>向けの最小ポリフィルです。 - @ungap/import-node - ungap projectによるIE11向け
importNodeポリフィルです。
歴史
以下の記事は、Web Components仕様が標準化へ至る長い経緯を示します。 一部は初期の「v0」Shadow DOM/Custom Elements仕様や、廃止されたHTML Imports仕様を扱います。 これらは歴史的資料としてのみ残され、年別に時系列で掲載されています。
2019
- A history of the HTML slot element
- Web Components for Cross-Framework Component Libraries
- Web Components in 2019: Part 1
- Web Components in 2019: Part 2
- Web Components in 2019: Part 3
- Web Components in 2019: Part 4
- Developments in Web Components I’m excited about in 2019
2018
- Styling Accessibility: A Web Components Approach
- Web Components 101: An Introduction to Web Components
- Get started with Vue web components
- 6 Reasons You Should Use Native Web Components
- Web Components in 2018
- Web Components Introduction: Creating Custom HTML Elements in 2018
- Create & Publish Web Components With Vue CLI 3
- Extending Native DOM Elements with Web Components
2017
- Styling is critical to web component reuse, but may prove difficult in practice
- Web Components: The Long Game
- Web Components: Just in the Nick of Time (Polymer Summit 2017)
- Using Web Components in Ionic (Polymer Summit 2017)
- Web Components for VR (Polymer Summit 2017)
- Building UI at Enterprise Scale with Web Components (Polymer Summit 2017)
- Custom Elements Everywhere (Polymer Summit 2017)
- Evolving the Next Generation of Polymer Elements (Polymer Summit 2017)
- Polymer @ YouTube (Polymer Summit 2017)
- Web Components for CMS (Polymer Summit 2017)
- An intro to web components with otters
- The broken promise of Web Components
- Regarding the broken promise of Web Components
- Web Components v1 - the next generation
2016
- Introducing Custom Elements
- The Case for Custom Elements: Part 1
- The Case for Custom Elements: Part 2
- Demythstifying Web Components
- Extensible web components
- Web Component Challenges
- Web Components and progressive enhancement
- Update on standardizing Shadow DOM and Custom Elements
- What’s New in Shadow DOM v1 (by examples)
- Why web components are so important
- Understanding Web Components
2015
- Introducing Slot-Based Shadow DOM API
- There is an Element for that
- What happened to Web Components?
- Web Components and their role in the future of web development
- Microsoft Edge and Web Components
- Bringing componentization to the web: An overview of Web Components
- Why Web Components will make the web a better place for our users
- Practical Questions around Web Components
- The state of Web Components
2014
- A No-Nonsense Guide to Web Components, Part 1: The Specs
- A No-Nonsense Guide to Web Components, Part 2: Practical Use
- Web Components + Backbone: A Game-Changing Combination
- Mozilla and Web Components: Update
- Server-less applications powered by Web Components
- Web Components and the Future of CSS
- Easy composition and reuse with Web Components
- Let’s build some apps with Polymer!
- Polymer: State of the Union
- Web Components 101: An Introduction to Fundamental Changes in HTML
- Web Components 201: Designing Web Components for Reuse
- Why Web Components — Does the Web Really Need Another Component?
- “Don’t stop thinking about tomorrow” - AngularJS and Web Components
- Multi-device Apps with Web Components
- As I Walk Through The Valley Of The Shadow Of DOM
- Why Web Components Are Ready For Production
- The State of the Componentised Web
- An Addendum to Why Web Components Aren’t Ready for Production Yet
- Why Web Components Aren’t Ready for Production… Yet
- Component Interop With React And Custom Elements
- Accessibility of Web Components
- Componentize The Web: Back To The Browser!
- Google I/O 2014 - Polymer and the Web Components revolution
- Google I/O 2014 - Polymer and Web Components change everything you know about Web development
- Google I/O 2014 - Unlock the next era of UI development with Polymer
- Making Polymer Elements Accessible
- Building an Accessible Disclosure Button – using Web Components
- The Road to Web Components
- The Web Components Revolution is Here
- Web Components: A chance to create the future
- Web Component Mashups at 3 a.m.
- Web Components Tools & Libraries
- Web Components Can Do That?!
- Web Components and you – dangers to avoid
- HTML as Custom Elements
- The Web’s Declarative, Composable Future
- Using Polymer to Create Web Components
- The Shadow DOM Diaries
- A Detailed Introduction To Custom Elements
2013
- A future called Web Components
- Building Mobile Web Applications With Brick
- Polymer: declarative, encapsulated, and reusable components for the web
- Web Components: Why you’re already an expert
- Yo Polymer: a new way of building web apps
- Performance and Custom Elements
- Web Components Revolution
- A Guide to Web Components
- Return of Inspector Web: Web Components a Year Later
- Working with Custom Elements
- Creating Reusable Markup with The HTML Template Element
- Working with Shadow DOM
- Breaking Development: Web Components
- Web Components: A Tectonic Shift for Web Development - Google I/O 2013
- Web Components: Getting Started
- Shadow DOM 101
- Shadow DOM 201
- Shadow DOM 301
- Visualizing shadow DOM concepts
- Web components and the future of web development
- HTML’s New Template Tag
2012
- The Basics of the Shadow DOM
- Notes on Web Components + ARIA
- Google I/O 2012 - The Web Platform’s Cutting Edge
- Introduction to Web Components
2011
フォロー推奨
Polymer
|
Stencil
|
open-wc.org
|
webcomponents.dev
|
Justin Fagnani
|
Viljami Salminen
|
Jan Miksovsky
|
Serhii Kulykov
|
メンテナー
- 2014年に@mateusortizが作成しました。
- 2018年から@web-padawanが保守しています。