Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

wip, finished Chaining as a Design Pattern

  • Loading branch information...
commit e5f1874fd289c639e71d6e661b5d48764e94b4a8 1 parent 209011b
@stecb stecb authored
Showing with 66 additions and 63 deletions.
  1. +66 −63 index_it.html
View
129 index_it.html
@@ -113,14 +113,14 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
</div>
</div>
<p>
- Sempre pi&ugrave; spesso chi si avvicina alla programmazione in JavaScipt si imbatte nella difficile scelta della libreria da adottare, o quantomeno della prima da imparare. Se lavori all'interno di un team probabilmente gi&agrave; ti &egrave; stato imposto un framework, con motivazioni pi&ugrave; o meno discutibili. Se questo &egrave; il tuo caso, se sei costretto a usare <a href="http://www.mootools.net">MooTools</a> ma sei pratico con <a href="http://www.jquery.com">jQuery</a>, allora questo articolo pu&ograve; ugualmente esserti d'aiuto.
+ Sempre pi&ugrave; spesso chi si avvicina alla programmazione in JavaScript si imbatte nella difficile scelta della libreria da adottare, o quantomeno della prima da imparare. Se lavori all'interno di un team probabilmente gi&agrave; ti &egrave; stato imposto un framework, con motivazioni pi&ugrave; o meno discutibili. Se questo &egrave; il tuo caso, se sei costretto a usare <a href="http://www.mootools.net">MooTools</a> ma sei pratico con <a href="http://www.jquery.com">jQuery</a>, allora questo articolo pu&ograve; ugualmente esserti d'aiuto.
</p>
<p>
<a href="http://twitter.com/joshink/statuses/1671986611">Ogni</a> <a href="http://twitter.com/jezusisstoer/statuses/1642244246">giorno</a> <a href="http://twitter.com/digitalcampaign/statuses/1622094648">su</a> <a href="http://twitter.com/jesswma/statuses/1605733380">Twitter</a> leggo innumerevoli post del tipo "MooTools o jQuery?". Questo articolo vuole aiutarti a scegliere.
</p>
<h3>Premessa</h3>
<p>
- Sono uno sviluppatore MooTools. Lavoro sul framework MooTools. Scrivo un blog su MooTools. Ho scritto <a href="http://www.mootorial.com">il principale tutorial online</a> e <a href="http://www.amazon.com/gp/product/1430209836?ie=UTF8&tag=clientside-20&link_code=as3&camp=211189&creative=373489&creativeASIN=1430209836">il libro su MooTools</a>. Ovviamente ho una visione che &egrave; in qualche modo imparziale. E ammetto anche di non usare molto spesso jQuery. Se sei uno sviluppatore di jQuery e pensi che abbia travisato qualcosa, ti prego di contattarmi e aiutarmi a rimediare l'errore. Il mio obiettivo &egrave; quello di esser d'aiuto - non quello di vendere un framework piuttosto che un'altro.
+ Sono uno sviluppatore MooTools. Lavoro sul framework MooTools. Scrivo un blog su MooTools. Ho scritto <a href="http://www.mootorial.com">il principale tutorial online</a> e <a href="http://www.amazon.com/gp/product/1430209836?ie=UTF8&tag=clientside-20&link_code=as3&camp=211189&creative=373489&creativeASIN=1430209836">il libro su MooTools</a>. Ovviamente ho una visione che &egrave; in qualche modo di parte. E ammetto anche di non usare molto spesso jQuery. Se sei uno sviluppatore jQuery e pensi che abbia travisato qualcosa, ti prego di contattarmi e aiutarmi a rimediare l'errore. Il mio obiettivo &egrave; quello di esser d'aiuto - non quello di vendere un framework piuttosto che un'altro.
</p>
<h3>Scopo</h3>
@@ -151,7 +151,7 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
<li><a href="#extension">Estendere ed Implementare le Classi</a></li>
</ul>
</li>
- <li><a href="#conclusion">E' ora di decidere</a></li>
+ <li><a href="#conclusion">&Egrave; ora di decidere</a></li>
<li><a href="#discussion">Commenti</a></li>
</ul>
@@ -235,24 +235,24 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
<p>
Se si v&agrave; sul sito di jQuery, all'inizio della pagina c'&egrave; scritto:
</p>
- <blockquote>jQuery è una libreria Javascript veloce e concisa che semplifica la navigazione del documento HTML, la gestione degli eventi, le animazioni e le interazioni Ajax per un rapido sviluppo web. jQuery e' progettato per cambiare il modo in cui si scrive Javascript.</blockquote>
+ <blockquote>jQuery è una libreria Javascript veloce e concisa che semplifica la navigazione del documento HTML, la gestione degli eventi, le animazioni e le interazioni Ajax per un rapido sviluppo web. jQuery &egrave; progettato per cambiare il modo in cui si scrive Javascript.</blockquote>
<p>
- ...e se si va' sul sito di MooTools, ecco cosa si trover&agrave; scritto:
+ ...mentre se si va' sul sito di MooTools, ecco cosa si trover&agrave; scritto:
</p>
- <blockquote>MooTools e' un framework Javascript Object-Oriented compatto e modulare, progettato per lo sviluppatore Javascript medio/avanzato. Permette di scrivere codice potente, flessibile e cross-browser con le sue eleganti, ben documentate e coerenti API.</blockquote>
+ <blockquote>MooTools &egrave; un framework Javascript Object-Oriented compatto e modulare, progettato per lo sviluppatore Javascript medio/avanzato. Permette di scrivere codice potente, flessibile e cross-browser con le sue eleganti, ben documentate e coerenti API.</blockquote>
<p>
- Penso che questo dica gi&agrave; tutto. Se mi stai per domandare (e stai leggendo questo, quindi assumo che l'hai appena fatto), la domanda non e' quale sia il framework migliore o peggiore. &Egrave; quale delle cose scritte qui sopra vuoi fare? Questi due frameworks non stanno cercando di fare le stesse cose. Si sovrappongono un po' rispetto alle funzionalita' che mettono a disposizione, ma non stanno cercando di fare le stesse cose.
+ Penso che questo dica gi&agrave; tutto. Se mi stai per domandare (e stai leggendo, quindi assumo che tu lo stia facendo), la domanda non &egrave; quale sia il framework migliore o peggiore. &Egrave; quale delle cose scritte qui sopra vuoi fare? Questi due frameworks non stanno cercando di fare le stesse cose. Si sovrappongono un po' rispetto alle funzionalita' che mettono a disposizione, ma non stanno cercando di fare le stesse cose.
</p>
<p>
- La descrizione di jQuery stesso parla di HTML, eventi, animazioni, Ajax e sviluppo web. MooTools parla di orientamento agli oggetti (OOP) e riguarda lo scrivere codice potente e flessibile. jQuery aspira a "cambiare il modo di scrivere Javascript" mentre MooTools e' progettato per lo sviluppatore Javascript medio/avanzato.
+ La descrizione di jQuery stesso parla di HTML, eventi, animazioni, Ajax e sviluppo web. MooTools parla di orientamento agli oggetti (OOP) e riguarda lo scrivere codice potente e flessibile. jQuery aspira a "cambiare il modo di scrivere Javascript" mentre MooTools &egrave; progettato per lo sviluppatore Javascript medio/avanzato.
</p>
<p>
- Parte di questa considerazione deriva dalla nozione di <em>framework</em> vs <em>toolkit</em>. MooTools e' un <em>framework</em> che cerca di implementare Javascript <em>come dovrebbe essere</em> (in accordo con gli autori di MooTools). Lo scopo e' quello di implementare una API che sembra javascript puro e lo esalta; non riguarda solamente il DOM. jQuery e' un <em>toolkit</em> che mette a disposizione un insieme di metodi facili da utilizzare in un sistema progettato per rendere il DOM stesso piu' piacevole. Accade spesso che il DOM sia l'area in cui la maggior parte delle persone scrive JavaScript, quindi in molti casi, jQuery e' tutto quello che serve.
+ Parte di questa considerazione deriva dalla nozione di <em>framework</em> vs <em>toolkit</em>. MooTools &egrave; un <em>framework</em> che cerca di implementare Javascript <em>come dovrebbe essere</em> (in accordo con gli autori di MooTools). Lo scopo &egrave; quello di implementare una API che sembra JavaScript puro e che lo esalti; non riguarda solamente il DOM. jQuery &egrave; un <em>toolkit</em> che mette a disposizione un insieme di metodi facili da utilizzare in un sistema progettato per rendere il DOM stesso piu' piacevole. Accade spesso che il DOM sia l'area in cui la maggior parte delle persone scrive JavaScript, quindi in molti casi, jQuery &egrave; tutto quello che serve.
</p>
<p>
- Quando si scrive codice con MooTools si ha la sensazione di scrivere javascript puro. Se non si e' interessati riguardo al javascript come linguaggio, imparare MooTools può sembrare una cosa di troppo. Se si e' interessati a Javascript ed in particolare a cosa lo rende interessante, la potenza, e l'espressivita', beh, personalmente, penso che mootools sia la scelta migliore.
+ Quando si scrive codice con MooTools si ha la sensazione di scrivere javascript puro. Se non si &egrave; interessati riguardo al JavaScript come linguaggio, imparare MooTools può sembrare una cosa di troppo. Se si &egrave; invece interessati a Javascript ed in particolare a cosa lo rende interessante, la potenza e l'espressivita', beh, personalmente, penso che MooTools sia la scelta migliore.
</p>
@@ -260,68 +260,68 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
<h2>La Curva di Apprendimento e la Community</h2>
<p>
- Per prima cosa, jQuery e' sicuramente piu facile da imparare. Ha uno stile quasi colloquiale che non ti fa sentire di star programmando. Se tutto quello che interessa e' ottenere qualcosa che funzioni velocemente senza dover imparare Javascript, jQuery e' probabilmente la scelta migliore. Non che MooTools non ti aiuti ad ottenere gli stessi risultati, ma ammetto che può essere più ostico da imparare se se si e' principianti in Javascript ed in più ci sono moltissime risorse che aiutano ad imparare jQuery - almeno, più di quelle che ci sono per imparare MooTools.
+ Per prima cosa, jQuery &egrave; sicuramente piu facile da imparare. Ha uno stile quasi colloquiale che non ti fa sentire di star programmando. Se tutto quello che interessa &egrave; ottenere qualcosa che funzioni velocemente senza dover imparare Javascript, jQuery &egrave; probabilmente la scelta migliore. Non che MooTools non ti aiuti ad ottenere gli stessi risultati, ma ammetto che può essere più ostico da imparare se se si &egrave; principianti in Javascript ed in più ci sono moltissime risorse che aiutano ad imparare jQuery - almeno, più di quelle che ci sono per imparare MooTools.
</p>
<p>
- Se si compara la community di jQuery (<a href="http://docs.jquery.com/Discussion">vedere la pagina "discussioni" nel sito di jQuery</a>) con quella di MooTools (<a href="irc://irc.freenode.net/#mootools">irc</a>, <a href="http://groups.google.com/group/mootools-users">mailing list</a>, e <a href="http://mooforum.net/">forum non ufficiale</a>) si scopriranno velocemente due cose: 1) quella jQuery e' nettamente piu estesa (attribuisco questo maggiormente rispetto al punto che ho menzionato sopra riguardo la facilit&agrave; di apprendimento, ma anche perchè...) 2) loro sono molto attivi nel promuovere la libreria. Se si misurano jQuery e MooTools in base a metriche come il numero di persone che lo utilizzano, il numero di query di ricerca su google, il numero di libri venduti, etc, si notera' che jQuery stravince.
+ Se si compara la community di jQuery (<a href="http://docs.jquery.com/Discussion">vedere la pagina "discussioni" nel sito di jQuery</a>) con quella di MooTools (<a href="irc://irc.freenode.net/#mootools">irc</a>, <a href="http://groups.google.com/group/mootools-users">mailing list</a>, e <a href="http://mooforum.net/">forum non ufficiale</a>) si scopriranno velocemente due cose: 1) quella jQuery &egrave; nettamente piu estesa (attribuisco questo maggiormente rispetto al punto che ho menzionato sopra riguardo la facilit&agrave; di apprendimento, ma anche perchè...) 2) loro sono molto attivi nel promuovere la libreria. Se si misurano jQuery e MooTools in base a metriche come il numero di persone che lo utilizzano, il numero di query di ricerca su google, il numero di libri venduti, etc, si notera' che jQuery stravince.
</p>
<p>
- Per dirvi perché dovreste considerare MooTools dovrò prima parlarvi riguardo cosa fanno sostanzialmente questi due frameworks. Il framework che si sceglier&agrave; dovr&agrave; rispettare lo scopo che ci si e' posti ed il proprio metodo di programmazione (ed anche forse <i>se</i> piace programmare, almeno in Javascript).
+ Per dirvi perché dovreste considerare MooTools dovrò prima mostrarvi cosa fanno sostanzialmente questi due frameworks. Il framework che si sceglier&agrave; dovr&agrave; rispettare lo scopo che ci si &egrave; posti ed il proprio metodo di programmazione (ed anche forse <i>se</i> piace programmare, almeno in JavaScript).
</p>
<a name="javascript"></a>
<h2>I Punti di Forza di JavaScript</h2>
<p>
- Parte della decisione sta nel domandarsi che cosa si vuole fare con Javascript. Consideriamo il Javascript puro. Senza nessun framework; solamente puro vecchio JS. Java mette a disposizione oggetti nativi come Strings, Numbers, Functions, Arrays, Dates, Espressioni regolari, e piu. Inoltre predispone un modello di ereditarietà - un qualche esoterico modello chiamato ereditarietà prototipale (a riguardo ci tornerò più avanti). Questi blocchi di costruzione ed il concetto di ereditarietà sono pane e burro di ogni linguaggio di programmazione e non hanno assolutamente niente a che vedere con i browsers o con il web o con CSS o HTML. Si potrebbe scrivere qualsiasi cosa si voglia con Javascript. Tris, Scacchi, photo editing, un server web, qualunque cosa. Il fatto e' che il 99% di tutto il JS gira nei browsers ed e' in questo contesto che lo pensiamo. Il linguaggio di programmazione per i browser.
-
- Part of making this choice is asking what you want to do with JavaScript. Let's consider vanilla JavaScript. No framework; just plain old JS. JavaScript gives you native objects like <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String">Strings</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number">Numbers</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function">Functions</a>, <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Array">Arrays</a>, <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Date">Dates</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp">Regular Expressions</a>, and more. JavaScript also gives you an inheritance model - a somewhat esoteric model called <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Inheritance">prototypal inheritance</a> (which I'll talk about more later). These building blocks and the concept of inheritance are the bread and butter of any programming language and they have absolutely nothing to do with browsers or the web or CSS or HTML. You could write anything you wanted to in JavaScript. Tic-tac-toe, chess, photoediting, a web server, whatever. It just so happens that 99% of all the JavaScript out there is run in browsers and that's what we think of it as. The programming language for browsers.
+ Parte della decisione sta nel domandarsi che cosa si vuole fare con Javascript. Consideriamo il JavaScript base. Senza nessun framework; solamente vecchio e puro JS. Mette a disposizione oggetti nativi come
+ <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String">Strings</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number">Numbers</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function">Functions</a>, <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Array">Arrays</a>, <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Date">Dates</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp">Espressioni regolari</a>, e pi&ugrave;. Inoltre predispone un modello di ereditariet&agrave; - un qualche esoterico modello chiamato <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Inheritance">ereditariet&agrave; prototipale</a> (a riguardo ci torner&ograve; pi&ugrave; avanti). Questi blocchi portanti ed il concetto di ereditariet&agrave; sono pane e burro di ogni linguaggio di programmazione e non hanno assolutamente niente a che vedere con i browsers o con il web o con CSS o HTML. Si potrebbe scrivere qualsiasi cosa si voglia con JavaScript. Tris, scacchi, photo editing, un server web, qualunque cosa. Il fatto &egrave; che il 99% di tutto il JS che c'&egrave; in giro lo vediamo eseguire nei browsers ed &egrave; in questo contesto che lo pensiamo. Ossia il linguaggio di programmazione per i browser.
</p>
<p>
- Understanding that the browser, the DOM, is just where we happen to use JS most of the time but that it's actually a very robust and expressive programming language will help you understand the difference between MooTools and jQuery.
+ Sapere che il browser, il DOM, &egrave; l'area dove la maggior parte delle volte utilizziamo JavaScript ma che quest'ultimo &egrave; anche un liguaggio di programmazione molto robusto ed espressivo aiuter&agrave; a capire le differenze tra MooTools e jQuery.
</p>
<a name="dom"></a>
- <h3>More Than Just The DOM</h3>
+ <h3>Non Solo il DOM</h3>
<p>
- If you think of the tasks that we want to accomplish in JavaScript strictly in terms of "get stuff on the page and do stuff to it" then jQuery is probably the best choice. It excels at offering a very expressive system for describing behavior on the page in a way that doesn't feel like programming sometimes. You can still use the rest of JavaScript to do what you want to do, but if you're focused on the DOM - changing CSS properties, animating things, fetching content via AJAX, etc - most of what you'll end up writing will be covered by jQuery, and what isn't will likely be plain-old JavaScript. jQuery does provide some methods that aren't about the DOM; for example, it provides a mechanism for iterating over arrays - <i><a href="http://docs.jquery.com/Utilities/jQuery.each">$.each(array, fn)</a></i> - or, for example, it offers a trim method for strings - <i><a href="http://docs.jquery.com/Utilities/jQuery.trim">$.trim(str)</a></i>. But there aren't a ton of these types of utility methods, which is fine because, for the most part, if you're just getting stuff out of the DOM, iterating over them, and altering them in some way (adding html, changing styles, adding event listeners for click and mouseover, etc) you don't need much else.
+
+ Se si pensa a cosa si vuole fare con JavaScript in termini di "prendere elementi nella pagina per farne qualcosa" allora jQuery &egrave; probabilmente la scelta migliore. Eccelle nell'offrire un sistema molto espressivo per descrivere il comportamento nelle pagine in un modo che quasi non sembra programmazione vera e propria. Si pu&ograve; sempre continuare ad usare il resto in JavaScript per fare quello che si vuole, ma se si &egrave; focalizzati sul DOM - per cambiare propriet&agrave; CSS, animare elementi, recuperare dei contenuti via Ajax, etc - tutto quello che si vorr&agrave; fare sar&agrave; ottenibile tramite jQuery, pi&ugrave; qualcosa - se mancante in jQuery - in vecchio e puro JavaScript. jQuery mette anche a disposizione metodi che non riguardano prettamente il DOM; ad esempio, offre un meccanismo per iterare sugli array - <i><a href="http://docs.jquery.com/Utilities/jQuery.each">$.each(array,fn)</a></i> - oppure, ad esempio, offre un metodo per il trim delle stringhe - <a href="http://docs.jquery.com/Utilities/jQuery.trim">$.trim(str)</a></i>. Ma non sono presenti molti metodi di questo tipo, che &egrave; un bene, perch&egrave;, per la maggior parte, se si stanno solo prendendo elementi dal DOM, ci si itera sopra, e li si altera (aggiungendo html, cambiando stili, aggiungendo dei listener per eventi quali click e mouseover, etc) non serve molto altro.
</p>
<p>
- But if you think of JavaScript's scope in its full breadth, you can see that jQuery doesn't focus on things outside of the DOM. This is one of the reasons it is so easy to learn, but it also limits the ways it can help you write JavaScript. It's just not trying to be anything other than a solid programming system <i>for the DOM</i>. It doesn't address inheritance nor does it address the basic utilities of all the native types in the JavaScript language, <i>but it doesn't need to</i>. If you want to mess around with strings, dates, regular expressions, arrays and functions, <i>you can</i>. It's just not jQuery's job to help you do it. JavaScript as a language is there at your feet. jQuery makes the DOM your playground, but the rest of JavaScript is just not in its scope.
+ Ma se si pensa al JavaScript nella sua totalit&agrave;, si pu&ograve; notare come jQuery non si focalizzi in cose al di fuori del DOM. Questa &egrave; una delle ragioni per cui &egrave; cos&igrave; facile da imparare, ma altres&igrave; limita il modo in cui pu&ograve; aiutarti a scrivere JavaScript. Sta solamente cercando di essere nientemeno che un solido sistema di programmazione per il DOM. Non prevede ereditariet&agrave; e nemmeno dispone di utilit&agrave; per tutti i tipi nativi del linguaggio JavaScript, ma non ne ha la necessit&agrave;. Se si vogliono fare magie con stringhe, date, espressioni regolari, array e funzioni, &egrave; possibile. Ma aiutare in questo non &egrave; compito di jQuery. JavaScript come linguaggio &egrave; quello che serve. jQuery rende il DOM il tuo ambiente, ma il resto del linguaggio JavaScript &egrave; fuori dalla sua ottica.
</p>
<p>
- This is where MooTools is vastly different. Rather than focusing exclusively on the DOM (though, as I'll get into in a bit, it offers all the functionality that jQuery does but accomplishes this in a very different manner), MooTools takes into its scope the entire language. If jQuery makes the DOM your playground, MooTools aims to make JavaScript your playground, and this is one of the reasons why it's harder to learn.
+ &Egrave; qui dove si differenzia maggiormente MooTools. Piuttosto che focalizzarsi esclusivamente sul DOM (che comunque, e ci torner&ograve; piu avanti, offre tutte le stesse funzionalit&agrave; di jQuery ma consegue lo scopo in maniera totalmente differente), MooTools prende sotto suo dominio tutto l'intero linguaggio. Se jQuery rende il DOM l'ambiente operativo, MooTools mira a rendere tutto JavaScript come ambiente operativo, e questa &egrave; una delle ragioni per cui &egrave; piu ostico da imparare.
</p>
<a name="inheritance"></a>
- <h3>Inheritance with JavaScript</h3>
+ <h3>L'Ereditariet&agrave; in JavaScript</h3>
<p>
- The JavaScript programming language has some really awesome things about it. For starters, it's a <a href="http://en.wikipedia.org/wiki/Functional_programming">functional language</a>, which means that it treats functions as high-order objects that can be passed around as variables just like any other object - strings or numbers for example. It's designed with this concept in mind and many of the methods and patterns in it work best when you write code this way. It's the difference between:
+ Il linguaggio di programmazione JavaScript offre alcune cose veramente fantastiche a riguardo. Per i principianti, &egrave; un <a href="http://en.wikipedia.org/wiki/Functional_programming">linguaggio funzionale</a>, significa che tratta le funzioni come oggetti di ordine superiore che possono essere passati come variabili praticamente come tutti gli altri oggetti - stringhe o numeri ad esempio. &Egrave; progettato con questo concetto nella mente e molti dei metodi e dei pattern presenti funzionano al meglio quando il codice viene scritto in questo modo. &Egrave; la differenza tra:
</p>
-<pre class="js">for (var i = 0; i &lt; myArray.length; i++) { /* do stuff */ }</pre>
+<pre class="js">for (var i = 0; i &lt; myArray.length; i++) { /* fai qualcosa */ }</pre>
<p>
- and
+ e
</p>
- <pre class="js">myArray.forEach(function(item, index) { /* do stuff */ });</pre>
+ <pre class="js">myArray.forEach(function(item, index) { /* fai qualcosa */ });</pre>
<p>
- JavaScript has an <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Inheritance">inheritance model</a> that is not quite unique but at least rather rare in programming languages. Instead of classes that are defined that can be subclassed it passes along traits through <i><a href="http://en.wikipedia.org/wiki/Prototype-based_programming">prototypal inheritance</a></i>. This means that objects inherit directly from other objects. If you reference a property on an object that inherits from another object, the language inspects the child object for that property and, if it doesn't find it, looks for it on the parent. This is how a method on, say, an array works. When you type:
+ JavaScript ha un <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Inheritance">modello di ereditariet&agrave;</a> che non &egrave; unico ma piuttosto raro nei linguaggi di programmazione. Invece dell'ereditariet&agrave; a classi (una classe pu&ograve; essere sottoclasse etc) JS vira verso l'ereditariet&agrave; prototipale. Questo significa che gli oggetti ereditano direttamente da altri oggetti. Se si referenzia una propriet&agrave; in un oggetto che eredita da un altro oggetto, il linguaggio ispeziona l'oggetto figlio per quella propriet&agrave; e, se non la trova, la cerca nel padre. Questo &egrave; il modo in cui funziona sugli array. Quando scrivi:
</p>
- <pre class="js">[1,2,3].forEach(function(item) { alert(item) }); //this alerts 1 then 2 then 3</pre>
+ <pre class="js">[1,2,3].forEach(function(item) { alert(item) }); //alert di 1 poi 2 ed infine 3</pre>
<p>
- the method "<a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Objects:Array:forEach">forEach</a>" is not a property of the array you declare (<em>[1,2,3]</em>), it is a property of the prototype for all Arrays. When you reference this method the language looks for a method called <em>forEach</em> on your array, and, not finding it, then looks at the prototype for all arrays. This means that the <em>forEach</em> method is not in memory once for every array in memory; it is only in memory for the prototype of arrays. This is incredibly efficient and ultimately quite powerful. (Side note: MooTools aliases the <em>forEach</em> method as <em>each</em>)
+ il metodo "<a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Objects:Array:forEach">forEach</a>" non &egrave; una propriet&agrave; dell'array che viene dichiarato ([1,2,3]), ma &egrave; una propriet&agrave; del prototipo per tutti gli Array. Quando si referenzia questo metodo il linguaggio cerca forEach nell'array, e, non trovandolo, guarda all'interno del prototipo di tutti gli array. Questo significa che il metodo forEach non &egrave; in memoria per ogni array dichiarato; &egrave; in memoria soltanto per il prototipo degli array. Ossia efficienza e potenza. (nota: l'alias utilizzato in MooTools per forEach &egrave; each)
</p>
<a name="self"></a>
- <h3>Self Reference</h3>
+ <h3>Autoreferenza</h3>
<p>
- Javascript has a special word: "this". It's hard for me to succinctly define what "this" is all about but, by default, "this" is the object to which the current method belongs. It allows objects to refer to themselves within their methods as they would otherwise have no means to do so. This becomes important when you create children objects and have numerous instances of that object; how else could the method of an object refer to itself? When the actual copy of the method exists on the parent, not the child, the "this" keyword allows these instances to refer to their own state. (<a href="http://www.quirksmode.org/js/this.html">here's a much more complete description of the "this" keyword</a>, and <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Special_Operators/This_Operator">another from Mozilla</a>.)
+ In JavaScript esiste una keyword speciale: "this". &Egrave; difficile per me in poche parole definirla ma, di default, "this" &egrave; l'oggetto al quale il metodo corrente appartiene. Permette agli oggetti di riferirsi a se stessi all'interno dei loro metodi, in quanto altrimenti non avrebbero altri mezzi per farlo. Tutto questo inizia a diventare importante quando si creano ogetti figli e numerose istanze di quell oggetto; come altro potrebbe il metodo di un oggetto riferirsi all'oggetto stesso? Quando la copia attuale del metodo esiste nel padre, non nel figlio, la keyword "this" permette a queste istanze di riferirsi al loro stato. (<a href="http://www.quirksmode.org/js/this.html">qui c'&egrave; una piu completa descrizione a riguardo</a>, ed <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Special_Operators/This_Operator">un'altra da Mozilla</a>)
</p>
<p>
- The "this" keyword allows objects that inherit from other objects to refer to themselves, but there are times when you may want to reference something else through "this". This is called <a href="http://alternateidea.com/blog/articles/2007/7/18/javascript-scope-and-binding">binding</a>, wherein you specify a <i>different</i> "this" for a method. The "each" method on Array allows you to specify the bound object with a second argument. Here's an example of where you might want to pass in a different "this":
+ La keyword "this" permette agli oggetti che ereditano da altri oggetti di riferirsi a loro stessi, ma ci sono volte in cui si vorrebbe far riferimento a qualcos altro attraverso il "this". Questo procedimento &egrave; chiamato <a href="http://alternateidea.com/blog/articles/2007/7/18/javascript-scope-and-binding">binding</a>, ossia quando si specifica un "this" <i>diverso</i> per un metodo. Il metodo "each" (del tipo Array) permette di specificare l'oggetto a cui far riferimento attraverso un secondo argomento. Qui sotto c'&egrave; un esempio che esplica il passaggio di un "this" differente:
</p>
<pre class="js">var ninja = {
weapons: ['katana', 'throwing stars', 'exploding palm technique'],
@@ -330,9 +330,9 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
},
logInventory: function() {
this.weapons.each(function(weapon) {
- //we want "this" to point to ninja...
+ //vogliamo che "this" faccia riferimento a ninja...
this.log('this ninja can kill with its ' + weapon);
- }, this); //so we pass "this" (which is ninja) to Array.each
+ }, this); //quindi passiamo "this" (che e' ninja) ad Array.each
}
};
ninja.logInventory();
@@ -341,77 +341,77 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
//this ninja can kill with its exploding palm technique</pre>
<p>
- In the example above, we bind ninja (which is "this" inside the <em>logInventory</em> method) to the method we pass to the array so that we can refer to the log property of ninja. If we didn't do this, "this" would be <em>window</em>.
+ Nell'esempio qui sopra, "leghiamo" ninja (che &egrave; il "this" dentro al metodo <em>logInventory</em>) al metodo che passiamo all'array in modo che ci si possa riferire alla propriet&agrave; log di ninja. Se non l'avessimo fatto, "this" sarebbe stato <em>window</em>.
</p>
<p>
- These are just some examples of the power and expressiveness that JavaScript has to offer - inheritance, self reference and binding, and efficient prototype properties. The bad news is that vanilla JavaScript doesn't make these powerful things very useful or accessible, and this is where MooTools <i>starts</i>. It makes these types of patterns easy and rather pleasant to use. You end up writing more abstract code, and in the long run, this is a good thing - a powerful thing. Learning how these patterns are valuable and how to use them properly takes effort, but the up side is that the code you author is both highly reusable and much easier to maintain. I'll talk about these two things a bit more in a minute.
+ Questi sono solamente alcuni esempi del potere e dell'espressivit&agrave; che JavaScript ha da offrire - ereditariet&agrave;, auto referenza e binding, ed efficienti propriet&agrave; prototipali. La brutta notizia riguarda il fatto che JavaScript puro non rende queste cose potenti molto usabili o accessibili, ed &egrave; qui che <i>entra in gioco</i> MooTools. Rende questi tipi di pattern semplici ed anche piacevoli da usare. Si finisce per usare codice piu astratto, ed a lungo andare, &egrave; una buona cosa - una cosa potente. Capire come questi patterns siano preziosi e come usarli correttamente richiede uno sforzo, ma la cosa positiva &egrave; che il codice che si scrive &egrave; molto pi&ugrave; riusabile e facile da manternere. Andro' nei dettagli a riguardo tra un minuto.
</p>
<a name="jsfun"></a>
- <h2>MooTools Makes JavaScript Itself More Fun</h2>
+ <h2>MooTools Rende JavaScipt Pi&ugrave; Divertente</h2>
<p>
- Because MooTools focuses on making the JavaScript API itself more stable and coherent, it is focused less on giving you an interface that "changes the way you write JavaScript" and more on making JavaScript as a whole less frustrating; MooTools is an extension to the JavaScript language. MooTools tries to make JavaScript the way it is meant to be. A significant portion of the core library is spent on augmenting Function, String, Array, Number, Element and other prototypes. The other big thing it offers is a function called <em><a href="http://mootools.net/docs/core/Class/Class">Class</a></em>.
+ Dato che MooTools si focalizza nel rendere le API JavaScript stesse piu stabili e coerenti, perde un p&ograve; nel dare un'interfaccia che "cambia il modo in cui si scrive JavaScript" e nel rendere JavaScript nell'insieme meno frustrante; MooTools &egrave; un'estensione del liguaggio JavaScript. MooTools prova a rendere il JavaScript com'&egrave; stato pensato. Una parte significante della parte "core" &egrave; viene utilizzata per arricchire Funzioni, Stringhe, Array, Number, Element ed altri prototipi. L'altra enorme cosa che offre &egrave; una funzione chiamata <em><a href="http://mootools.net/docs/core/Class/Class">Class</a></em>.
</p>
<p>
- Now, <em>Class</em> looks to many people like it's trying to recreate a more classical inheritance model that one might find in Java or C++, but that's <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Class-Based_vs._Prototype-Based_Languages">not the case</a>. What <em>Class</em> does is make the prototypal inheritance model of JavaScript easier for you and me to access and take advantage of. I'll note that these concepts are not unique to MooTools (other frameworks offer similar functionality), but both of these concepts are not present in jQuery. jQuery does not offer an inheritance system nor does it offer any enhancements to native objects (Function, String, etc). This is not a deficiency of jQuery as the authors of jQuery could easily offer these things. Rather, they have designed a toolkit with a different goal in mind. Where MooTools aims to make JavaScript more fun, jQuery aims to make the DOM more fun and its designers have chosen to limit their scope to that task.
+ Ora, attraverso <em>Class</em> sembrerebbe si stesse cercando di ricreare un pi&ugrave; classico modello di ereditariet&egrave; che si puo trovare in Java o C++, ma <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Class-Based_vs._Prototype-Based_Languages">non &egrave; cos&igrave;</a>. Quello che fa <em>Class</em> &egrave; rendere il modello di ereditariet&agrave; prototipale del JavaScript pi&ugrave; facile ed accessibile e qualcosa da cui prendere vantaggio. Da notare che questi concetti non sono unici in MooTools (altri frameworks offrono funzionalit&agrave; similari), ma non sono presenti in jQuery. Quest'ultimo non offre un sistema di ereditariet&agrave; n&egrave; offre un miglioramento agli oggetti nativi (Function, String, etc). Sia chiaro, non &egrave; un difetto di jQuery, in quanto i suoi autori potrebbero rendere facilmente disponibili queste cose. Loro hanno invece progettato un toolkit con un obiettivo diverso in mente. Dove MooTools mira a rendere JavaScript pi&ugrave; divertente, jQuery mira a rendere il DOM piu divertente ed i progettisti hanno scelto di limitare i loro scopi a questi compiti.
</p>
<a name="domfun"></a>
- <h2>jQuery Makes the DOM More Fun</h2>
+ <h2>jQuery Rende il DOM Pi&ugrave; Divertente</h2>
<p>
- And this is why jQuery is more accessible. It doesn't ask that you learn JavaScript inside and out. It doesn't throw you into the deep end with prototypal inheritance, binding, "this", and native prototypes. When you get started with jQuery in its <a href="http://docs.jquery.com/Tutorials:How_jQuery_Works">official tutorial</a>, this is the first jQuery code example you find:
+ Ed &egrave; per questo che jQuery &egrave; pi&ugrave; accessibile. Non presuppone che si impari JavaScript in lungo ed in largo. Non mette di fronte l'ereditariet&agrave; prototipale, binding, "this" e prototipi nativi. Quando si inizia a scrivere codice con jQuery tramite il <a href="http://docs.jquery.com/Tutorials:How_jQuery_Works">tutorial ufficiale</a>, questo &egrave; il primo esempio di codice che si trova:
</p>
<pre class="js">window.onload = function() {
- alert("welcome");
+ alert("benvenuto");
}</pre>
- <p>and here's the third: </p>
+ <p>e qui c'&egrave; il terzo: </p>
<pre class="js">$(document).ready(function() {
$("a").click(function(event) {
- alert("Thanks for visiting!");
+ alert("Grazie della visita!");
});
});</pre>
<p>
- If you read <a href="http://www.amazon.com/gp/product/1430209836?ie=UTF8&tag=clientside-20&link_code=as3&camp=211189&creative=373489&creativeASIN=1430209836">the MooTools book</a> or the <a href="http://www.mootorial.com/wiki">MooTools tutorial</a> (both of which I authored) they start in a much different place. While you can skip ahead and quickly learn about effects and the DOM, if you want to learn MooTools, you have to start with things like <em>Class</em>, and, I'll admit: if you're new to programming, or you just want to get something working on your site without having to learn everything about JavaScript, chances are jQuery is going to look a lot more friendly to you.
+ Se si legge il <a href="http://www.amazon.com/gp/product/1430209836?ie=UTF8&tag=clientside-20&link_code=as3&camp=211189&creative=373489&creativeASIN=1430209836">libro su MooTools</a> oppure il <a href="http://www.mootorial.com/wiki">tutorial MooTools</a> (dei quali ne sono l'autore) questi approcciano in maniera completamente differente. Mentre si pu&ograve; saltare gran parte ed andare direttamente ad imparare cose su effetti e DOM, se si vuol imparare seriamene MooTools, bisognerebbe iniziare con cose come <em>Class</em>, e, lo ammetto: se si &egrave; alle prime armi con la programmazione, o si vuol solamente qualcosa che funzioni nel proprio sito senza approfondire il linguaggio JavaScript, jQuery sicuramente risulter&agrave; molto pi&ugrave; semplice ed "amichevole".
</p>
<p>
- On the other hand, if you want to learn JavaScript itself, MooTools is a great way to do it. It implements a lot of things that JavaScript is going to have (many of the methods on Natives are just the <a href="https://developer.mozilla.org/En/New_in_JavaScript_1.8">JavaScript 1.8</a> spec and beyond). If you're used to programming, especially both object oriented <em>and</em> functional programming, MooTools has a lot of design patterns that are very exciting and expressive.
+ D'altra parte, se si vuol veramente imparare JavaScript, MooTools &egrave; un gran bel mezzo per riuscirci. Implementa molte cose che JavaScript deve ancora avere (molti dei metodi che estendono i tipi nativi sono solo le specifiche <a href="https://developer.mozilla.org/En/New_in_JavaScript_1.8">js 1.8</a> ed oltre). Se si &egrave; abituati a programmare, specialmente sia programmazione orientata agli oggetti che funzionale, MooTools offre tantissimi design patterns interessanti ed espressivi.
</p>
<a name="cando"></a>
- <h2>Anything You Can Do I Can Do Better</h2>
+ <h2>Qualunque Cosa Tu Faccia, Io Posso Farla Meglio</h2>
<p>
- If you look at the things jQuery can do, there's often a counterpart in MooTools. If you look at the things MooTools can do, there is often no way to emulate it using jQuery code because of jQuery's focus on the DOM. MooTools has a broader functionality than jQuery, but there's nothing about jQuery that prevents you from doing those things. For example, jQuery does not come with any sort of inheritance system, but that's ok. You could, if you want, use the MooTools <em>Class</em> in conjunction with jQuery if you wanted to (or write your own). There's even <a href="http://code.google.com/p/jquery-inheritance/updates/list">an inheritance plug-in for jQuery</a> (I haven't used it, but I assume it offers pretty much the same kind of functionality).
+ Se si guarda a quello che jQuery pu&ograve; fare, c'&egrave; sempre una stessa funzionalit&agrave; in MooTools. Se guardi alle cose che MooTools puo fare, non c'&egrave; modo a volte di emularle in codice jQuery dato che quest'ultimo si focalizza solamente sul DOM. MooTools ha pi&ugrave; funzionalit&agrave; di jQuery, ma non c'&egrave; niente in jQuery che permetta di emularle. Ad esempio, jQuery non fornisce nessun sistema di ereditariet&egrave;, ma non c'&egrave; problema. Si potrebbe, se si vuole, utilizzare il modulo <em>Class</em> di MooTools in aggiunta a jQuery. C'&egrave; inoltre un <a href="http://code.google.com/p/jquery-inheritance/updates/list">plugin che mette a disposizione l'ereditariet&agrave; in jQuery</a> (non l'ho utilizzato, ma penso offra piu o meno lo stesso tipo di funzionalit&agrave;)
</p>
- <p>If we look at the example from jQuery above:</p>
+ <p>Se vediamo questo pezzo di codice jQuery dall'esempio sopra:</p>
<pre class="js">$(document).ready(function() {
$("a").click(function(event) {
- alert("Thanks for visiting!");
+ alert("Grazie per la visita!");
});
});</pre>
<p>
- and we wanted to translate this to MooTools, we'd have:
+ e volessimo 'tradurlo' in MooTools, avremmo:
</p>
<pre class="js">window.addEvent('domready', function() {
$$('a').addEvent('click', function(event) {
- alert('Thanks for visiting!');
+ alert('Grazie per la visita!');
});
});</pre>
<p>
- These are very similar no?
+ Sono molto simili no?
</p>
<p>
- Here's a more complex example from jQuery:
+ Prendiamo ora un esempio un po' pi&ugrave; complesso in jQuery:
</p>
<pre class="js">$(document).ready(function() {
@@ -424,7 +424,7 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
});</pre>
<p>
- and in MooTools:
+ ed in MooTools diverr&agrave;:
</p>
<pre class="js">window.addEvent('domready',function() {
@@ -439,17 +439,18 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
});</pre>
<p>
- Again, very similar. I'd argue that the MooTools version is more explicit, but also more verbose because of it. It's clear reading the MooTools code that we're adding two events - one for mouse enter and one on mouse leave, while the jQuery version is more concise; its <em><a href="http://docs.jquery.com/Events/hover">hover</a></em> method accepts two methods - the first for mouse enter and the second for mouse leave. I personally like the fact that the MooTools code is more legible but that's a very subjective observation.
+ Ancora, molto simili. Direi che la versione di MooTools e' piu esplicita, ma anche molto verbosa. E' chiaro che leggendo il codice MooTools stiamo aggiungendo due eventi - uno per l'entrata del mouse e l'altro per l'uscita del mouse, mentre la versione jQuery e' piu concisa; il suo metodo <em><a href="http://docs.jquery.com/Events/hover">hover</a></em> accetta due metodi - il primo per l'entrata del cursore del mouse ed il secondo per l'uscita del cursore del mouse. Io personalmente preferisco il fatto che il codice MooTools &egrave; pi&ugrave; leggibile ma e' un'osservazione prettamente personale.
</p>
<p>
- I will say that sometimes jQuery can become too esoteric for my taste. The methods don't always make sense to me just looking at them and I find it hard to parse. This is somewhat unfair though, as I am intimately familiar with MooTools, so reading MooTools is easy for me. But one of the things I appreciate about MooTools is how almost all the method and class names really name the thing. Methods are almost always verbs and leave little doubt as to what they do. Every programming language requires you to go to the docs to look up syntax when you write it - I'm not saying that. I'm just saying that I find the API of MooTools to be more coherent and consistent.
+ Devo dire inoltre che qualche volta jQuery pu&ograve; diventare troppo esoterico per i miei gusti. I metodi non sempre hanno senso per me ed a prima vista li trovo difficili da analizzare. Comunque non sarebbe molto giusto da dire, dato che sono in intimit&agrave; con MooTools, quindi leggere MooTools &egrave; facile per me. Una delle cose che apprezzo di MooTools riguarda il fatto che praticamente tutti i nomi dei metodi e delle classi danno il vero nome alle cose. I metodi sono quasi sempre verbi e lasciano pochi dubbi riguardo quello che fanno. Ogni linguaggio di programmazione richiede una ricerca nella documentazione per la sintassi quando si scrive il codice - Non parlo di questo. Sto dicendo solamente che trovo le API di MooTools piu coerenti e consistenti.
</p>
<a name="yourway"></a>
- <h2>MooTools Lets You Have It Your Way</h2>
+ <h2>MooTools Fa Ci&ograve; Che Vuoi Come Vuoi</h2>
- <p>But what if you like the jQuery syntax? One way to illustrate the power of MooTools is to show you how easy it is to change it to suit your tastes. If we wanted to implement the <em>hover</em> method from jQuery in MooTools, we could easily do so:</p>
+ <p>
+ E se ti piace la sintassi jQuery? Un modo per illustrare il potere di MooTools e' mostrare quanto facile sia cambiare il codice in modo che si addica ai propri gusti. Se avessimo voluto implementare il metodo <em>hover</em> da jQuery a MooTools, avremmo potuto facilmente fare cos&igrave;:</p>
<pre class="js">Element.implement({
hover : function(enter,leave){
@@ -457,7 +458,7 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
}
});
-//and then you could use it exactly like the jQuery version:
+//e quindi lo si potra' usare esattamente come nella versione jQuery:
$$('#orderlist li:last').hover(function(){
this.addClass('green');
},
@@ -466,13 +467,15 @@ <h1 class="span-24 last">jQuery vs MooTools</h1>
});
</pre>
- <p>Indeed, there are MooTools plug-ins that do just that; <a href="http://github.com/cheeaun/mooj/tree/master">give you the jQuery syntax for MooTools</a>. MooTools' focus on extensibility means you can implement anything you like. This is something jQuery can't do. MooTools can mimic jQuery if you want it to, but jQuery can't mimic MooTools. If you want to write classes or extend native prototypes or do some of the other things MooTools can, you'll have to write it yourself.</p>
+ <p>
+ Ci sono addirittura plugins MooTools che fanno questo; <a href="http://github.com/cheeaun/mooj/tree/master">forniscono una sintassi jQuery per MooTools</a>. Il focalizzarsi di MooTools riguardo l'estensibilit&agrave; significa che si pu&ograve; implementare praticamente qualsiasi cosa si voglia. Questo &egrave; qualcosa che jQuery non pu&ograve; fare. MooTools puo' simulare jQuery volendo, ma jQuery non puo' mimare MooTools. Se si vogliono scrivere classi oppure estendere i prototipi nativi o fare qualcosa che MooTools puo' fare, devi scrivertelo da zero.
+ </p>
<a name="chaining"></a>
- <h2>Chaining as a Design Pattern</h2>
+ <h2>La Concatenazione Come Design Pattern</h2>
<p>
- Let's do another of these. Here's some jQuery (from the jQuery tutorial):
+ Facciamo un'altro di questi esperimenti. Qui sotto c'e' del codice jQuery(dal tutorial jQuery):
</p>
<pre class="js">$(document).ready(function() {
Please sign in to comment.
Something went wrong with that request. Please try again.