Ultimamente sto usando il framework Backbone.js per scrivere il front-end di una web app, con un linguaggio molto minimale, e non proprio immediato, che è CoffeeScript. Non condivido appieno le implementazioni “massicce” lato front-end in Javascript, forse perché sono un convinto “accessibilista”, e forse perché non ho ancora compreso appieno quanto sia accessibile lo stesso Javascript. Comunque, sono contrario ad avere troppa logica spostata sul client e la struttura delle stesse pagine mi piace averla ben organizzata e semplice.
Tuttavia, questo Backbone, che implementa una “logica MVC” lato front-end, ho visto che è parecchio utilizzato in parecchie web app importanti.
Vi allego un ottimo tutorial, oltre al link della documentazione ufficiale e un ebook (a pagamento):
Da quanto si legge su HTML.it, per la sua architettura, Backbone.js rientra nella categoria delle librerie MV*, in quanto implementa Model e View, ma non ha un componente Controller tradizionale, delegandone i compiti alle View e ad un componente di routing. Questo approccio è abbastanza diffuso in ambito JavaScript, dove la diversa e più complessa gestione dell’interazione utente e dello stato dell’applicazione non si adattano bene ai compiti di un controller.
I componenti base di Backbone.js sono:
Backbone.Model
: modelliBackbone.Collection
: liste di modelliBackbone.View
: viewBackbone.Router
: routing e gestione centralizzata dello stato dell’applicazione
CoffeeScript, invece, non è altro che una riscrittura sintattica di Javascript, che si rifà a Ruby e Python. E’ simbioticamente legato, ma non necessario, a Backbone.js, visto che l’ha creato lo stesso Jeremy Ashkenas (insieme ad Underscore.js ed Handlebars.js, librerie Javascript di utility, che è buono e consigliato conoscere per usare Backbone).
Eccovi un rapido tour nella sintassi CoffeeScript: CoffeeScript – perchè amarlo?
L’accoppiata Backbone+CoffeeScript ha un bel pò di vantaggi che ho potuto apprezzare:
- semplicità e pulizia nella scrittura del codice, grazie ad una sintassi molto minimale (si richiede una conoscenza di base della sintassi Python)
- il paradigma MVC crea una struttura di progetto ben organizzata, dove ogni cosa è al suo posto
- propagazione di eventi e dell’aggiornamento “automatico” dello stato dei modelli e delle viste collegate
- modalità di testing con fixture molto semplice e veloce
- librerie di utility Javascript che implementano logiche anche complesse
- realizzazione di Single-Page Application e di web app per il mobile (Using backbone.js with jQuery Mobile)
- Backbone+REST=GRAVY: integrazione “nativa” di Backbone con le API REST (Vedi l’articolo sulla filosofia REST su questo blog)
- possibilità di utilizzare tutto ciò che è Javascript (anche librerie come jQuery)
- troppa logica Javascript lato front-end
- troppi modelli e viste possono rendere difficile la lettura e complicare la “navigazione” del progetto
- se non si definisce un “modus operandi” e una struttura di progetto con relative “regole” e “convenzioni” prima dell’inizio della fase di sviluppo, risulta difficile lavorare in gruppo e scrivere software “manutenibile”
- tecnologia molto evoluta e complessa, con una curva di apprendimento bassa
- scarsa compatibilità con browser “datati”
Scritto ciò, se siete smanettoni Javascript, Backbone+CoffeeScript dovete assolutamente conoscerli ed usarli.
Vi allego un file di testo con delle note mie estratte dalla documentazione ufficiale di Backbone.

This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/10/28/javascript-un-nuovo-modo-di-scrivere-il-front-end-con-backbone-js-coffeescript/.