Nim per il frontend web: componenti Karax
Scritto da Andrea Manzini
Abbiamo visto quanto sia semplice con Karax creare delle piccole applicazioni interattive, senza scrivere una riga di Javascript. Nella realtà, la programmazione web è molto più complessa ma possiamo semplificare il processo suddividendo le pagine in componenti indipendenti, che poi verranno assemblati ed “usati” nella pagina principale.
In questa guida vedremo dunque un semplice componente che modella un “orologio” autonomo e configurabile dall’esterno, insieme ad una semplice applicazione che sfrutta il componente. L’idea di fondo è che ogni componente è un oggetto Nim, derivato da una specifica classe VComponent (fornita da karax).
sul repository potete trovare il sorgente completo dell’applicazione e una live demo funzionante, ma evidenziamo anche qui le parti salienti. Partiamo dal componente:
|
|
Questo oggetto avrà almeno:
- alcuni campi per mantenere il suo stato interno
- un metodo render che ritorna la sua rappresentazione HTML
- un costruttore, per inizializzare gli attributi e creare l’istanza dell’oggetto
in più, nel nostro caso, avremo un metodo update (righe 19-23) che aggiorna periodicamente lo stato dell’oggetto e si preoccupa di informare Karax che questo nodo del Virtual Dom va ridisegnato. La funzione setTimeout
non fa parte di Karax ma è inclusa nella libreria standard, package std/dom
.
Una volta salvato il componente in un file appropriato, non ci resta che “usarlo” in una applicazione web. Per andare un po’ oltre i semplici esempi dell’introduzione, includiamo la possibilità di creare e distruggere dinamicamente gli “orologi” tramite pulsanti e di configurare il fuso orario con una casella di input numerico. Nonostante queste funzionalità, l’applicazione rimane leggibile perchè la logica della gestione componenti è incapsulata nella classe separata.
|
|