2.0.2 • Published 6 years ago

xou v2.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Features

  • Tagged template literals
  • Diffing on real dom nodes
  • Tiny at just 4kb

Install

$ npm install xou

Usage

const xou = require('xou');

const time = xou`<span>Time: ${ (new Date()).toUTCString() }</span>`;

document.body.appendChild(time);

setInterval(() => {
  const newTime = xou`<span>Time: ${ (new Date()).toUTCString() }</span>`;
  xou.update(time, newTime);
}, 1000);

API

xou``

A tagged template literal returning dom nodes

Example

const node = xou`<div>
  <h1>Hello from xou</h1>
  <p>Xou on <a href="https://github.com/herber/xou">github</a></p>
</div>`;

document.body.appendChild(node);

xou.update(oldNode, newNode)

xou.update diffs an old and a new dom node. The changes will be applied to oldNode.

Example

const hello = xou`<span>Hello!<button onclick=${ () => { update(); } }>Update</button></span>`;

const update = () => {
  const hi = xou`<span>Hi!</span>`;
  xou.update(hello, hi);
}

document.body.appendChild(hello);

Other Modules

This whole thing is powered by hyperx and nanomorph - two tiny but really great packages.

This module is heavily inspired by yo-yo - xou is basically a smaller alternative to yo-yo.

Xou pairs really well with vxv for styles and nation for state management.

License

MIT © Tobias Herber