42 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Web Components
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## What are web components?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Web components are comprised of a series of web specifications created by the [W3C](https://w3c.github.io/).
							 | 
						||
| 
								 | 
							
								These specifications describe a set of web platform APIs that can be used to create reusable, encapsulated, and customizable HTML elements.
							 | 
						||
| 
								 | 
							
								By exposing the low level web APIs used by browser vendors to create the HTML elements you may already be familiar with, web components can be used across
							 | 
						||
| 
								 | 
							
								a variety of environments.
							 | 
						||
| 
								 | 
							
								This means whether you're working on a Wordpress site, a server rendered application, a Single Page Application (SPA) with the latest framework, or no framework at all,
							 | 
						||
| 
								 | 
							
								web components can be used.
							 | 
						||
| 
								 | 
							
								For the first time, regardless of what framework is used, you can understand the web as a platform to creature unique experiences that are easily
							 | 
						||
| 
								 | 
							
								translated from one platform to another.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Web Component Specifications
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Web components are defined in [four main specifications](https://www.webcomponents.org/introduction#specifications).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- **Custom Elements**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - The [Custom Elements specification](https://w3c.github.io/webcomponents/spec/custom/) lays the foundation for designing and using new types of DOM elements.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- **Shadow DOM**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - The [Shadow DOM specification](https://w3c.github.io/webcomponents/spec/shadow/) defines how to use encapsulated style and markup in web components.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- **ES Modules**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - The [ES Modules specification](https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-module-system) defines the inclusion
							 | 
						||
| 
								 | 
							
								    and reuse of JS documents in a standards based, modular, performant way.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- **HTML Template**
							 | 
						||
| 
								 | 
							
								  - The [HTML template element specification](https://html.spec.whatwg.org/multipage/scripting.html#the-template-element/) defines how to declare
							 | 
						||
| 
								 | 
							
								    fragments of markup that go unused at page load, but can be instantiated later on at runtime.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### More Information:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- [Introduction to web components](https://www.webcomponents.org/introduction)
							 | 
						||
| 
								 | 
							
								- [Extensible Web Manifesto](https://github.com/extensibleweb/manifesto)
							 | 
						||
| 
								 | 
							
								- [W3C Web Component Specification](https://w3c.github.io/webcomponents/explainer/)
							 |