A minimal, lite weight and fast reactive UI framework built from scratch.
A very lite weight reactive ui framework, built from scratch. Inspired by Sinuous
npm i skratch
There is nothing more needed to create an app rather than appropriate application of few lines of code. It feels more like native but works 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());
Create a custom component with a function like react functional component and define it with a name to use inside another component 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 as 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 a function.
const App = () => html`
<main>
<h1>Hello from App Component</h1>
<${Comp} count="${count}" />
</main>
`;
React is MIT licensed.