> **TLDR;** See the [quick start example](#quick-start-example) you can just copy, refactor, and modify 😉 Web Component Base --- [](https://www.npmjs.com/package/web-component-base) [](https://www.npmjs.com/package/web-component-base) [](https://www.npmjs.com/package/web-component-base) This provides a very minimal base class for creating reactive custom elements easily. When you extend the `WebComponent` class for your component, you only have to define the `template` and `properties`. Any change in any property value will automatically cause just the component UI to render. The result is a reactive UI on property changes. ## Table of Contents 1. [Vanilla JS import](#vanilla-js-import) 1. [Installation](#installation) 1. [Usage](#usage) 1. [Quick Start Example](#quick-start-example) 😉 1. [Life-Cycle Hooks](#life-cycle-hooks) 1. [`onInit`](#oninit) - the component is connected to the DOM, before view is initialized 1. [`afterViewInit`](#afterviewinit) - after the view is first initialized 1. [`onChanges`](#onchanges) - every time an attribute value changes ## Vanilla JS import Import using [unpkg](https://unpkg.com/web-component-base) in your component. We will use this in the rest of our [usage examples](#usage). ```js import WebComponent from "https://unpkg.com/web-component-base"; ``` ## Installation If you have a bundler to help resolving imports: ```bash npm i web-component-base ``` ## Usage In your component class: ```js // HelloWorld.mjs import WebComponent from "https://unpkg.com/web-component-base"; class HelloWorld extends WebComponent { name = "World"; emotion = "excited"; static properties = ["name", "emotion"]; get template() { return `