Skip to content

www3838438/hyperHTML

Repository files navigation

hyper(HTML)

hyperHTML logo

A Fast & Light Virtual DOM Alternative available for NodeJS and NativeScript too.


donateBackers on Open CollectiveSponsors on Open Collective

Coverage StatusBuild StatusLicense: ISCGreenkeeper badge


Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Backers

Thank you to all our backers! 🙏 [Become a backer]

Contributors

This project exists thanks to all the people who contribute. [Contribute].


V2.5 Highlights

  • <self-closing /> tags for both custom elements and any other as well 🎉

V2 Highlights

Following most important changes in version 2:

  • fully rewritten, and consumable, as ES2015 Module
  • usable via CDN as bundled global hyperHTML variable
  • restructured in modules, utilities, helpers, and commented all over for simplified contribution
  • removed.escape and .adopt, either useless or unstable. hyperHTML.adopt will be implemented as module a part
  • added support for objects as style attribute, fully compatible with Preact implementation
  • improved performance in numerous ways
  • custom elements V0 and V1 are now fully, and properly, supported through document.importNode and/or regular cloneNode tested against common polyfills
  • back to 4.6K thanks to rollup and its ability to merge all the things together like it was already in V1

Documentation

A proper documentation full of examples can be found in viperhtml.js.org.

Basic Example

The easiest way to describe hyperHTML is through an example.

// this is hyperHTMLfunctiontick(render){render` <div> <h1>Hello, world!</h1> <h2>It is ${newDate().toLocaleTimeString()}.</h2> </div> `;}setInterval(tick,1000,hyperHTML(document.getElementById('root')));

Features

  • Zero dependencies, no polyfills needed, and it fits in about 4.6KB (minified + brotli)
  • Uses directly native DOM, no virtual DOM involved
  • Designed for template literals, a templating feature built in to JS
  • Compatible with plain DOM elements and plain JS data structures
  • Also compatible with Babel transpiled output, hence suitable for every browser you can think of

Compatibility

IE9+ , iOS8+ , Android 4+ and every modern Mobile or Desktop Browser. You can verify directly through the following links:

Questions ?

Please ask anything you'd like to know in StackOverflow using the tag hyperhtml so that others can benefit from answers and examples.

hyper or lit ?

You can read more on this hyperHTML vs lit-html comparison.

installation?

npminstallhyperhtml

If your bundler does not work with the following:

// ES6importhyperHTMLfrom'hyperhtml';// CJSconsthyperHTML=require('hyperhtml');

You can try any of these other options.

importhyperHTMLfrom'hyperhtml/esm';// orimport{hyper,wire,bind,Component}from'hyperhtml/esm';// orimporthyperHTMLfrom'https://unpkg.com/hyperhtml?module';consthyperHTML=require('hyperhtml/cjs').default;// orconst{hyper, wire, bind, Component}=require('hyperhtml/cjs');

In alternative, there is a pre-bundled require("hyperhtml/umd") or via unpkg as UMD module.

About

A Fast & Light Virtual DOM Alternative

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML71.2%
  • JavaScript28.0%
  • CSS0.8%