 
 
 <?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; templating engines</title>
	<atom:link href="https://www.upcreative.net/tag/templating-engines/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>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>
