Skip to content

front-of-house/hyposcript

Repository files navigation

hyposcript

npm version test coverage npm bundle size

Hyper minimal hyperscript for server rendering.

npm i hyposcript

Usage

Hyposcript has essentially the same API as hyperscript or React.createElement, so it should feel familiar.

The difference is: no DOM, only strings.

const { h } = require('hyposcript')

h('button', { class: 'btn' }, 'Click me!')

// => <button class="btn">Click me!</button>

JSX

To use with JSX you'll need to transpile or use a runtime.

For example, if you're using babel, your config should probably look something link this:

{
  "presets": [
    [
      "@babel/preset-react",
      {
        "pragma": "h",
        "pragmaFrag": "h"
      }
    ]
  ]
}

Benchmarks

Since hyposcript is basically just concatenating strings, benchmark comparisons with hyperscript or react are not really fair. And though vhtml and hyposcript are essentially the same, hyposcript does not escape HTML strings for you (be safe out there). Even so, there's a simple benchmark here for general reference. These were run on an 2.4 GHz 8-Core Intel Core i9 MacBook Pro.

hyperscript      x 27,932 ops/sec ±2.08% (89 runs sampled)
react            x 43,261 ops/sec ±0.63% (94 runs sampled)
vhtml            x 168,688 ops/sec ±0.67% (91 runs sampled)
hyposcript       x 444,603 ops/sec ±1.07% (89 runs sampled)

License

MIT License © Sure Thing