Skip to content

Trombecher/aena

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aena

Warning

Still in beta. Do not use in production.

A small (~1.5kb) web framework written in JavaScript. Features:

  • 🪶 Ultra-lightweight
  • 🦅 Unopinionated
  • ✅ TSX
  • ✅ Type definitions
  • ✅ Zero dependencies
  • ✅ Zero throw expressions
  • ✅ Zero setup

Here is the classic counter example:

import {insertToString, mount} from "aena";
import {State, get, setState} from "aena/state";

let counter = new State(0);
mount(document.body, (
    <button onclick={() => setState(state, get(state) + 1)}>
        Clicked: {insertToString(state)}
    </button>
));

Installation

You can install Aena via NPM:

bun i aena

Thanks

Huge thanks to SolidJS for the types because extracting the types from specifications is very tedious. I also thank React for inspiration for the quickstart guide.