Tutorial: Backbone web app responsive con Bootstrap 3

novembre 13, 2013
Share on Facebook0Tweet about this on Twitter0Pin on Pinterest0Share on Google+0

In un precedente articolo ho sottolineato il ruolo fondamentale che può rappresentare Backbone per la realizzazione di una MVC javascript web application, elencando anche i vari componenti che la libreria mette a disposizione, oltre ad alcune applicazioni con essa realizzate.

Su lobaedesign.com invece, ho introdotto l’indipendenza della view dagli altri componenti con un tutorial su come realizzare un orologio analogico CSS3 e JavaScript con animazione, e su come la stessa view aggiorna gli elementi dell’interfaccia “osservando” il cambiamento di un model.

In questo post voglio introdurre invece altri due componenti per la creazione di una backbone web app:

  • la collection, ovvero la lista secondo la quale organizzare i model
  • il sistema di templating della libreria underscore.js, per la generazione del markup HTML

Lo farò attraverso un semplice tutorial che implementa il framework bootstrap 3 nel documento e usa due view diverse legate allo stesso model ed una alla lista.

Tutorial-Backbone-web-app-responsive-con-Bootstrap-3

Il nostro intento sarà quindi quello di creare una backbone web app responsive che mostra una lista di persone, ciascuna con informazioni proprie come nome, sesso, occupazione, e descrizione, e con possibilità da parte dell’utente di creare, modificare, eliminare una persona, oltre che poter visualizzare una modal con delle informazioni aggiuntive cliccando nel nome della lista.

Impostazione del documento

Come prima operazione, aggiungiamo al nostro documento, prima della chiusura del tag body,  le librerie di cui abbiamo bisogno:

Backbone.js e Undersore.js sono scaricabili dai rispettivi link:

Il markup HTML

Andiamo a vedere il markup HTML della view principale dell’applicazione, ovvero quello che comprende il form di inserimento e la lista:

I template di Underscore.js

Impostiamo ora il markup HTML dei template delle view secondo il sistema di templating di underscore.js; i metodi per comunicare alla view backbone quale template utilizzare per il rendering del markup da inserire poi nel documento sono principalmente tre:

  1. Specificare il template sottoforma di variabile string nello script
  2. Specificare il rifermento al template il cui markup è stato “posizionato” nel documento
  3. Utilizzare librerie come require.js per “leggere” in modo asincrono il contenuto del template da un file esterno (solitamente di usa un file con estensione .html)

Personalmente preferisco utilizzare l’ultima opzione, soprattutto nel caso di web app ad architettura molto complessa, per due motivi principali:

  • lasciare il nostro documento più pulito possibile
  • migliore organizzazione del progetto per quanto riguarda la struttura dei file

In questo tutorial tuttavia prenderemo in considerazione il secondo metodo.

Per saperne di più sui sistemi di javascript templating leggi

Per l’esperimento definiremo 3 view, quella dell’applicazione principale (che comprende il form di inserimento e l’ul della lista), quella di ogni singolo elemento del lista, e quella della modal delle informazioni aggiuntive.

Poiché per la prima delle tre imposteremo come elemento di riferimento il body stesso del documento, andiamo a definire il markup dei template delle altre due view:

Dal codice puoi notare che ogni template è stato definito all’interno dell tag script in cui è stato impostato un attributo type con valore text/templateCosì facendo il browser ignorerà questa porzione di codice che invece sarà raggiungibile da Javascript tramite l’attribuito id.

Il file JavaScript

Passiamo ora alla definizione dei vari componenti backbone della nostra applicazione, in primis occupiamoci dell’astrazione dei dati, il model della persona:

Definiamo ora la collection in cui tutte le istanze del model appena definito verranno organizzate:

Ora che abbiamo definito la nostra (semplicissima) struttura dei dati, vediamo l’impostazione delle view.

La view dell’elemento della lista

 La view del modal delle informazioni aggiuntive

 La view dell’applicazione

Avviamo la nostra javascript web application!

Infine, per instanziare i nostri componenti ed avviare l’applicazione, ci serviremo del seguente codice javascript:

Stili e CSS

Come è possible notare scaricando i sorgenti, al fine di rendere il tutto un po più piacevole all’utente, abbiamo inserito degli effetti CSS3 per animare l’inserimento e l’eliminazione di ogni record dalla lista; il codice utilizzato proviene dalla libreria animate.css, e prevede un effetto di entrata con fade da sinistra nel momento dell’inserimento, mentre un elemento di “caduta” nel momento della eliminazione.

Abbiamo inoltre reso il tutto responsive grazie al sistema di griglie di Boostrap 3.

Divertiti con i sorgenti!

effetto-CSS3-entrata effetto-CSS3-caduta

Giacomo Freddi

Web Designer Freelance e Developer, si occupa del design e dello sviluppo di applicazioni web dal 2008, come molti freelance è abituato a gestire più ruoli e spaziare su più campi, ma la sua passione principale è quella della creazione di interfacce front-end e back-end utilizzando codice html5 e css3. Adora usare pattern MVC per i suoi Javascript.