 
 
 <?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; mvc</title>
	<atom:link href="https://www.upcreative.net/tag/mvc/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: l’importanza del framework MVC</title>
		<link>https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/</link>
		<comments>https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/#comments</comments>
		<pubDate>Sat, 12 Apr 2014 10:57:42 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Creare applicazioni javascript]]></category>
		<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[HTML5 Mobile App]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[MVC Javascript frameworks]]></category>
		<category><![CDATA[single page application]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=3817</guid>
		<description><![CDATA[<p>Nonostante moltissime applicazioni, sia desktop che HTML5 Mobile App, siano oggi sviluppate sotto forma di single page applications (basti pensare a javascript web app come Gmail, Trello, Asana, Todoist, Twitter ecc.), in Italia il concetto di MVC è ancora poco diffuso, e molti sviluppatori faticano a comprenderne la logica. In questo post ti voglio far riflettere sull'importanza dei frameworks MVC per lo sviluppo front-end.</p>
<p>The post <a rel="nofollow" href="https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/">HTML5 Mobile App: l’importanza del framework MVC</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">
			Tutti gli sviluppatori e web designers hanno a che fare prima o poi con la <strong>manipolazione di elementi HTML DOM</strong>, momento in cui fanno conoscenza solitamente di jQuery, che con  tutti i plugin disponibili offre una mano non indifferente.</p>
<p>Il problema sorge di solito quando <strong>non si tratta più di realizzare siti web</strong>, ma iniziamo ad affacciarsi al mondo delle <em><strong>web app</strong></em>, dove è facilissimo perdersi in una pila infinita di elementi DOM e callback javascript intrecciate e nidificate tra di loro.</p>
<p>Visto che il numero di dispositivi mobile sta crescendo a vista d’occhio e sempre più sistemi operativi stanno rivolgendosi verso la direzione delle <i>single page applications, </i>(hai notato che anche le applicazioni di Windows-8 sono <strong>single-page-app</strong> costruite in <strong>HTML5</strong>?), ma soprattutto perché esse costituiscono il metodo principale per lo sviluppo di <strong>HTML5 Mobile App ibride</strong>, è opportuno considerare l&#8217;approccio a <strong><em>Frameworks Javascript Moderni. </em></strong></p>
<p>Tali frameworks ci possono assistere nel processo di strutturazione ed organizzazione dei nostri progetti, facendo in modo che essi risultino facilmente <strong>mantenibili e scalabili</strong> anche a lungo-termine.</p>
<hr />
<p><em>#Javascript #HTML #mobileapp: l&#8217;importanza del #framework #MVC</em><br /><a href='https://twitter.com/share?text=%23Javascript+%23HTML+%23mobileapp%3A+l%27importanza+del+%23framework+%23MVC&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/' target='_blank'>Click To Tweet</a></p>
<hr />
<h2>HTML5 Mobile App: MVC, Di cosa si tratta?</h2>
<p style="text-align: center;"><img class="size-full wp-image-3823 aligncenter" alt="javascript-models-view-controllers" src="http://www.upcreative.net/wp-content/uploads/2014/04/javascript-models-view-controllers.jpg" width="690" height="283" /></p>
<p>Questi nuovi framework sono nati con il preciso scopo di fornire allo sviluppatore un modo efficace di organizzare il codice usando delle variazioni del <strong><em>design pattern MVC</em></strong>, ovvero quella logica di programmazione che prende in considerazione tre tipi di entità:</p>
<ul>
<li><strong>Modelli (<em>models</em>)</strong>: rappresentano <strong>l’astrazione dei dati</strong>. Un modello notifica a tutti i componenti che stanno &#8220;osservando&#8221; il suo comportamento quale sia il suo stato attuale. Per fare un esempio più concreto, un modello definisce il tipo di dato in questione: può rappresentare una persona, una nota, un file, un articolo.</li>
<li><strong>Viste (<em>views</em>):</strong> sono gli elementi che compongono <strong>l&#8217;interfaccia di un&#8217;applicazione.</strong> Generalmente (ma non necessariamente) ad<strong> ogni vista è associato un model</strong> (per esempio, nella parte di interfaccia che mostra un&#8217;ipotetica lista di articoli, ogni riga della lista è costituita da una <em>view, </em>quindi ad ogni <em>view</em> è associato il model dell&#8217;articolo). Il compito della <em>view </em>è quello di &#8220;osservare&#8221; il comportamento del model associato ed agire di conseguenza, ma senza interferire con esso.</li>
<li><strong>Controller</strong>: è quella parte dell&#8217; applicazione che gestisce gli input (ovvero le azioni dell&#8217;utente) e modifica i model di conseguenza. Quando un <em>model</em> viene modificato o cambia di stato per mezzo del controller, la <em>view</em> associata, che sta &#8220;osservando&#8221; quel <em>model</em>, opera gli opportuni cambiamenti. Quindi possiamo dire che<strong> il <em>controller</em> gestisce le <em>view</em> indirettamente</strong>.</li>
</ul>
<p>Solitamente i <em>models</em> sono raggruppati in <strong>collections, </strong>ovvero &#8220;liste di <em>models</em>&#8221; che possono anch&#8217;essi essere associati ad una o più <em>views, </em>come succede per i<em> models.</em></p>
<p>Ecco uno schema di come funziona la maggior parte dei frameworks MVC:</p>
<p style="text-align: center;"><img class="size-full wp-image-2183 aligncenter" alt="il-pattern-MVC-per-creare-applicazioni-web" src="http://www.upcreative.net/wp-content/uploads/2013/10/il-pattern-MVC-per-creare-applicazioni-web.jpg" width="690" height="450" /></p>
<p style="text-align: center;"><span style="line-height: 1.5em;">Per sapere di più sui javascript design patterns ti consiglio di leggere questo mio articolo:</span></p>
<ul>
<li><a title="Web Applications: scrivere codice ben strutturato con i Javascript Design Patterns" href="http://www.upcreative.net/web-applications-codice-ben-strutturato-i-javascript-design-patterns/">Web Applications: scrivere codice ben strutturato con i Javascript Design Patterns</a></li>
</ul>
<h2>HTML5 Mobile App: perché usare un framework MVC</h2>
<p><strong>Un&#8217;applicazione Mobile realizzata in HTML5, CSS3 e Javascript rappresenta a tutti gli effetti una single-page-application.</strong></p>
<p>Anche le app più semplici, che magari sono costituite da 3 o 4 schermate, il più delle volte hanno una <strong><em>user-interface</em> molto complicata</strong>, a causa di tutte le richieste HTTP presenti, gli aggiornamenti del markup, le modifiche del DOM ecc. (senza contare che una schermata ne può avere di per sé altre al suo interno, come per esempio in una lista di elementi ).</p>
<p>Gli sviluppatori che scrivono &#8220;a naso&#8221; il loro codice, quindi senza utilizzare dei framework per la struttura logica dell&#8217;applicazione, inconsapevolmente creano delle <em>view</em>, dei <em>model</em>, e dei <em>controller</em>: l&#8217;unica differenza è che tutto ciò che fanno non è <strong>riusabile</strong>, ne tantomeno <strong>mantenibile</strong>.</p>
<p>In altre parole, finché il progetto rimane di piccole dimensioni riesce a &#8220;stare in piedi&#8221;, ma appena si complica anche solo di poco e diventa necessario aggiungere o modificare una parte dell&#8217;interfaccia, allora molto probabilmente cadrà in mille pezzi.</p>
<p>I Javascripts frameworks MVC, oltre a fornire robusti e stabili controlli come Models, Views e Controllers, forniscono anche una solida struttura, comprensiva di <strong>soluzioni testate negli anni da una gigantesca community di sviluppatori</strong>, che prima di noi hanno affrontato e risolto tutti gli stessi problemi logici e di programmazione in cui potremmo incappare nei nostri progetti.</p>
<p>Ciò può costituire un <strong>incredibile risparmio di tempo</strong> (se sei un web designer o sviluppatore sicuramente saprai cosa significa).</p>
<p style="text-align: center;"><img class="size-full wp-image-3825 aligncenter" alt="mvc-based-applications" src="http://www.upcreative.net/wp-content/uploads/2014/04/mvc-based-applications.jpg" width="690" height="300" /></p>
<p>Non so se hai mai notato applicazioni come <strong>Asana</strong>, <strong>Trello</strong>, <strong>Todoist</strong>, <strong>Wunderlist, </strong>ma anche <strong>Twitter</strong> o gli stessi <strong>Gmail</strong> e <strong>Google Drive </strong>(la lista sarebbe infinita): si tratta di <em>single page application</em> che caricano tutte le risorse come script, stili e views all&#8217;inizio, per poi modificare l&#8217;interfaccia con i dati che hanno già ottenuto, senza mai ricaricare la pagina, ma lasciando tutto il &#8220;duro lavoro&#8221; della gestione dei dati (creazione, modifica, eliminazione) al server, attraverso opportune richieste HTTP asincrone (le chiamate ajax).</p>
<p>Quindi, ricapitolando, <strong>se stai progettando un&#8217;applicazione che, come appunto tutte le HTML5 mobile app Ibride</strong> (ma anche le web application desktop), <strong>si serve di un servizio dati API di </strong><em><strong>back-end</strong>,</em> e si deve solo preoccupare di gestire le varie parti dell&#8217;interfaccia senza ricaricare mai la pagina (Single Page Application), allora <strong>l&#8217;impiego di un Javascript Framework MVC è proprio quello che ti serve</strong>.</p>
<p>Tuttavia, se stai progettando una semplice app in cui la generazione del markup risiede perlopiù nel server, mentre <em>lato-client</em> sono sufficienti pochi comandi jQuery per modificare il DOM del documento (come generalmente accade in un normale sito web), allora forse non ha senso impostare il tuo prossimo progetto basandolo su di un framework MVC, situazione in cui tutte le sue funzionalità sarebbero superflue.</p>
<p>Ma noi stiamo parlando di <strong>HTML5 Mobile App</strong> giusto?</p>
<blockquote><p>Il framework MVC è quello che fa al caso nostro.</p></blockquote>
<hr />
<p><em>La scelta giusta per #HTML #mobileapp &#8211; i #framework #MVC</em><br /><a href='https://twitter.com/share?text=La+scelta+giusta+per+%23HTML+%23mobileapp+-+i+%23framework+%23MVC&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/' target='_blank'>Click To Tweet</a></p>
<hr />
<h2>La difficoltà nell&#8217;apprendere la programmazione MVC</h2>
<p>A causa del vertiginoso progresso dei dispositivi <em>client</em> (in particolare di quelli mobili) che sta avvenendo in questi ultimi anni, il <strong>numero di sviluppatori javascript</strong> (quindi in particolare quelli che si occupano di interfacce <em>front-end</em>) <strong>è cresciuto a dismisura</strong>, e questo tipo di programmazione ha subìto come una &#8220;rinascita&#8221;.</p>
<p>Il tipo di linguaggio non è molto diverso da quello con il quale la maggior parte degli sviluppatori sono stati abituati a programmare in passato, sia per quanto riguarda la realizzazione di desktop software che di web application. Nel corso degli anni, infatti, gli sviluppatori sono stati abituati ad usare diversi tipi di linguaggi, come C++ o Java per i software client, o PHP, ASP, Python, ASP.NET ecc. per quelli <em>web-based</em>.</p>
<p style="text-align: center;"><img class="size-full wp-image-3821 aligncenter" alt="Linea-temporale-linguaggi-di-programmazione" src="http://www.upcreative.net/wp-content/uploads/2014/04/Linea-temporale-linguaggi-di-programmazione.jpg" width="690" height="300" /></p>
<p style="text-align: center;"><em>Linea temporale della nascita e dell&#8217;utilizzo nel corso degli anni dei linguaggi di programmazione più usati</em></p>
<p style="text-align: left;">
<p style="text-align: left;">Possiamo affermare che la logica dell&#8217; MVC per strutturare un&#8217;applicazione <strong>deriva effettivamente dalle precedenti generazioni di linguaggi</strong>, sin dagli anni 70.</p>
<p style="text-align: left;">Tuttavia, per tutti coloro che in questi ultimi anni hanno iniziato la propria carriera di web designers con linguaggi come ASP o PHP, è ancora molto difficile iniziare a comprendere il funzionamento di un&#8217;applicazione Javascript MVC.</p>
<p style="text-align: left;">E&#8217; normale.</p>
<p style="text-align: left;">E&#8217; normale soprattutto per quelli che fanno un utilizzo massiccio di codice <em>lato-server</em> per la generazione dell&#8217;interfaccia, i quali si trovano molto confusi, in particolare per quanto riguarda i concetti di <em>view</em> e di generazione di markup <em>lato-client</em>.</p>
<p style="text-align: left;">Effettivamente quello di comprendere la logica MVC è uno scoglio abbastanza grosso da abbattere, ma una volta superato questo ostacolo il divertimento è assicurato:</p>
<ul>
<li>velocità di scrittura</li>
<li>organizzazione tra le viste</li>
<li>riusabilità di una stessa vista da tutte le parti dell&#8217;applicazione</li>
<li>scalabilità del codice: l&#8217;applicazione è facilmente espandibile e riducibile senza alcun problema</li>
<li>estrema separazione del codice <em>lato-client</em> e codice <em>lato-server</em> &#8211; che costituisce un&#8217;altro elevato fattore di scalabilità e mantenibilità</li>
</ul>
<p>sono solo alcuni dei vantaggi che offre l&#8217;MVC.</p>
<h4>Sei mai stato a Mirabilandia?</h4>
<p>Periodicamente mi piace andare con i miei amici a Mirabilandia, che si trova a Ravenna, a sole due ore di macchina da dove vivo (Città di Castello, Perugia); nonostante i vari impegni, cerco di andarci nel mezzo della settimana, quando c&#8217;è meno gente ed è possibile divertirsi con le varie giostre senza fare code troppo elevate.</p>
<p>La giostra che mi piace di più è il <em>Katun </em>(l&#8217;hai mai provato?)<i>.</i></p>
<p style="text-align: center;"><img class="size-full wp-image-3822 aligncenter" alt="lo-scoglio-dell'MVC-Javascript" src="http://www.upcreative.net/wp-content/uploads/2014/04/lo-scoglio-dellMVC-Javascript.jpg" width="690" height="518" /></p>
<p style="text-align: center;"><em>Fonte della foto: <a href="https://www.flickr.com/photos/paolo_cst/3934985045/in/photolist-6ZHPXK-6ZHQZi-6ZHPT4-2soixK-6ZMPyf-2tfm8a-2tdwC4-2XMcon-2XMczP-2XRA1s-2XRBn9-2XMaG8-6MXhCo-6MXi5b-6MT6mT-6MT6gt-6MXhYG-6MT6i8-rWUgE-rWUgP-6ZHFHt-4UE8nz-59zw6h-7V3s7B-7V5Z2E-7V3qGr-7V3r1n-7V3zp2-7V3AmK-7V3AHZ-7V3Ch2-7V5WMu-7V5XwG-7V5YDq-7V6kjG-7V6v3Y-7V6DoC-7V6DQW-7V6FcQ-7V6FrQ-7V6GDJ-7V6JBU-7V6Kwd-7V6LmN-7V6PxA-7V6QT7-7V6Rud-7V6VqU-7V89KE-7V3hX4">Flickr</a></em></p>
<p>&nbsp;</p>
<p>Il<i> Katun </i>è progettato in modo tale che appena la giostra parte c&#8217;è una salita non indifferente, che viene percorsa molto piano, in modo da alimentare la paura del visitatore, prima di partire a grande velocità.</p>
<p>E ci riesce eccome! Ogni volta che salgo per la prima volta nel <em>Katun </em>dopo molto tempo, l&#8217;ansia e la paura durante quella salita sono alle stelle, ma appena la giostra parte il divertimento è assicurato da una grandissima scarica di adrenalina, tanto che appena finito il giro, mi fiondo di nuovo a fare la fila per farne un&#8217;altro.</p>
<p>Posso dire che vado a Mirabilandia solo per salire sul <em>Katun</em>.</p>
<blockquote><p>Imparare il framework MVC è un po come andare sul <em>Katun</em>, superata la salita iniziale, <strong>progettare interfacce web javascript e single page application diventa un vero e proprio divertimento</strong>, grazie alla semplicità e alla facilità con cui è possibile aggiornare le varie <em>views </em>in modo indipendente dagli altri componenti.</p></blockquote>
<hr />
<p><em>Programmare con #frameworks #MVC è come andare a Mirabilandia!</em><br /><a href='https://twitter.com/share?text=Programmare+con+%23frameworks+%23MVC+%C3%A8+come+andare+a+Mirabilandia%21&#038;via=upCreativeIta&#038;related=upCreativeIta&#038;url=https://www.upcreative.net/html5-mobile-app-limportanza-del-framework-mv/' target='_blank'>Click To Tweet</a></p>
<hr />
<h2>HTML5 Mobile App ed MVC: Conclusioni</h2>
<p>Visto che stiamo parlando di <strong>HTML5 Mobile App</strong> sviluppate in HTML5, CSS3 e <strong>Javascript</strong>, e che applicazioni di questo tipo sono a tutti gli effetti <em>single page application, </em>ovvero quei tipi di progetti in cui la pagina non viene mai ricaricata e tutte le operazioni di creazione, modifica e cancellazione dei dati viene delegata al server tramite un <strong>servizio di restful API</strong>, invito enormemente tutti gli sviluppatori client a <strong>cominciare ad interessarsi all&#8217;MVC</strong>.</p>
<p>Siccome, analogamente a molti altri campi (come quello del  <a title="Web Marketing - Business online" href="http://www.upcreative.net/category/marketing/">web marketing</a>), ci stiamo affacciando solo ora a questo aspetto della programmazione, mentre molti altri paesi lo stanno già facendo da tempo, e siccome il mondo delle <em>client web application </em>è in costante evoluzione, qualsiasi web designer e sviluppatore front-end dovrebbe secondo me considerare di inserire l&#8217;MVC nelle proprie skills, magari dedicando parte del proprio tempo a capirne il funzionamento.</p>
<p>E tu cosa ne pensi? Hai mai provato a sviluppare un tuo progetto Javascript con la logica dell&#8217;MVC? Scrivilo 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 la programmazione MVC insieme a molte altre tecniche, ho realizzato più di 10 mobile app in HTML, CSS3 e Javascript (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-shortcode6ab26f6998ab7-4" class="wysija-msg ajax"></div><form id="form-wysija-shortcode6ab26f6998ab7-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-limportanza-del-framework-mv/">HTML5 Mobile App: l’importanza del framework MVC</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-limportanza-del-framework-mv/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I sistemi di javascript templating e le migliori librerie</title>
		<link>https://www.upcreative.net/web-application-i-sistemi-di-javascript-templating-e-le-migliori-librerie/</link>
		<comments>https://www.upcreative.net/web-application-i-sistemi-di-javascript-templating-e-le-migliori-librerie/#comments</comments>
		<pubDate>Thu, 24 Oct 2013 08:59:53 +0000</pubDate>
		<dc:creator><![CDATA[upcreative]]></dc:creator>
				<category><![CDATA[Creare applicazioni javascript]]></category>
		<category><![CDATA[Web Apps]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[markup html]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[templating engines]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://www.upcreative.net/?p=2234</guid>
		<description><![CDATA[<p>Numerose sono le librerie nate per supportare lo sviluppatore durante il processo di creazione di una web app javascript, ognuna relativa ad una determinata fase. Una categoria che ricopre grande importanza è senz&#8217;altro quella che riguarda il sistema di javascript</p>
<p>The post <a rel="nofollow" href="https://www.upcreative.net/web-application-i-sistemi-di-javascript-templating-e-le-migliori-librerie/">I sistemi di javascript templating e le migliori librerie</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"><p>Numerose sono le librerie nate per supportare lo sviluppatore durante il processo di creazione di una web app javascript, ognuna relativa ad una determinata fase. Una categoria che ricopre grande importanza è senz&#8217;altro quella che riguarda il <strong>sistema di javascript templating</strong>.</p>
<p>Per la realizzazione di un&#8217;applicazione javascript infatti, vengono utilizzati nella maggior parte dei casi i template engines, che permettono di aggiornare facilmente il markup HTML dell&#8217;interfaccia invece di preoccuparsi di farlo in modo &#8220;manuale&#8221; usando librerie come jQuery.</p>
<p>Molteplici sono i benefici derivanti dall&#8217;utilizzo di questi sistemi, tra i quali possiamo sottolineare:</p>
<ul>
<li>aumento delle performance di esecuzione</li>
<li>riduzione e pulizia del codice</li>
<li>velocità di sviluppo</li>
</ul>
<h3>Come funzionano i sistemi di templating?</h3>
<div>
<p>La grande utilità di questi tipi di framework risiede nel fatto che la logica secondo la quale essi funzionano richiama a grandi linee quella dei template HTML generati usando <strong>linguaggi lato-server</strong>.</p>
<p>Nei markup HTML infatti, che sono dichiarati solitamente in file Javascript o all&#8217;interno del documento (sottoforma di tag script con un <em>type attribute alternate</em>) o in una variabile di tipo string, possono essere inserite delle variabili, dei cicli o delle condizioni secondo sintassi specifiche, e in alcuni casi può essere utilizzato direttamente anche codice javascript.</p>
<p>Il <strong>funzionamento</strong> è molto semplice: per prima cosa viene creato il markup, poi viene creata una compilazione tramite javascript, la quale è infine combinata con i dati che abbiamo a disposizione e per generare l&#8217;HTML da inserire in un punto specifico dell&#8217;interfaccia.</p>
<p>Di solito questo processo è gestito dai moduli delle View del progetto (nel caso di una architettura di <a title="Creare applicazioni con pattern MVC" href="http://www.upcreative.net/creare-applicazioni-web-il-pattern-mvc-ed-i-principali-mvc-javascript-frameworks/">tipo MVC</a>), e viene richiamato ogni volta che il Model a cui quella view è collegata subisce delle modifiche.</p>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/schema-funzionamento-template-engines.jpg"><img class="alignnone size-full wp-image-2237" alt="schema-funzionamento-template-engines" src="http://www.upcreative.net/wp-content/uploads/2013/10/schema-funzionamento-template-engines.jpg" width="690" height="400" /></a></p>
<p>Ecco l&#8217;esempio di una View che, all&#8217;evento di modifica del model associato, richiama l&#8217;aggiornamento del proprio markup tramite il sistema di templating (il codice è prelevato da una mia applicazione scritta utilizzando il framework MVC <a title="Backbone.js - Framework MVC" href="http://backbonejs.org">Backbone.js</a>).</p><pre class="crayon-plain-tag">window.WeathericonsView = Backbone.View.extend({    	
    initialize:function () {
        //all'evento di cambiamento degli attributi del model,
        // viene richiamata la funzione 'render' della view
        this.listenTo(this.model, &quot;change&quot;, this.render);		
    },    
    render:function () { 
        //this.template &egrave; la compilazione del template,
        //attribuita alla view da un javascript di utilit&agrave; esterno

        //l'istruzione this.model.toJSON() converte i dati del model 
        //in formato json per poter essere processato dal sistema 
        //di templating
        this.$el.html(this.template(this.model.toJSON())); 
        return this;
    }

});</pre><p>
Nei progetti più complessi,  ai fini di una buona strutturazione, è pratica molto comune <strong>creare un file .html separato</strong> per il template di ogni view (che vengono poi richiamati tramite tools javascript come <a title="Javascript per il caricamento di moduli esterni" href="http://requirejs.org">require.js</a>), in modo da distinguere ogni componente dall&#8217;altro.</p>
<h2>I framework più conosciuti ed utilizzati</h2>
<p>Nel mondo del web sono nati numerosi framework open-source per il<strong> templating client-side</strong>. La decisione su quale utilizzare è dettata da molti fattori, come per esempio l&#8217;architettura e la complessità del progetto, le <strong>performance di esecuzione</strong> del sistema o la sintassi utilizzata (ogni sistema utilizza la propria).</p>
<p>I vari tipi di template engines si suddividono in due categorie principali:</p>
<ul>
<li><strong>embedded javascript, </strong>che comprende i frameworks che permettono l&#8217;utilizzo di codice javascript all&#8217;interno dei propri template</li>
<li><strong>logic less, </strong>che comprende<strong> </strong>quelli che non permettono l&#8217;utilizzo di javascript, ma che limitano l&#8217;uso di logiche come cicli e condizioni a sintassi personalizzate</li>
</ul>
<p>Di seguito voglio proporti i sistemi di templating più utilizzati e performanti, e con cui personalmente mi sono trovato più a mio agio.</p>
<h3><a title="Underscore - semplice sistema di templating" href="http://underscorejs.org">Underscore.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_01.jpg"><img class="alignnone size-full wp-image-2244" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_01" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_01.jpg" width="690" height="350" /></a></p>
<p>E&#8217; un sistema di templating proprio della libreria underscore.js, viene richiamato con  il metodo <em>_.template e </em> appartiene alla categoria degli embedded javascript. E&#8217; indicato per progetti con <strong>architettura più semplice</strong>, e visto che la maggior parte dei progetti javascript include solitamente la libreria underscore (per via delle innumerevoli funzioni di utilità che offre), questo sistema di template costituisce una risorsa molto utilizzata.</p>
<h3><a title="Handlebars.js - Systema di templating" href="http://handlebarsjs.com">Handlebars.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_02.jpg"><img class="alignnone size-full wp-image-2245" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_02" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_02.jpg" width="690" height="350" /></a></p>
<p>Se hai bisogno di realizzare qualcosa di più complesso e con maggiore flessibilità, allora Handlebars fa al caso tuo. Appartenente alla categoria <em>Logic-less</em>, grazie ai suoi numerosi costrutti logici (come loop e condizioni &#8211; rispettivamente #each e #if), alla presenza di funzioni di utilità globali ed alla possibilità di scrivere funzioni personalizzate, con Handlebars avrai a disposizione un tutto il necessario per la creazione di template molto complessi.<br />
<strong></strong></p>
<h3><a title="Mustache.js - template engine" href="http://mustache.github.io">Mustache.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_03.jpg"><img class="alignnone size-full wp-image-2246" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_03" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_03.jpg" width="690" height="350" /></a></p>
<p>Altro sistema <em>logic-less molto utilizzato,</em> nonché ottima soluzione di templating, costituisce la base del sopra citato handlebars.js, quindi si presenta molto più semplice e con qualche funzione di utilità in meno. Grazie alla sua sintassi pulita è facile da scrivere, rileggere e mantenere, anche se in alcuni casi troppo basilare. Inoltre il markup non viene pre compilato e quindi ha una velocità di rendering più lenta di Handlebars.</p>
<h3><a title="Dust.js - Logic less template engine" href="http://akdubya.github.io/dustjs/">Dust.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_04.jpg"><img class="alignnone size-full wp-image-2247" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_04" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_04.jpg" width="690" height="350" /></a></p>
<p>Sviluppato da LinkedIn, dust.js è un altro <em>logic-less</em> che offre una logica molto semplice ed intuitiva, per codice più pulito e compatto; presenta una buona collezione di funzioni di utilità, la possibilità di generare il markup in modo asincrono e quella di cerare template &#8220;assemblabili&#8221;.</p>
<h3><a title="Hogan.js Sistema di templating" href="http://twitter.github.io/hogan.js/">Hogan.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_05.jpg"><img class="alignnone size-full wp-image-2248" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_05" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_05.jpg" width="690" height="350" /></a></p>
<p>E&#8217; sviluppato da Twitter, rappresenta una soluzione di templating <em>logic-less</em> molto semplice ed alquanto basilare. Costruito come handlebars.js sulla base di mustache, anch&#8217;esso prevede un processo di precompilazione che velocizza quello di rendering.</p>
<h3><a title="Template engine" href="http://embeddedjs.com/" target="_blank">Embedded.js</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_06.jpg"><img class="alignnone size-full wp-image-2249" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_06" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_06.jpg" width="690" height="350" /></a></p>
<p>Come afferma il suo nome, Embedded JS appartiene alla categoria degli <em>embedded-javascript</em>. Esso utilizza gli stessi tag di underscore e funzioni di utilità inspirate a <a title="Web development framework" href="http://rubyonrails.org" target="_blank">Ruby on Rails</a>. Con questo sistema ogni template deve essere salvato in un file separato, il cui nome viene poi passato alla funzione di rendering.</p>
<h3><a title="Jade Templating - Ottimo sistema di templating" href="http://jade-lang.com/" target="_blank">Jade templating</a></h3>
<p><a ref="magnificPopup" href="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_07.jpg"><img class="alignnone size-full wp-image-2250" alt="I-sistemi-di-javascript-templating-e-le-migliori-librerie_07" src="http://www.upcreative.net/wp-content/uploads/2013/10/I-sistemi-di-javascript-templating-e-le-migliori-librerie_07.jpg" width="690" height="350" /></a></p>
<p>Altro <em>logic-less</em>, costituisce un sistema molto diverso dagli altri, per una caratteristica in particolare, la sintassi, che si basa in massima parte sull&#8217;impiego di indentazioni di riga e spazi.</p>
<h3>Altri sistemi di templating engine:</h3>
<ul>
<li><a href="https://github.com/medikoo/domjs">Dom.js</a></li>
<li><a href="http://olado.github.com/doT/">doT.js</a></li>
<li><a href="http://embeddedjs.com/">EJS</a></li>
<li><a href="http://icanhazjs.com/">ICanHaz.js</a></li>
<li><a href="http://borismoore.github.com/jsrender/demos/index.html">JsRender.js</a></li>
<li><a href="https://github.com/adammark/Markup.js">Markup.js</a></li>
<li><a href="http://ejohn.org/blog/javascript-micro-templating/">Microtemplating</a></li>
</ul>
</div>
</div></div><p>The post <a rel="nofollow" href="https://www.upcreative.net/web-application-i-sistemi-di-javascript-templating-e-le-migliori-librerie/">I sistemi di javascript templating e le migliori librerie</a> appeared first on <a rel="nofollow" href="https://www.upcreative.net">upCreative</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.upcreative.net/web-application-i-sistemi-di-javascript-templating-e-le-migliori-librerie/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
