RiotJS è una UI library Open Source incentrata sui componenti che si propone come alternativa a soluzioni collaudate quali React e Polymer; basata anch'essa su JavaScript, offre infatti una modalità d'uso maggiormente intuitiva e una libreria più contenuta nelle dimensioni rispetto ai suoi diretti concorrenti, anche in versione minificata.
Uno dei vantaggi più rilevanti di questo framework riguarda il supporto ai custom tag che con esso potranno essere utilizzati su qualsiasi browser Web sufficientemente aggiornato attraverso un'unica libreria, sarà in pratica come operare con React e Polymer insieme, disponendo simultaneamente delle funzionalità offerte dal primo per la realizzazione delle interfacce utente e il riutilizzo dei componenti, nonché della potenzialità del secondo per generare elementi di markup personalizzati.
I tags di RiotJS vengono convertiti in puro codice JavaScript prima che i browser li debbano eseguire, fino ad allora lo sviluppatore ha la possibilità di sfruttare una sintassi facilmente leggibile creando view anche complesse tramite HTML. L'aderenza agli standard è garantita dall'assenza di eventi proprietari; non sono necessarie librerie addizionali, altre dipendenze o polyfill esterni, nonostante ciò il rendering del DOM può essere manipolato con qualsiasi strumento voglia utilizzare lo sviluppatore.
Chi lo desidera potrà creare tags con ES6, Typescript, CoffeeScript, Jade, LiveScript o qualsaisi altro pre-processor, supportata inoltre l'integrazione con npm, CommonJS, AMD, Bower o Component. Utilizzando RiotJS viene prodotto il minor numero possibile di aggiornamenti a carico del DOM, quelli generati verranno comunque propagati dagli elementi genitore ai child element per garantire un miglior bilanciamento del carico durante il flusso dei dati.
E' supportato il rendering server side dei custom tag per le applicazioni universali, mentre per quanto riguarda le prestazioni esse verranno mantenute ad un livello ottimale grazie alla precompilazione e al conseguente caching delle espressioni. Le piccole dimensioni della libreria garantiranno inoltre tempi più brevi per il parsing, minori probabilità di riscontrare bug e una curva di apprendimento meno ripida.
Via RiotJS