Přicházíš z Reactu nebo Vue a nic nedává smysl? Přečti si nejdřív Myšlenkový model: pět minut o tom, kam se poděly computed, watch, hooky životního cyklu a načítání dat.
$mol je reaktivní UI framework: popíšeš, co rozhraní je, a framework zjistí, jak a kdy ho aktualizovat. Žádné virtuální DOM, žádné ruční odběry, žádný useEffect. Komponenty píšeš jako strom; $mol vykresluje jen to, co je vidět, a přepočítává jen to, co se skutečně změnilo.Komponenta se skládá ze tří souborů:name.view.tree — deklarativní rozvržení (kompaktní stromový jazyk)name.view.ts — chování (obyčejné třídy TypeScriptu)name.view.css.ts — typované styly (kontrolované překladačem)Toto oddělení je celá myšlenka: rozvržení zůstává čitelné, logika testovatelná a styly typově bezpečné.Povinný sám o sobě není ani jeden ze tří. Strom je zkratka pro strukturu, kterou lze napsat i ručně: Z TypeScriptu do view.tree staví jednu komponentu oběma způsoby a ukazuje kód, do kterého se strom překládá.
Chceš malou aplikaci, která zůstane malá i když roste — runtime je kompaktní a vykreslování je ve výchozím stavu virtualizované.Máš rád typy všude — i styly kontroluje TypeScript.Jsi unavený z ručního propojování reaktivity — stav v $mol je reaktivní automaticky, jako v tabulkovém procesoru.
Počítadlo, celé:1$my_counter$mol_view2 sub /3<= Count $mol_view4 sub /<= count \5<= Increment $mol_button6 click?<=> increment?7 sub /<= label \+1namespace $.$${2export class $my_counterextends$.$my_counter{3@ $mol_memcount(){return 0}4@ $mol_actionincrement(){this.count(this.count()+1)}5}6}count je reaktivní: vše, co ho čte, se automaticky překreslí, když se změní. Žádné setState, žádné pole závislostí, žádný store k registraci.