Skip to content

Latest commit

 

History

History
 
 

html

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

@hyperapp/html

Write HTML with plain functions.

Hyperapp's built-in h() function is intentionally primitive to give you the freedom to write views any way you like it. If you prefer a functional approach over templating solutions like JSX or template literals, here is a collection of functions—one for each HTML tag—to make your views faster to write and easier to read.

Here's the first example to get you started. Try it in your browser.

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="module">
      import { app } from "https://unpkg.com/hyperapp"
      import {
        main,
        h1,
        button,
        text,
      } from "https://unpkg.com/@hyperapp/html?module"

      const Subtract = (state) => ({ ...state, count: state.count - 1 })
      const Add = (state) => ({ ...state, count: state.count + 1 })

      app({
        init: (count = 0) => ({ count }),
        view: (state) =>
          main([
            h1(text(state.count)),
            button({ onclick: Subtract }, text("-")),
            button({ onclick: Add }, text("+")),
          ]),
        node: document.getElementById("app"),
      })
    </script>
  </head>
  <body>
    <main id="app"></main>
  </body>
</html>

Looking for @hyperapp/svg instead?

Installation

npm install @hyperapp/html

Then with a module bundler like Rollup or Webpack import it in your application and get right down to business.

import { a, form, input } from "@hyperapp/html"

Don't want to set up a build step? Import it in a <script> tag as a module.

<script type="module">
  import { a, form, input } from "https://unpkg.com/@hyperapp/html?module"
</script>

License

MIT