skratch

Small reactive ui framework from WebSyncs

Usage no npm install needed!

<script type="module">
  import skratch from 'https://cdn.skypack.dev/skratch';
</script>

README

#️⃣ Skratch GitHub license npm version PRs Welcome

A very light weight reactive ui framework build from scratch. Inspired by Sinuous

Installation

npm i skratch

Examples

There is nothing needed to create an app with few lines of code. It feels more like native but work like react.

import { o, html } from 'skratch';
const count = o(1);
const App = () => html`
  <div>
    <div class="myclass">The count is ${count}</div>
  </div>
`;
setInterval(() => {
  count(count() + 1);
}, 1000);
document.body.append(App());

Custom Component

Create a custom component with a function like react functional component and define it with a name to use inside another as a custom html tag.

import { html, define } from 'skratch';
export const Comp = (props, children) => {
  return html`<div style="background:#555">
    ${() =>
      props.count() % 2 == 0
        ? html`<h1>Even</h1>`
        : html`<h1>Odd</h1>`}
    ${children}
  </div>`;
};
define('Comp', Comp);

Then use it like if you are using in jsx

const count = o(1);

const App = () => html`
  <main>
    <h1>Hello from App Component</h1>
    <Test count="${count}">
      <div class="myclass">This is a child element</div>
    </Test>
  </main>
`;

setInterval(() => {
  count(count() + 1);
}, 1000);

document.body.appendChild(App());

It can also be called as function.

const App = () => html`
  <main>
    <h1>Hello from App Component</h1>
    <${Comp} count="${count}" />
  </main>
`;

License

React is MIT licensed.