30
11
06

jQuery 0: internals

12:28 Technocracy
Questo è il post di introduzione per una serie di articoli riguardanti l'uso della libreria javascript jQuery. Potete trovare tutti gli articoli qui.

Partendo da una sorta di auto-riflessione nata da un post di Napolux mi è venuto in mente che possa essere utile se iniziassi una sorta di rassegna sulla libreria jQuery. Non sapete cos’è? Allora vuol dire che l’idea non era sbagliata. Inizio giusto ora. :)

Storia

Breve excursus storico: più o meno in modo coincidente all’onda Ajax sono nate alcune librerie javascript di automazione per lo sviluppo web. Lo scopo era rendere a tutti la vita più semplice. Nacque così la prima famosa libreria di questo tipo, chiamata Prototype. Questa però non è tutt’oggi molto più che una libreria di funzioni: una serie di strumenti utili per semplificarsi la vita ma non molto oltre questo. La documentazione inoltre è sempre stata piuttosto scarsa.
Qualche tempo dopo ha visto la luce jQuery, che si pone quasi in contrasto con Prototype. Vuole infatti porre non una serie di strumenti ma principalmente un modello uniforme estensibile e su questo costruire. La libreria risulta anche molto leggera.

Ma una cosa che è sempre mancata in Prototype era la documentazione. Pare che jQuery sia meglio, ma vediamo se riesco a fornire anche qualche strumento in italiano per iniziare a sviluppare con questa libreria.

Architettura

Ma cosa è quindi jQuery? jQuery è uno strumento per rendere la manipolazione delle pagine (X)HTML uniforme e immediato, con il minor numero possibile di problemi fra un browser e l’altro.

La libreria jQuery si basa su alcuni punti cardine:

  1. Il risultato di una chiamata jQuery è un altro oggetto jQuery.
  2. Gli oggetti jQuery sono insiemi di elementi.
  3. La chiave di tutto è la funzione $().
  4. Separazione della logica funzionale dalla logica strutturale (interazione vs presentazione).

Esempio

Ma allora, come si usa esattamente? Il suo funzionamento è quasi magico. Partiamo dall’esempio sulla homepage della libreria:

$("p.surprise").addClass("ohmy").show("slow");

E scomponiamolo:

Si vede in modo chiaro come sia contemporaneamente semplice e potente. La combinazione della funziona $() con la possibilità di concatenare operazioni raggiunge una notevole potenza espressiva con pochissimo codice.

Analisi

Vediamo come è fatto internamente. Faccio notare che non riproporrò praticamente mai il codice completo, che è piuttosto complesso, quanto alcuni estratti utili ai fini logici e di comprensione di javascript.

var jQuery = function(a, c) { ... }
var $ = jQuery;

La costruzione è semplice, anche se implica forse alcuni passaggi caratteristici di javascript:

  1. Viene creato un oggetto jQuery (var jQuery) e gli viene assegnato un oggetto funzione (function() {}) tramite una lambda function.
  2. Viene creato un oggetto $ al quale viene assegnato l’oggetto jQuery. jQuery era una funzione, quindi anche $ sarà una funzione.
    Notate come in var $ = jQuery; jQuery sia passato senza le tonde finali delle funzioni. Scrivere “jQuery” significa utilizzare l’oggetto funzione passato per riferimento. Scrivere “jQuery()” significa chiamare la funzione associata all’oggeto jQuery.

Direi che ho messo abbastanza carne al fuoco… non so quando sarà il prossimo approfondimento, ma ci sarà. :) Se avete domande fate pure. :)

7 comments Add yours below

1

Napolux 2006 11 30 at 12:35

Che casino, mamma mia. :D

Continuo ad usare le mie 4 funzioncine in croce.
2

Folletto Malefico 2006 11 30 at 12:50

Il fatto che la spiegazione sia esauriente sembra solo complicare le cose. Potevo anche scegliere un approccio più pragmatico che sarebbe risultato sicuramente più "semplice", ma non avrebbe spiegato niente e quindi lo trovavo un po' povero, in questo caso.
Non è comunque escluso che faccia anche dei post più pragmatici, ma per iniziare è necessario dare tanti spunti e una infarinatura. :)
In realtà l'utilizzo è estremamente semplice, come puoi vedere dall'unica riga di codice che ho scritto che, nella sua semplicità, è in grado di applicare una classe e aprire TUTTI i tag corrispondenti con una sintassi rapidissima. :)
3

Simbul 2006 11 30 at 13:58

Molto interessante... e soprattutto grazie per avermi costretto a cercare di capire come funziona jQuery ;)
4

Glorfind3l 2006 11 30 at 15:16

Bellino!:D
5

Folletto Malefico 2006 11 30 at 20:24

Questa era una intro, un po' overloaded di informazioni effettivamente. Il prossimo vedo di farlo più pragmatico. :)
6

zakwer 2007 06 25 at 12:40

ciao, cercando un buon framework js/ajax con il quale cominciare ad ottimizzare i miei scripts mi sn imbattuto nel tuo sito, peraltro molto interessante. mi chiedevo pero', visto che e' passato quasi un anno da questo post su jQuery, se me lo consigli ancora, oppure se puoi indicarmi qualche altra lib altrettanto leggera e funzionale.

ciao, grazie in anticipo, e complimenti per il tuo lavoro
zak
7

Folletto Malefico 2007 06 25 at 12:45

Si: jQuery è ancora caldamente consigliato e rimane al momento l'unico framework che segue la "javascript way" per lavorare. :)

Peraltro, dovrei scriverci ancora qualcosina... appena ho tempo. :P

Grazie mille :)

Leave your Comment

required

required, hidden, never shared

Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post ~ Subscribe to the comments via RSS Feed