Guida · Il comportamento
Il vocabolario degli eventi
Due insiemi, e nessuno dei due si deduce dall’altro: quello che l’interfaccia sa dire, e quello a cui il progetto sa rispondere.
Dove siamo
Hai lanciato un evento e hai visto che un nome sbagliato non dà errore. Alla fine di questo capitolo saprai dove si dichiara un canale, e perché il sistema non può controllarlo al posto tuo.
Il gesto
Apri db.events.json. Ogni voce ha name, label, description, group.
Aggiungine una. Ricarica l’admin: il nome compare nella select del campo evento.
// db.events.json — una voce del catalogo
{
"name": "admin:toggle",
"label": "Apri/chiudi l’editor",
"description": "Nessuno risponde sul bus: l’editor lo ascolta dall’interno.",
"group": "admin"
}Cos’è appena successo
Hai dichiarato che quel canale esiste, non che qualcuno risponde. Sono due cose diverse: un evento è ciò che l’interfaccia sa dire, un handler è ciò che il progetto fa quando lo sente.
La select dell’admin offre l’unione dei due insiemi — gli handler registrati più i nomi dichiarati qui. Un canale dichiarato senza handler è legittimo: l’ascoltatore può essere un componente che se lo prende dall’interno, o può non esserci ancora. Un handler senza dichiarazione funziona lo stesso, da codice.
La divergenza è asimmetrica di proposito. Dedurre gli eventi dagli handler renderebbe indicibile ciò che non ha ancora una risposta, e questo è esattamente il caso in cui si progetta prima l’interfaccia.
Quando non funziona
Il rischio vero non è qui, è quando un dato esistente contiene un nome fuori dall’unione: la select non lo riconosce, lo mostra vuoto, e il primo salvataggio lo perde in silenzio.
Il controllo è una ricognizione sui documenti: si raccolgono i valori distinti di event e run dentro le pagine e i global, e si confrontano con l’unione. Quelli scoperti vanno aggiunti al catalogo. È una verifica da fare prima di un deploy, non dopo — perché il momento in cui il dato si perde è un salvataggio qualsiasi.
Avanti
Sai dichiarare un canale. Nel capitolo dopo gli dai un destinatario.