Slate è un framework interamente dedicato alla creazione di RTE (Rich Text Editor) che permette di produrre strumenti di alta qualità dedicati al Web, come quelli che possiamo trovare all'interno di applicazioni che stanno alla base di piattaforme quali Medium, Dropbox e Google Docs. Ispirato a strumenti molto apprezzati come Draft.js, Prosemirror e Quill, Slate è costruito come una sorta di implementazione/plug-in della proprietà contenteditable
basata sulle tecnologie React ed Immutable.
Attualmente, Slate è rilasciato in versione beta, dunque, come affermano giustamente i suoi sviluppatori, esistono ancora svariati bug da fixare e comportamenti imprevisti nella realizzazione di task complesse, caratteristiche che verranno limate nel futuro prossimo con le varie release stabili. Questo sebbene le API correnti siano perfettamente utilizzabili.
Alcune caratteristiche di Slate:
- i suoi componenti sono entità di primo livello nella logica d'implementazione del software. Anche il core, infatti, è implementato come fosse un componente/plug-in. Questa struttura permette di customizzare il prodotto praticamente in ogni dettaglio.
- Il document model utilizzato in Slate è una struttura ad albero innestata e ricorsiva, proprio come il vero Document Object Model (DOM). Questo significa che la creazione di componenti "avanzate", come tabelle o blocchi innestati tra loro, è implementabile ed utilizzabile nel risultato finale.
- Il data model di Slate è basato sul DOM: il suo documento ha una struttura ad albero, utilizza selezioni e range, ed è sensibile ai classici event handler (gestori degli eventi). Gli autori del progetto dichiarano che tutto ciò che è possibile nel DOM è possibile anche con Slate.
- I documenti di Slate sono modificati utilizzando i "cambiamenti", disegnati per lavorare al livello più alto dello stack ed essere intuitivamente scrivibili e leggibili.
- Anche il data model di Slate applica i cambiamenti al documento in una modalità in cui l'editing collaborativo viene posizionato al livello più alto dello stack del motore del framework.
- Con l'architettura "plugin-first", ed un core privo di schemi, si ottiene una chiara e logica separazione dell'implementazione delle funzionalità lato core con quelle aggiuntive che lo estendono.
Nella pagina ufficiale del progetto possiamo trovare una ricchissima documentazione, che copre praticamente ogni fase di realizzazione dei nostri editor, ed una sezione demo, che mostra una collezione di funzioanalità implementabili attraverso Slate.
Via Slate