 
 
 <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>upCreative &#187; Backbone.js</title>
	<atom:link href="https://www.upcreative.net/tag/backbone-js/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.upcreative.net</link>
	<description>Web Design, grafica,  web application e content web marketing</description>
	<lastBuildDate>Wed, 10 Apr 2019 12:53:28 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>HTML5 Mobile App: come definire la struttura dati</title>
		<link>https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/</link>
		<comments>https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/#comments</comments>
		<pubDate>Thu, 24 Apr 2014 08:32:23 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Creare applicazioni javascript]]></category>
		<category><![CDATA[Risorse]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Backbone.js]]></category>
		<category><![CDATA[HTML5 Mobile App]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile app]]></category>
		<category><![CDATA[MVC Javascript frameworks]]></category>
		<category><![CDATA[single page application]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=3864</guid>
		<description><![CDATA[<p>Se si vuole realizzare un' HTML5 Mobile App uno degli aspetti più importanti è quello della struttura logica: servirsi di model e collection per definire i dati che saranno gestiti all'interno del progetto è fondamentale per quanto riguarda l'organizzazione, la mantenibilità e la riusabilità del codice. In questo post ti mostro come organizzare i dati usando Backbone.js.</p>
<p>The post <a rel="nofollow" href="https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/">HTML5 Mobile App: come definire la struttura dati</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="l-submain"><div class="l-submain-h g-html i-cf"><div class="g-cols"><div class="full-width">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			Più volte ho discusso l&#8217;importanza di usare i pattern di <strong>sviluppo MVC</strong> nella realizzazione di applicazioni web ed HTML5 Mobile App realizzate in Javascript e CSS3: scrivere codice come capita e senza alcuna logica può andar bene per progetti di piccolissime dimensioni o singole pagine web, ma se stiamo parlando di una <em>single page application,</em> quindi un&#8217;applicazione in cui il codice lato-client gestisce, oltre ai dati, anche la generazione di markup, il discorso cambia.</p>
<p><img class="aligncenter wp-image-3869 size-full" src="http://www.upcreative.net/wp-content/uploads/2014/04/javascript-spaghetti-code.jpg" alt="javascript-spaghetti-code" width="690" height="400" /></p>
<p>&nbsp;</p>
<h5><em>Spaghetti code</em></h5>
<p>E&#8217; ciò che dobbiamo evitare in quei casi. In altre parole dobbiamo evitare di sviluppare single page application e web app senza un&#8217;architettura logica che ci consenta di scrivere <strong>codice ben organizzato, facilmente leggibile, mantenibile e riusabile</strong>.</p>
<p>Questo è lo scopo principale dei metodi di sviluppo MVC.</p>
<p>Abbiamo visto quanto possono essere importanti le view nel web in generale e <a title="HTML5 Mobile App: l’importanza del framework MVC" href="http://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/">perché considerare di usare un framework javascript MVC</a> per la realizzazione di HTML5 Mobile App.</p>
<p><em>In un post che ho scritto per YourInspirationWeb, metto in evidenza l&#8217;importanza dell&#8217;impiego delle view in ambito web ed il perchè esse sono così importanti:</em></p>
<ul>
<li><em><a title="HTML5 Mobile App: il web ha bisogno delle view" href="http://www.yourinspirationweb.com/2014/04/14/html-mobile-app-e-web-app-il-web-ha-bisogno-delle-view/">HTML5 Mobile App: il web ha bisogno delle view</a></em></li>
</ul>
<hr />
<p><em>#HTML5 #MobileApp definire la struttura dati con #backbonejs</em><br /><a href='https://twitter.com/share?text=%23HTML5+%23MobileApp+definire+la+struttura+dati+con+%23backbonejs&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/' target='_blank'>Click To Tweet</a></p>
<hr />
<h2>HTML5 Mobile App: MVC per rendere il javascript mantenibile e riusabile</h2>
<p><img class="aligncenter wp-image-3870 size-full" src="http://www.upcreative.net/wp-content/uploads/2014/04/HTML5-Mobile-App-Javascript-MVC.jpg" alt="HTML5-Mobile-App-Javascript-MVC" width="690" height="347" /></p>
<p>Per molti anni il pattern di sviluppo MVC è stato usato in moltissimi linguaggi di sviluppo. Al giorno d’oggi, tutti i web designer e front-end developer hanno già cominciato da qualche tempo ad applicare la logica MVC al linguaggio che per noi risulta più rilevante: il Javascript.</p>
<p>Con il Javascript abbiamo a disposizione <a title="Creare applicazioni web: il pattern Model-View-Controller ed i principali MVC javascript frameworks" href="http://www.upcreative.net/creare-applicazioni-web-il-pattern-mvc-ed-i-principali-mvc-javascript-frameworks/">diversi tipi di frameworks</a> che offrono supporto per l’MVC nelle sue numerose variazioni ( la famiglia di pattern MV*), permettendoci di estendere la struttura delle nostre applicazioni senza troppe difficoltà.</p>
<p>Alcuni dei frameworks più famosi possono essere per esempio <a title="Backbone.js Javascript MVC framework" href="http://backbonejs.org/">Backbone</a> o <a title="Javascript MVC Frameworks" href="https://angularjs.org/">AngularJS</a>. Il loro ruolo è fondamentale, in quanto consentono allo sviluppatore di evitare la scrittura del codice in modalità <em>Spaghetti code</em>. Pertanto è importantissimo capire di cosa possiamo beneficiare con un adeguato pattern di programmazione.</p>
<p>In un precedente articolo avevo spiegato come realizzare una semplice HTML5 Mobile App con <em>Backbone.js</em>:</p>
<ul>
<li><a title="Semplice HTML5 Mobile App con Bootstrap Ratchet e Backbone.js" href="semplice-html5-mobile-app-bootstrap-ratchet-backbone-js">Semplice HTML5 Mobile App con Bootstrap Ratchet e Backbone.js</a></li>
</ul>
<p>In questo capitolo ti voglio mostrare più nel dettaglio una delle parti che compongono l’acronimo MVC: <strong>il model</strong> (o modello).</p>
<p>Lo farò in relazione ad uno dei sopra citati framework MVC, ovvero <b>Backbone.js, </b>che è proprio quello che approfondiremo per la realizzazione di HTML5 Mobile App.</p>
<h2>Gestire i dati con il model per una HTML5 Mobile App</h2>
<p><strong>I modelli costituiscono i dati dell’applicazione.</strong></p>
<p>Un modello può rappresentare per esempio un individuo, una nota, un articolo, un libro, o qualunque altra entità che possa avere 1 o più caratteristiche (nome, cognome, sesso, codice ISBN, matricola, colore, ecc..).</p>
<p>I modelli possono essere visti in modo completamente separato dagli elementi che compongono l’interfaccia-utente, anche se quando un modello subisce delle modifiche, esso normalmente avvisa gli “<strong>osservatori</strong>” (altre parti della struttura come per esempio le <em>view</em> &#8211; viste ) che si è verificato un cambiamento, permettendogli di agire di conseguenza.</p>
<p>Facciamo un esempio concreto al fine di comprendere meglio i modelli. Più nello specifico, prendiamo come punto di riferimento <a title="Tint Weather App - HTML5 Mobile App in CSS3 e Javascript" href="http://www.upcreative.net/tint-weather-app/">Tint</a>, la mia applicazione per il meteo.</p>
<p>In una normale applicazione meteo, il concetto di località ha bisogno di un suo modello che la rappresenti come un tipo di dato unico, con delle specifiche caratteristiche, che possono essere il nome (città o luogo), la latitudine, la longitudine, il paese di appartenenza ed altri possibili dati aggiuntivi.</p>
<p>Una specifica località potrebbe essere salvata nell’istanza di un model, che sarebbe accessibile e riusabile in più parti dell’applicazione.</p>
<p>Vediamo la definizione di un semplice modello che rappresenta il tipo di dati “località” con <em>Backbone.js</em>:</p><pre class="crayon-plain-tag">var LocationModel = Backbone.Model.extend({

	initialize:function () {
	//ci assicuriamo che ogni modello appena creato abbia un ordine numerico
	if( isNaN ( this.get(“order”) ) )
		this.set( {“order”, 0 } );
	},

	//dati predefiniti per la località

	defaults:{
		defaultLocation: false,
		userLocation: false,
		viewed: false
	}

});</pre><p>
<hr />
<p><em>#HTML5 #Mobileapp come definire un model con #Backbonejs</em><br /><a href='https://twitter.com/share?text=%23HTML5+%23Mobileapp+come+definire+un+model+con+%23Backbonejs&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/' target='_blank'>Click To Tweet</a></p>
<hr />
<p>La funzionalità integrate dei modelli variano a seconda del framework utilizzato, ma generalmente tutti i framework danno la possibilità di definire gli attributi, ovvero le proprietà di ogni modello, (come per esempio la cilindrata, il colore, la gamma o la marca per un ipotetico modello “macchina da strada”).</p>
<p>Backbone, come molti altri MVC frameworks, offre anche la possibilità di salvare i dati secondo varie modalità, come per esempio il <strong>localStorage</strong> o la <strong>sincronizzazione con un database</strong>.</p>
<p>Per avere maggiori informazioni sul metodo di salvataggio dei dati, ti consiglio di leggere  questo articolo che ho scritto per <a title="Your Inspiration Web" href="http://www.yourinspirationweb.com">YourInspirationWeb.com</a>:</p>
<ul>
<li><a title="HTML5 Mobile App: tecniche per il salvataggio dei dati" href="http://www.yourinspirationweb.com/2014/04/02/html5-mobile-app-tecniche-per-il-salvataggio-dei-dati/">HTML5 Mobile App: tecniche per il salvataggio dei dati</a></li>
</ul>
<h3>Gli osservatori dei modelli</h3>
<p>Un modello può avere anche diverse view (parti visuali dell&#8217;interfaccia) che lo stanno “osservando&#8221;, pronte a reagire ad eventuali cambiamenti.</p>
<p>Ritornando all’esempio di Tint, ogni località presenta la lista dei giorni e relativo meteo, oltre che una lista di orari, anch’essi ciascuno con la relativa condizione meteo.</p>
<p>L’applicazione usa 3 diverse view per ognuna delle località:</p>
<ul>
<li>la view per mostrare i dati principali e il meteo attuale del luogo</li>
<li>la view per mostrare il meteo nelle prossime ore della giornata</li>
<li>la view per mostrare il meteo nei prossimi giorni della settimana</li>
</ul>
<p>Tutte le view sopra elencate risultano “associate” allo stesso modello, e osservano eventuali cambiamenti che lo stesso può avere.</p>
<h2>Backbone.js e HTML5 Mobile App: le collection</h2>
<p>Nella maggior parte dei framework MV*, i modelli possono essere organizzati in gruppi: con <em>Backbone.js</em> tali gruppi vengono chiamati “<em>Collection</em>” (o collezioni).</p>
<p><strong>Gestire i modelli in collezioni</strong> aiuta a sviluppare applicazioni secondo una logica che permetta non osservare ciascun modello individualmente, ma reagire di conseguenza a qualunque modello che subisce delle modifiche in maniera “centralizzata”.</p>
<blockquote><p>Per comprendere meglio questo concetto, prendiamo di nuovo l&#8217;esempio su Tint: consideriamo 2 view in particolare, tra quelle che compongono l’interfaccia:</p>
<ul>
<li>la view <em>ManageLocations</em>: quella che consente di aggiungere, eliminare o modificare l’ordine delle località</li>
<li>la view <em>Locations</em>: che viene mostrata subito dopo l’avvio dell’applicazione ed offre all’utente la possibilità di scorrere orizzontalmente le varie località secondo l’ordine con cui esse sono state organizzate nella prima view menzionata. Questa view si preoccupa di creare per il modello di ogni località presente nella collection la relativa &#8220;sotto-view&#8221; inserendola al suo interno.</li>
</ul>
<p>L’applicazione è impostata in modo tale che la view “<em>Locations</em>&#8221; osservi i cambiamenti della collezione “<em>LocationCollection</em>”, la quale contiene tutti i modelli di ciascuna località aggiunta dall’utente, oltre a quella relativa alla sua posizione.</p>
<p>Così, non appena un‘utente aggiunge, elimina o modifica l’ordine di una località usando la view delle impostazioni (<em>ManageLocations</em>), la view <em>Locations</em> aggiunge la view associata al nuovo modello, rimuove quella del modello eliminato, o, qualora si trattasse di un riordinamento, reinizializza lo slider orizzontale.</p>
<p>&nbsp;</p></blockquote>
<p><img class="aligncenter wp-image-3872 size-full" src="http://www.upcreative.net/wp-content/uploads/2014/04/HTML5-Mobile-App-osservatori-e-collection.jpg" alt="HTML5-Mobile-App---osservatori-e-collection" width="690" height="398" /></p>
<p><span style="color: #323333;">Di seguito ti mostro l’esempio della definizione di una <i>Collection di </i>località tramite <i>Backbone.js, </i>che ho usato per<i> Tint:</i></span></p><pre class="crayon-plain-tag">var LocationCollection = Backbone.Collection.extend({

	//definisce a quale modello di riferisce la collezione
	model: LocationModel,

	//definisco che il metodo di salvataggio per collection debba essere il localStorage (voglio salvare tutte le località aggiunte dall’utente nel dispositivo,
	//in modo da potergliele ripresentare al prossimo avvio)
	localStorage: new Backbone.LocalStorage("Parallax_Weather-locations"),

	//funzione che ho usato per generare in modo sequenziale l’ordine di ogni nuovo model,
	//per far sì che possa essere aggiunto all’ultimo posto

	nextLocation: function(newModel) {
		if (!this.length) return 1;
		return this.last().get('order') + 1;
	},

	//definisco la modalità di ordinamento dei modelli, in questo caso in base all’attributo ‘order'
	comparator: function(location) {
		return location.get("order");
	}

});</pre><p>
<h2>
<hr />
<p><em>#HTML5 #MobileApp definire un #collection con #Backbonejs</em><br /><a href='https://twitter.com/share?text=%23HTML5+%23MobileApp+definire+un+%23collection+con+%23Backbonejs&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/' target='_blank'>Click To Tweet</a></p>
<hr /></h2>
<h2>Conclusioni</h2>
<p>L&#8217;astrazione dei dati è un fattore fondamentale nella realizzazione di qualsiasi progetto web, e lo diventa ancora di più nel caso di HTML5 Mobile App sviluppate in CSS3 e Javascript.</p>
<p>Grazie ai numerosi framework MVC (e tutte le varianti dell&#8217;MVC, solitamente indicate con MV*) è possibile organizzare i dati di un progetto secondo una struttura logica che consenta di modificarli facilmente, oltre che separare totalmente la loro gestione da quella dell&#8217;interfaccia e della <em>user-experience,</em> di cui solitamente si occupano altri componenti come <em>view</em> e <em>controllers</em>.</p>
<p>E tu? Cosa pensi dei javascript framework MVC? Fammelo Sapere nei commenti!
		</div> 
	</div> <div class="g-cols color_alternate w-actionbox"><div class="one-half">
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			
<h3>Crea la tua mobile app in HTML, CSS3 e Javascript</h3>
<p>Utilizzando queste tecniche insieme a molte altre, ho realizzato <strong>più di 10 mobile app in HTML, CSS3 e Javascript</strong> (tra cui <a title="Tint HTML mobile app" href="http://www.upcreative.net/tint-weather-app/">Tint</a> e <a title="Dieta SI o NO? HTML Mobile app" href="http://www.upcreative.net/app-dieta-si-o-no/">Dieta SI o NO?</a>).</p>
<p>Se anche tu vuoi realizzare la tua applicazione in HTML, CSS e javascript da distribuire nei vari store, forse potrebbe interessarti il mio e-book <strong><a title="HTML Mobile Accelerato - Come creare una mobile app in HTML, CSS e Javacript" href="http://www.upcreative.net/html-mobile-accelerato/">HTML Mobile Accelerato</a>.</strong>
		</div> 
	</div> </div><div class="one-half">
	<div class="wpb_single_image wpb_content_element align_center">
		<div class="wpb_wrapper">
			
			<img width="563" height="418" src="http://www.upcreative.net/wp-content/uploads/2013/11/HTML-mobile-accelerato-ebook-cover1.png" class="attachment-full" alt="HTML-mobile-accelerato-ebook-cover" />
		</div> 
	</div> 
	<div class="wpb_text_column ">
		<div class="wpb_wrapper">
			<div class="widget_wysija_cont shortcode_wysija"><div id="msg-form-wysija-shortcode6ab0cd1cd4ff0-4" class="wysija-msg ajax"></div><form id="form-wysija-shortcode6ab0cd1cd4ff0-4" method="post" action="#wysija" class="widget_wysija shortcode_wysija">
<p class="wysija-paragraph">
    
    
    	<input type="text" name="wysija[user][email]" class="wysija-input validate[required,custom[email]]" title="Inserisci la tua mail" placeholder="Inserisci la tua mail" value="" />
    
    
    
    <span class="abs-req">
        <input type="text" name="wysija[user][abs][email]" class="wysija-input validated[abs][email]" value="" />
    </span>
    
</p>
<input class="wysija-submit wysija-submit-field" type="submit" value="Tienimi aggiornato/a" />

    <input type="hidden" name="form_id" value="4" />
    <input type="hidden" name="action" value="save" />
    <input type="hidden" name="controller" value="subscribers" />
    <input type="hidden" value="1" name="wysija-page" />

    
        <input type="hidden" name="wysija[user_list][list_ids]" value="4,1" />
    
 </form></div>
		</div> 
	</div> </div></div></div></div>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/">HTML5 Mobile App: come definire la struttura dati</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/html5-mobile-app-come-definire-la-struttura-dati/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
