Use the left/right arrow keys to navigate, 's' to enable/disable scrolling.

Javascript e il Web

Obiettivi della lezione

Conoscere

  • conoscere le funzionalità base del DOM
  • conoscere e comprendere l’importanza ed il funzionamento del Unobtrusive JavaScript
  • conoscere e saper utilizzare jQuery nelle sue funzionalità base

DOM

Document Object Model

DOM è un modello ad oggetti per la rappresentazione di un documento

DOM è un API per accedere e manipolare dinamicamente il contenuto, struttura e stile di un documento HTML/XML/XHTML

DOM (Wikipedia)

Javascript e il DOM

Mentre un numero ristretto di caratteristiche del rendering engine e dell’interprete javascript possono risultare differenti tra un browser e l’altro, la stragrande maggioranza di esse sono state standardizzate (e continuano ad esserlo) dal W3C.

window e document

Tra le variabili disponibili nello spazio globale Javascript in un pagina web ci sono ‘window’, che rappresenta la finestra/tab contenente la pagina, e ‘document’, che rappresenta il documento stesso.

window E’ lo spazio globale:

  • window contiene un riferimento a se stesso
  • window contiene un riferimento a document

window e document

Ora provalo nell'interprete interattivo

DOM Navigation

DOM

DOM Navigation

DOM

DOM Navigation

DOM Navigation

DOM Navigation

nodeType può corrispondere al valore di una delle seguenti costanti:

DOM Navigation

DOM Traversing

Ora provalo nell'interprete interattivo

DOM Traversing

Ora provalo nell'interprete interattivo

DOM Attribute and Style Modify

DOM Element Creation, Inserting and Removing

DOM Element Creation, Inserting and Removing

Ora provalo nell'interprete interattivo

DOM Event Handling

DOM Event Handling

Ora provalo nell'interprete interattivo

DOM Event Handling

Tipi di eventi:

  • MouseEvents (click, mousedown, mouseup, mouseover, mousemove, mouseout)

  • MutationEvents (DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument, DOMAttrModified, DOMCharacterDataModified)

  • HTMLEvents (load, unload, abort, error, reset, select, focus, blur, resize, scroll)

jQuery

jQuery

  • Perchè usare un framework javascript?
  • jQuery: come, quando e perchè?
  • Unobtrusive JavaScript
  • jQuery by Examples

Perchè usare un framework javascript?

  • appianare le differenze/incompatibilità tra le implementazioni di ECMAScript / DOM / CSS tra i vari browser
  • aggiunta di nuovi costrutti al linguaggio, funzioni di utilità
  • semplificazione di procedure macchinose
  • implementazione di design pattern e best pratices

jQuery: come, quando e perchè? (1/3)

jQuery: come, quando e perchè? (2/3)

  • real world usecases:

    • Google, Dell, Digg, Technorati
    • mozilla.org, Drupal, Wordpress
    • BBC, Newsweek

jQuery: come, quando e perchè? (3/3)

jQuery semplifica i patterni più comuni delle applicazioni javascript client-side:

  • selezione degli elementi
  • aggiornamento degli attributi e manipolazione dei CSS
  • creazione e copia degli elementi della pagina
  • visualizzare, nascondere ed animare gli elementi

Il tutto implementato mediante metaprogrammazione Javascript, completamente multibrowser e sotto le sembianze di un maneggevole DSL.

Unobtrusive Javascript

Inizialmente era l’HTML…

semplici pagine di testo statiche, con la possibilità di includere delle immagini e link ipertestuali tra le pagine HTML

nelle pagine HTML venivano a mescolarsi contenuto e stile…

Unobtrusive Javascript

poi arrivarono i CSS allo scopo di separare lo stile (CSS) dal contenuto (HTML) e i tag e gli attributi che applicavano lo stile all’interno dell’HTML entrarono in deprecazione…

Unobtrusive Javascript

Ma con l’ingresso di Javascript l’HTML ne è risultato nuovamente contaminato… questa volta era il comportamento (behaviour) a mescolarsi con il contenuto:

Unobtrusive Javascript

I benefici ottenibili separando il compartamento (behaviour) dal contenuto sono paragonabili se non superiori a quelli ottenuti separandone lo stile con i CSS.

jQuery by Examples

Con una conoscenza delle caratteristiche base di Javascript, delle sue particolarità e delle tecniche comuni, è possibile apprendere e comprendere il funzionamento di jQuery (come di qualunque altro framework javascript) by example

ex0. jquery minimal page

Ogni release di jQuery viene rilasciata in due formati:

La release corrente è la versione 1.4.2

ex0. jquery minimal page

ex1. jquery wrapper

Il centro dell’API di jQuery è il factory pattern costituito dal jQuery wrapper:

jQuery e il suo alias abbreviato $

Ora provalo nell'interprete interattivo

ex2. document ready handler

  • molte delle operazioni che eseguiremo in javascript necessitano che il DOM sia stato completamente caricato
  • window.onload è un handler standard presente a questo scopo, ma attende il caricamento di tutte le risorse (comprese immagini) e gli si può associare una sola callback
  • jQuery().ready al contrario controlla la sola completezza del DOM e può essere usato ripetutamente senza rischi
Ora provalo nell'interprete interattivo

ex3. select elements from page

  • gli elementi posso essere selezionati mediante i comuni CSS selectors (sino a supportare caratteristiche relative a CSS3), espressioni XPATH e altri selector avanzati
  • la selezione avviene mediante il solito jquery wrapper
  • l’oggetto ritornato è un oggetto jquery wrapped contenente una notevole quantità di metodi di utilità oltre che gli oggetti DOM standard
  • i metodi di utilità sono in grado di agire sia su singoli elementi selezionati che su liste di elementi in modo trasparente
  • gli elementi selezionati possono essere ulteriormente filtrati

ex3. select elements from page

ex4. change attributes of selected elements

  • aggiungere/rimuovere una class CSS
  • manipolare lo stile CSS di una selezione
  • cambiare il contenuto html di una selezione

ex5. create/copy new elements in the page

  • creare nuovi elementi
  • clonare elementi selezionati
  • inserire elementi nella pagina
  • eliminare elementi dalla pagina
Ora provalo nell'interprete interattivo

ex6. event handling

Ora provalo nell'interprete interattivo

ex7. animation effects

Ora provalo nell'interprete interattivo

ex8. ajax query

Bibliografia

  • Learning jQuery (Packt)
  • jQuery Reference (Packt)
  • jQuery in Action (Manning)

Copyright (C) 2010 - Alca Società Cooperativa

http://learn.alcacoop.it - learn@alcacoop.it

released under CreativeCommons 2.5 by-nc-sa