di: Christian Heilmann 27 Dicembre 2007
Questa è la traduzione dell'articolo The seven rules of Unobtrusive JavaScript di Christian Heilmann. Come l'originale, è pubblicato e distribuito su HTML.it con una Licenza Creative Commons.
Negli ultimi anni, sviluppando, insegnando e implementando un linguaggio come Javascript, ho elaborato le regole che seguono a proposito del Javascript non intrusivo. Nello specifico, quella che segue è la traccia di un intervento che ho tenuto nel corso di un workshop per la conferenza Paris Web 2007 tenutasi a Parigi.
Spero che possano aiutarvi a comprendere perché è una buona idea pianificare e implementare Javascript in maniera non intrusiva. Questo modo di procedere mi ha aiutato a rilasciare i miei lavori più velocemente, con una qualità più elevata e con una maggiore facilità nella manutenzione del codice.
Probabilmente la più importante caratteristica del Javascript non intrusivo è che ti fa smettere di fare supposizioni:
La prima cosa da considerare prima di iniziare a progettare uno script è studiare bene la parte HTML che si intende attivare e verificare cosa si può usare per raggiungere l'obiettivo che ci siamo prefissi.
Prima di lavorare su uno script bisogna guardare alla base da cui si parte. Se l'HTML non è ben strutturato non c'è un modo facile per creare una buona soluzione di scripting. Molto probabilmente, o si creerà troppo markup con Javascript, o l'applicazione dipenderà troppo da Javascript.
Ci sono diverse cose da considerare nel markup HTML. Le prime due sono agganci e relazioni.
Gli agganci nel contesto del codice HTML sono innanzitutto gli ID degli elementi. Ad essi si può accedere tramite il più veloce dei metodi DOM, getElementById. Gli ID sono un eccellente e sicuro punto d'appoggio fin quando sono definiti in maniera univoca all'interno di un documento HTML valido (IE ha un bug relativo agli attributi name e id, ma le migliori librerie Javascript riescono a superarlo). Inoltre, gli ID sono facili da testare.
Altri agganci sono gli elementi HTML che possono essere intercettati tramite il metodo getElementsByTagName e le classi CSS. Queste ultime non possono essere intercettate con un metodo DOM nativo in tutti i browser, ma ci sono molti metodi alternativi per che consentono di sfruttare getElementsByClassName.
L'altra cosa interessante rispetto all'HTML è la presenza di relazioni nel contesto del markup. Ci si potrebbe porre queste domande:
Attraversare il DOM ha dei costi e può essere un'operazione lenta. Ecco perché è una buona idea lasciarlo ad una tecnologia che è già in uso sul browser.
È una cosa piuttosto interessante che lo scripting del DOM e l'attraversamento dello stesso DOM con i suoi metodi e proprietà (getElementsByTagName, nextSibling, previousSibling, parentNode, etc) sembri essere motivo di confusione per diverse persone. È interessante dal momento che in fondo facciamo la stessa cosa con un'altra tecnologia: i CSS.
I CSS sono una tecnologia che prende un selettore CSS e attraversa il DOM per accedere ad uno specifico elemento e cambiarne le sue caratteristiche visuali. Una porzione di Javascript piuttosto complessa può essere facilmente essere sostituita con un solo selettore CSS.
var n = document.getElementById('nav');
if(n){
var as = n.getElementsByTagName('a');
if(as.length > 0){
for(var i=0;as[i];i++){
as[i].style.color = '#369';
as[i].style.textDecoration = 'none';
}
}
}
è la stessa cosa di
#nav a{
color:#369;
text-decoration:none;
}
|
Ottimizzare le Performance di jQuery: cache e concatenazione |
Canvas, guida praticaCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Google AdWords Base27 Febbraio 2012 a Milano |
|
|
Corso Webmaster base12 Marzo 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster19 Marzo 2012 a Milano |
|
|
Corso Webmaster base20 Febbraio 2012 a Roma |
|
|
Corso Google AdWords Base28 Marzo 2012 a Roma |