39 lines
989 B
Markdown
39 lines
989 B
Markdown
---
|
|
tags: []
|
|
---
|
|
|
|
# Basics of Web Components
|
|
|
|
Web Components are custom HTML elements like those we create with frameworks
|
|
like React and Angular but which are native to HTML and the DOM and therefore do
|
|
not require any special compilation or libraries.
|
|
|
|
- Designed to be interoperable with normal HTML
|
|
- Designed to be interoperable with component frameworks like React
|
|
- Designed to be highly modular and reusable
|
|
- Utilise the shadow DOM which is like the virtual DOM but native to the browser
|
|
and invocable through plain JavaScript. A bit like an iFrame within the
|
|
"light" DOM and helps greatly with style-scoping.
|
|
|
|
## Example of composing a web component:
|
|
|
|
```js
|
|
// MyComponent.js
|
|
class MyComponent extends HTMLElement {
|
|
connectedCallback() {
|
|
this.innerHTML = `<h1>Hello world</h1>`;
|
|
}
|
|
}
|
|
|
|
customElements.define("my-component", MyComponent);
|
|
``;
|
|
```
|
|
|
|
```html
|
|
<!-- index.html -->
|
|
<my-component></my-component>
|
|
```
|
|
|
|
## Resources
|
|
|
|
[A complete introdution to Web Components]()
|