Razumevanje State Machines v Almadar
State machines so v jedru Almadarja. V tem prispevku raziskujemo, zakaj smo izbrali state machines kot temelj za vedênje aplikacije.
Zakaj State Machines?
Tradicionalne web aplikacije pogosto trpijo zaradi nepredvidljivega vedênja. Gumb lahko počne različne stvari, odvisno od skritega stanja, race condition ali implicitnih predpostavk, zakopanih v kodi.
State machines to rešijo z izpostavljanjem vsakega možnega stanja in vsakega prehoda namenskega.
Anatomija Almadar State Machine
Vsak trait v Almadar vsebuje state machine:
{
"name": "Toggleable",
"stateMachine": {
"states": [
{ "name": "off", "isInitial": true },
{ "name": "on" }
],
"transitions": [
{
"from": "off",
"event": "TOGGLE",
"to": "on",
"effects": [
["render-ui", "main", { "type": "toggle", "active": true }]
]
},
{
"from": "on",
"event": "TOGGLE",
"to": "off",
"effects": [
["render-ui", "main", { "type": "toggle", "active": false }]
]
}
]
}
}
Ključni koncepti
Stanja
Stanja predstavljajo možna stanja vašega entity. Vsako stanje je eksplicitno in poimenovano.
Dogodki
Dogodki sprožijo prehode. Lahko prihajajo iz uporabniških akcij, sistemskih dogodkov ali drugih orbitalov.
Prehodi
Prehodi definirajo, kako se vaš entity premika iz enega stanja v drugo. Vsak prehod lahko ima:
- Guard: Pogoji, ki morajo biti izpolnjeni
- Effects: Akcije za izvedbo (posodobi polja, renderiraj UI, emitiraj dogodke)
Effects
Effects so stranski učinki prehoda. Almadar podpira:
set- Posodobi polje entityincrement/decrement- Spremeni številkerender-ui- Renderiraj UI vzorecemit- Objavi dogodke drugim orbitalompersist- Shrani v bazonavigate- Spremeni route
Koristi
- Predvidljivost: Vedno veste, v katerem stanju je vaša aplikacija
- Testabilnost: Testirajte vsak prehod neodvisno
- Varnost: Guardi preprečujejo nepooblaščene spremembe stanja
- Debugging: Zgodovina stanj naredi napake reproducibilne
Naslednji koraki
Pripravljeni graditi s state machines? Preverite naš Getting Started vodnik.
