Stencil
Stencil is a compiler for generating Web Components. It combines the best concepts of modern frameworks — reactive data-binding, TypeScript, and JSX — into a tool that produces standards-compliant custom elements.
Usage
Demo
Component Syntax
Stencil components are written in TypeScript with decorators and JSX. They are rendered as custom HTML elements:
import { Component, Prop, State, h } from "@stencil/core";
@Component({
tag: "my-counter",
styles: `button { font: 1em sans-serif; }`,
})
export class MyCounter {
@Prop() label: string;
@State() count = 0;
render() {
return (
<div>
<p>{this.label}: {this.count}</p>
<button onClick={() => this.count++}>Click me</button>
</div>
);
}
}
The component is then used in HTML as a custom element:
<my-counter label="Counter"></my-counter>
Language Info
Name
stencil
Extensions
.stencil.tsx
Editor
script
Compiler
Version
@stencil/core: v3.2.2
Code Formatting
Using Prettier.
Custom Settings
Custom settings added to the property stencil are passed as transpile options to the Stencil compiler. Please check the documentation for full reference.
Please note that custom settings should be valid JSON (i.e. functions are not allowed).
Example:
Custom Settings
{
"stencil": {
"target": "es2019"
}
}
Starter Template
https://livecodes.io/?template=stencil