Lit

html
<my-app></my-app>

<script type="module">
  import {LitElement, html} from 'https://esm.sh/lit'

  class MyApp extends LitElement {
    handleClick() {
      alert('hi')
    }

    render() {
      return html `
      <h1>Welcome to my app</h1>
      <button @click=${this.handleClick}>I’m a button</button>
    `;
    }
  }

  customElements.define('my-app', MyApp)
</script>