SlideShare a Scribd company logo
1 of 84
Download to read offline
Best practices per lo sviluppo Frontend
                          CRISTIANO RASTELLI
                           WEB & INTERACTION DESIGNER
Alcune cose prima di iniziare
Forse le più importanti...




            g ood
            Best practices
Alcune cose prima di iniziare
Forse le più importanti...




                                    ser- side
                             brow
      sviluppo Frontend
Alcune cose prima di iniziare
Forse le più importanti...


                 Piccole, medie e grandi strategie per
          la presentazione, l'interazione e la manipolazione
                        delle pagine web tramite
             fogli di stile, client-scripting e uso del DOM.




          presentazione visuale tramite CSS
          interazione utente tramite JS
          manipolazione pagina tramite DOM
AGENDA
   Di cosa stiamo parlando?
   Linguaggi
   Demo
       “Presentazione”
       “Interazione”
       “Manipolazione”
   Risorse utili
Di cosa stiamo parlando?
Una domanda...

 Quanto ne sapete di HTML, CSS & Javascript?




       Poco        Abbastanza      Tanto
I nostri confini
Il nostro modello client-server

           SERVER



                                   LAYOUT ENGINE
                     RENDERING MODE           VISUAL FORMATTING MODEL
 http://




                     • standard mode             BOX MODEL
           DOCTYPE   • quirks mode               • standard W3C
             DTD                                 • traditional IE


                                       DOCUMENT OBJECT MODEL



           BROWSER
Visual Formatting Model

 È il modello con il quale viene processato il document-tree
 per il rendering verso media visuali.
 Ogni elemento del document-tree genera o meno un box il
 cui layout grafico è determinato in base a:
   tipo e dimensione del box
   schema posizionale
   relazione con gli altri elementi del document-tree
   condizioni al contorno
Box Model

 È il modello con il quale viene elaborato il layout grafico
 del singolo box all’interno del document-tree.
 Le dimensioni grafiche del box sono determinate in base a:
   dimensione orizzontale/verticale
   dimensione del margine esterno
   dimensione del padding interno
   dimensione del bordo
Box Model
Box Model
Document Object Model (            )

 “A document object model (DOM) is an application
 programming interface (API) for representing a document
 (such as an HTML document) and accessing and
 manipulating the various elements (such as HTML tags and
 strings of text) that make up that document.
 JavaScript-enabled web browsers have always defined a
 document object model.”
 Oggi convenzionalmente ci si riferisce al DOM come
 rappresentazione del documento in memoria nel browser.
 Attenzione: DOM ≠ “Source”
Il documento


  <html>
    <head>
      <title>Helo
world</title>
    </head>
    <body>
      <h1
id=”stw”>Save
the
world</h1>
      <p>Save
the
<i>cheer</i>
leaders.</p>

    </body>
  </html>
Il documento a oggetti

                        DOCUMENT

                            <html>


   <head>                            <body>
                                                        ELEMENT
    <title>      <h1>                           <p>

                Save
the

   Helo
world
                 world
                                     Save
the   <i>       leaders.


                                                cheer
                             id
                                     ATTR               TEXT
Accesso ai nodi
Attraversamento dell’albero


  .parentNode
  .childNodes[x]
  .firstChild
  .lastChild

  document.firstChild.firstChild.lastChild
  document.firstChild.childNodes[0].lastChild
  document.firstChild.childNodes[0].childNodes[2]

  document.firstChild.childNodes
  [0].parentNode.firstChild.childNodes[1]
Accesso ai nodi
Diretto tramite selettore


  .getElementsByTagName('tag')[x]
  .getElementById('xxx');

  document.getElementsByTagName('h1')[0]
  document.getElementsByTagName('p')[3].lastChild

  document.getElementById('stw');
Gestione dei nodi
Creazione/Modifica/Eliminazione


  .createElement('hr')
  .appendChild(x)
  .removeChild(document.childNodes[3].firstChild)
  .createTextNode('lorem
ipsum')




  var
x
=
document.createElement('span');

  var
y
=
document.createTextNode('I
am
a
paragraph');

  x.appendChild(y);
  document.appendChild(x);
Il documento a oggetti

                        DOCUMENT
                                                        span
                            <html>
                                                  I am a paragraph



   <head>                            <body>
                                                         ELEMENT
    <title>      <h1>                           <p>

                Save
the

   Helo
world
                 world
                                     Save
the   <i>         leaders.


                                                cheer
                             id
                                     ATTR                TEXT
Modifica dei nodi
Proprietà degli elementi


  .id
  .className
  .nodeValue
  .innerHTML

  setAttribute(…)
  getAttribute()
  removeAttribute(…)
Manipolazione del DOM

 Abbiamo tramite il DOM il completo accesso agli
 elementi del documento. Questo vuol dire che, nel
 browser, tramite Javascript, possiamo modificare
 programmaticamente qualsiasi parte del documento.


 Ovviamente va come sempre considerato il supporto dei
 browser ai metodi del DOM, che se nel caso del CORE
 sono abbastanza standard, per il resto hanno
 implementazioni che variano da browser a browser.
Un mondo (quasi) perfetto


            l’implementazione in Javascript
              dei metodi di accesso al DOM
               non è standard fra i browser




                        DOM
                     Frameworks
Il nostro client




                   il browser...
                      (si, ma quale??)
Il nostro client




                   (si, ma quale??)
Rendering engines

       Market-share dei principali motori di rendering



                                               20%


                                                                         Trident
                                                                         Gecko
                                                                         WebKit
                                                    10%                  Presto
     70%
                                                 0%




              http://en.wikipedia.org/wiki/Usage_share_of_web_browsers
Javascript engines

       Motori Javascript presenti nei browser più diffusi




          JScript            Nitro               V8



       SpiderMonkey       SquirrelFish         Futhark
Framework & Librerie Javascript

         Alcuni dei framework Javascript più noti
Framework & Librerie CSS

          Alcuni dei framework CSS disponibili
Il nostro server




   <whatever you=”like”/>
      L’importante è che ci permetta di fare quello che ci occorre...
I nostri strumenti di sviluppo

       DEVELOPMENT         TEST & DEBUG
I linguaggi
HTML
Struttura di una pagina HTML

 <!DOCTYPE
HTML
PUBLIC
"‐//W3C//DTD
HTML
4.01

 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <html>
    <head>
    <title>Untitled</title>
    </head>
 <body>
    .................
TAG
SOUP
.............
 </body>
 </html>
Elenco tag HTML

 •
ADDRESS
‐
Address
information   •
DIR
‐
Directory
list
 •
APPLET
‐
Java
applet            •
DIV
‐
Logical
division
 •
AREA
‐
Hotzone
in
imagemap      •
DL
‐
Definition
list
 •
A
‐
Anchor                      •
DT
‐
Definition
term
 •
BASE
‐
Document
location        •
EM
‐
Emphasized
text
 •
BASEFONT
‐
Default
font
size    •
FONT
‐
Font
modification
 •
BIG
‐
Larger
text               •
FORM
‐
Input
form
 •
BLOCKQUOTE
‐
Large
quotation    •
H1
‐
Level
1
header
 •
BODY
‐
Document
body            •
H2
‐
Level
2
header
 •
BR
‐
Line
break                 •
H3
‐
Level
3
header
 •
B
‐
Bold                        •
H4
‐
Level
4
header
 •
CAPTION
‐
Table
caption         •
H5
‐
Level
5
header
 •
CENTER
‐
Centered
division      •
H6
‐
Level
6
header
 •
CITE
‐
Short
citation           •
HEAD
‐
Document
head
 •
CODE
‐
Code
fragment            •
HR
‐
Horizontal
rule
 •
DD
‐
Definition                 •
HTML
‐
HTML
Document
 •
DFN
‐
Definition
of
a
term      •
IMG
‐
Images
Elenco tag HTML

 •
INPUT
‐
Input
field,
button,
etc.   •
SMALL
‐
Smaller
text
 •
ISINDEX
‐
Primitive
search          •
STRIKE
‐
Strikeout
 •
I
‐
Italics                         •
STRONG
‐
Strongly
emphasized
 •
KBD
‐
Keyboard
input                •
STYLE
‐
Style
information
 •
LINK
‐
Site
structure               •
SUB
‐
Subscript
 •
LI
‐
List
item                      •
SUP
‐
Superscript
 •
MAP
‐
Client‐side
imagemap          •
TABLE
‐
Tables
 •
MENU
‐
Menu
item
list               •
TD
‐
Table
cell
 •
META
‐
Meta‐information             •
TEXTAREA
‐
Input
area
 •
OL
‐
Ordered
list                   •
TH
‐
Header
cell
 •
OPTION
‐
Selection
list
option      •
TITLE
‐
Document
title
 •
PARAM
‐
Parameter
for
Java
applet   •
TR
‐
Table
row
 •
PRE
‐
Preformatted
text             •
TT
‐
Teletype
 •
P
‐
Paragraph                       •
UL
‐
Unordered
list
 •
SAMP
‐
Sample
text                  •
U
‐
Underline
 •
SCRIPT
‐
Inline
script              •
VAR
‐
Variable
 •
SELECT
‐
Selection
list
HyperText Markup Language

 Linguaggio di markup, ovvero di descrizione di un
 contenuto, non di programmazione.
 Osservando con attenzione le specifiche W3C
 sull’uso e sul significato dei tag, si capisce che:
   Molta struttura
   Molta semantica
   Poca formattazione
CSS
Un po’ di storia
Utilizzo dei CSS


      PRESENTAZIONE       LAYOUT


        color              position
        font               sizing
        text formatting    margin/padding
        list style/type    display
        border             float/clear
I vantaggi

 Separazione fra “contenuto” e “presentazione”
 Riduzione banda (“traffico”) e latenza nel rendering
 Migliore controllo del codice HTML e del layout
 Maggiore consistenza fra le pagine e fra i browser
Concetti di base

 Cascading (precedenza)
   Author --› User --› User Agent
   Overriding
   Stile dichiarato vs. Stile computato
 Specificità
   Elemento (b, div, span)                 0.0.1
   Classe/Pseudoclasse (.redbox, :hover)   0.1.0
   ID (#mainBox)                           1.0.0
 Ereditarietà
La sintassi



  /*
‐‐‐‐‐‐‐
HEADER
‐‐‐‐‐‐‐
*/           commenti

  div
{
color:
#000000;
}
               selettore
‐›
regole

  p,
li,
span.redbox
{color:#FF0000;}
   selettori
multipli

  h2
{                                   dichiarazione
o

  
    margin:
10px;                     “stanza”
  
    font‐size:
1.5em;
  
    color:
#000000;
  }
I selettori


  h1,
h2,
p
{…}
                 elemento
HTML

  #boxRoot,
h2#title
{…}         id

  .redbox
{…},
span.redbox
{…}   classe

  span.redbox.special
{…}        classi
multiple

  a:hover
{…}                    pseudo‐classi

  div
>
p,
h1
+
h2
{…}           figli/adiacenti

  input[type=button]             attributi

  ***                            e
molti
altri...
Struttura di un file CSS
  body
{…}

  h1
{…}
  h2
{…}
  h3
{…}
  p

{…}
  a,
a:hover,
a:active,
a:visited
{…}

  #boxHead
{…}
  #boxBody
{…}
  #boxFoot
{…}

  body#pageHome
h1,
body#pageHome
h2,
body#pageHome
h3
{…}
  body#pageAbout
#boxMain
table#tblAboutPeople
{…}
  body#pageContacts
#boxMain
#bmContactPlace
p
{…}

  .sIFR‐flash
{…}
  .sIFR‐hasFlash
#boxMain
h1
{…}
Javascript
Quale Javascript?

 Differenti browser implementano diversi engine
 Javascript, con diverse estensioni applicative
 (componenti, utility, metodi, ecc.).
 Ma soprattutto, implementano diversi metodi di
 accesso al DOM.
 Dovremmo riempire ogni singola funzione di “if” e
 di test sul browser utilizzato, con tutto ciò che
 comporta una scelta del genere.
 Conclusione: dobbiamo utilizzare un framework.
Quale Framework?

 Ogni framework avrà la sua sintassi e la propria
 libreria di “effetti speciali”.
 Quello che è comune ai framework in realtà è il
 fatto di disporre di metodi cross-browser di
 accesso e manipolazione del DOM.
 Come sceglierlo? In base al tipo di applicazione e di
 utilizzo che andremo a farne.    s e al lo
                                            go!
                                      ba
                        ...opp ure in
Perché adottare un framework?

 Vi immaginate fare questo per tutte le funzioni?
  window.xpath
=
!!(document.evaluate);
  if
(window.ActiveXObject)
{
  
   window[window.XMLHttpRequest
?
'ie7':'ie6']
=
true;
  
   window.ie
=
true;
  }
else
if
(document.childNodes
&&
!document.all
&&
!
  navigator.taintEnabled)
{
  
   window[window.xpath
?
'webkit420':'webkit419']
=
true;
  
   window.webkit
=
true;
  
   window.khtml
=
true;
  }
else
if
(document.getBoxObjectFor
!=
null)
{
  
   window.gecko
=
true;
  }

 Lasciamo che sia il framework a farlo per noi!
HTML+CSS+JS
Separazione, ora e sempre!

 È fondamentale la separazione fra i diversi ambiti
 o layer “logici” di una pagina web:


                   Comportamento

                    Presentazione

                      Contenuti
Ad ognuno il suo!

 Lasciamo che ogni linguaggio faccia ciò per cui è
 stato pensato e progettato:


     HTML                   semantica

      CSS                   visualizzazione

       JS                   interazione
Browser evoluti

 In cosa consiste l’evoluzione dei browser?
 Nel crescente supporto agli standard del W3C.
 Quali vantaggi per gli sviluppatori?
   Impiego intelligente di CSS + DOM & JS
   Maggiore rigore formale e controllo sul codice
   Maggiore controllo sul rendering
   Maggiore capacità di elaborazione lato client (JS)
   Più attenzione a semantica e accessibilità
L’importanza del “DOM scripting”

 Cosa posso fare in una applicazione web tramite la
 manipolazione del DOM? TUTTO.
 Capite allora l’importanza del DOM ai fini dello
 sviluppo di pagine e soprattutto applicazioni web:
 posso spostare moltissima logica verso il client.



                   DOM
DO’s / DONT’s
table-less layout
(lasciamo le tabelle libere di fare le tabelle)
avoid inline stile
 (spostiamo la presentazione nei CSS)
Avoid inline style

  Evitate per quanto vi è possibile questo:


    <p
align="center"><b><font
size="4">

    <p
style="color:red;">...

    <div
align="right"><p>...</p></div>

    <p>...</p><br/><br/><br/><br/><p>...</p>
avoid inline code
 (teniamo ordinato il nostro codice)
Avoid inline code

  Evitate sempre e comunque questo:


    <a
href="javascript:func()">

    <a
href="#"
onclick="javascript:func();return
false;">

    <select
onchange="javascript:func();">

    <script
type="text/javascript">
    ...
    </script>
    <p>...</p>
don’t browser-detec
(i browser cambiano più spesso di quanto pensiamo)
DEMO

“Presentazione”
    Come utilizzare i CSS
Esempi “presentazione”
DEMO

“Interazione”
 Come essere dinamici
Esempi “interazione”
DEMO

“Manipolazione”
  Come intervenire sul DOM
Esempi “manipolazione”
In conclusione


  SEPARAZIONE LAYER
  STATI LOGICI = STATI VISUALI
  OGGETTI DELLA PAGINA = LEGO
  EVENTI <=> INTERAZIONE
  I CLIENT SONO EVOLUTI
Grazie a tutti!

 CRISTIANO RASTELLI
       www.didoo.net
Risorse utili
Referenze
Piccola biblioteca del web-developer
Bookmarks (HTML/CSS)

 The W3C MarkUp Validation Service
    http://validator.w3.org/

 CSS2 Specification
    http://www.w3.org/TR/REC-CSS2/

 CSS pocket reference
    http://www.culturedcode.com/css/reference.html

 PPK - CSS
    http://www.quirksmode.org/css/contents.html

 CSS browser support
    http://www.westciv.com/style_master/academy/browser_support/

 The W3C CSS Validation Service
    http://jigsaw.w3.org/css-validator/
Bookmarks (JS/Frameworks)

 PPK - JavaScript
    http://www.quirksmode.org/js/

 Core JavaScript 1.5 Guide - MDC
    https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide

 jQuery
    http://jquery.com/

 jQuery UI
    http://jqueryui.com/

 Yahoo! UI Library
    http://developer.yahoo.com/yui/

 Mootools
    http://mootools.net/
Ferri del mestiere
Firebug
http://getfirebug.com
Firebug
http://getfirebug.com
Firebug
http://getfirebug.com
Firebug
http://getfirebug.com
Firebug
http://getfirebug.com
Firebug
http://getfirebug.com
IE Developer Toolbar
http://www.microsoft.com/downloads/
Web Developer Toolbar
http://chrispederick.com/work/web-developer/
Best practices per lo sviluppo Frontend

More Related Content

What's hot

Html 5: una breve guida!
Html 5: una breve guida!Html 5: una breve guida!
Html 5: una breve guida!Enrico Mainero
 
Guida introduttiva al css
Guida introduttiva al cssGuida introduttiva al css
Guida introduttiva al cssEnrico Mainero
 
Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesignerHtml e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesignerMatteo Magni
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTMLRoberto Dadda
 
Html e Css - 4 | WebMaster & WebDesigner
Html e Css - 4 | WebMaster & WebDesignerHtml e Css - 4 | WebMaster & WebDesigner
Html e Css - 4 | WebMaster & WebDesignerMatteo Magni
 
Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesigner Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesigner Matteo Magni
 

What's hot (11)

HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
 
HTML5
HTML5HTML5
HTML5
 
Introduzione ai css
Introduzione ai cssIntroduzione ai css
Introduzione ai css
 
Html 5: una breve guida!
Html 5: una breve guida!Html 5: una breve guida!
Html 5: una breve guida!
 
Guida introduttiva al css
Guida introduttiva al cssGuida introduttiva al css
Guida introduttiva al css
 
Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesignerHtml e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesigner
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
Introduzione al CSS
Introduzione al CSSIntroduzione al CSS
Introduzione al CSS
 
Html e Css - 4 | WebMaster & WebDesigner
Html e Css - 4 | WebMaster & WebDesignerHtml e Css - 4 | WebMaster & WebDesigner
Html e Css - 4 | WebMaster & WebDesigner
 
Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesigner Html e Css - 1 | WebMaster & WebDesigner
Html e Css - 1 | WebMaster & WebDesigner
 
Lezione HTML
Lezione HTMLLezione HTML
Lezione HTML
 

Viewers also liked

Coagulopatias en Obstetricia
Coagulopatias en ObstetriciaCoagulopatias en Obstetricia
Coagulopatias en ObstetriciaFelipe Flores
 
El contacto en la enseñanza
 El contacto en la enseñanza  El contacto en la enseñanza
El contacto en la enseñanza Mora Ivonnee
 
Curso Google Adwords Administração de Links Patrocinados - WBI Brasil
Curso Google Adwords Administração de Links Patrocinados - WBI BrasilCurso Google Adwords Administração de Links Patrocinados - WBI Brasil
Curso Google Adwords Administração de Links Patrocinados - WBI BrasilWBI BRASIL
 
Presentación virtualtekka
Presentación virtualtekkaPresentación virtualtekka
Presentación virtualtekkavilla459
 
Geley, gustave resumo da doutrina espírita
Geley, gustave   resumo da doutrina espíritaGeley, gustave   resumo da doutrina espírita
Geley, gustave resumo da doutrina espíritaLuiz Gonzaga Scalzitti
 
Score.debussy.reflets.nuages
Score.debussy.reflets.nuagesScore.debussy.reflets.nuages
Score.debussy.reflets.nuagesrebakim
 
Informática Educativa
Informática EducativaInformática Educativa
Informática EducativaJulia Saldaña
 
dilatacion anomala del agua...Eduardo
dilatacion anomala del agua...Eduardodilatacion anomala del agua...Eduardo
dilatacion anomala del agua...Eduardoedu_ardo97
 
Digitalizaciones okuri octubre noviembre
Digitalizaciones okuri  octubre noviembreDigitalizaciones okuri  octubre noviembre
Digitalizaciones okuri octubre noviembreLuis Rivera
 
Carro solar (costo)
Carro solar  (costo)Carro solar  (costo)
Carro solar (costo)IETI SD
 
Gg1 120815164713-phpapp02
Gg1 120815164713-phpapp02Gg1 120815164713-phpapp02
Gg1 120815164713-phpapp02IETI SD
 
A cor da pureza
A cor da purezaA cor da pureza
A cor da purezavelhosabio
 
Redes estruturadas
Redes estruturadasRedes estruturadas
Redes estruturadasEcobank
 

Viewers also liked (20)

Coagulopatias en Obstetricia
Coagulopatias en ObstetriciaCoagulopatias en Obstetricia
Coagulopatias en Obstetricia
 
El contacto en la enseñanza
 El contacto en la enseñanza  El contacto en la enseñanza
El contacto en la enseñanza
 
Ciencia
CienciaCiencia
Ciencia
 
practica de las tics
practica de las ticspractica de las tics
practica de las tics
 
Curso Google Adwords Administração de Links Patrocinados - WBI Brasil
Curso Google Adwords Administração de Links Patrocinados - WBI BrasilCurso Google Adwords Administração de Links Patrocinados - WBI Brasil
Curso Google Adwords Administração de Links Patrocinados - WBI Brasil
 
Presentación virtualtekka
Presentación virtualtekkaPresentación virtualtekka
Presentación virtualtekka
 
Geley, gustave resumo da doutrina espírita
Geley, gustave   resumo da doutrina espíritaGeley, gustave   resumo da doutrina espírita
Geley, gustave resumo da doutrina espírita
 
Score.debussy.reflets.nuages
Score.debussy.reflets.nuagesScore.debussy.reflets.nuages
Score.debussy.reflets.nuages
 
Informática Educativa
Informática EducativaInformática Educativa
Informática Educativa
 
Rijsttafel
RijsttafelRijsttafel
Rijsttafel
 
dilatacion anomala del agua...Eduardo
dilatacion anomala del agua...Eduardodilatacion anomala del agua...Eduardo
dilatacion anomala del agua...Eduardo
 
Charli
CharliCharli
Charli
 
Digitalizaciones okuri octubre noviembre
Digitalizaciones okuri  octubre noviembreDigitalizaciones okuri  octubre noviembre
Digitalizaciones okuri octubre noviembre
 
Carro solar (costo)
Carro solar  (costo)Carro solar  (costo)
Carro solar (costo)
 
Gg1 120815164713-phpapp02
Gg1 120815164713-phpapp02Gg1 120815164713-phpapp02
Gg1 120815164713-phpapp02
 
A cor da pureza
A cor da purezaA cor da pureza
A cor da pureza
 
Redes estruturadas
Redes estruturadasRedes estruturadas
Redes estruturadas
 
El color
El colorEl color
El color
 
Funciones
Funciones Funciones
Funciones
 
Internet
InternetInternet
Internet
 

Similar to Best practices per lo sviluppo Frontend

Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Pietro Polsinelli
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANODrupalDay
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerMatteo Magni
 
Corso HTML per l'editoria
Corso HTML per l'editoriaCorso HTML per l'editoria
Corso HTML per l'editoriaDiego La Monica
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Fabio Armani
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Giuseppe Vizzari
 
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010Domenico Monaco
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Andrea Spila
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 

Similar to Best practices per lo sviluppo Frontend (20)

Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5
 
Domino e HTML5, #dd13
Domino e HTML5, #dd13Domino e HTML5, #dd13
Domino e HTML5, #dd13
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANODrupal Day 2012 - DRUPAL 8:  I CAMBIAMENTI CHE CI ASPETTANO
Drupal Day 2012 - DRUPAL 8: I CAMBIAMENTI CHE CI ASPETTANO
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
Corso HTML per l'editoria
Corso HTML per l'editoriaCorso HTML per l'editoria
Corso HTML per l'editoria
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
Dojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web DominoDojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web Domino
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Html5
Html5Html5
Html5
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 
HTML (+ DOM) + CSS
HTML (+ DOM) + CSSHTML (+ DOM) + CSS
HTML (+ DOM) + CSS
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
 
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 

More from Cristiano Rastelli

Style Guides, Pattern Libraries, Design Systems and other amenities.
 Style Guides, Pattern Libraries, Design Systems and other amenities. Style Guides, Pattern Libraries, Design Systems and other amenities.
Style Guides, Pattern Libraries, Design Systems and other amenities.Cristiano Rastelli
 
Interaction Design Above the Level of a Single Man
Interaction Design Above the Level of a Single ManInteraction Design Above the Level of a Single Man
Interaction Design Above the Level of a Single ManCristiano Rastelli
 
Adaptive, Responsive, Mobile. A liquid web.
Adaptive, Responsive, Mobile. A liquid web.Adaptive, Responsive, Mobile. A liquid web.
Adaptive, Responsive, Mobile. A liquid web.Cristiano Rastelli
 
What future we want for our Software Industry?
What future we want for our Software Industry?What future we want for our Software Industry?
What future we want for our Software Industry?Cristiano Rastelli
 
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102 Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102 Cristiano Rastelli
 
Perché a fare i preventivi facciamo così schifo?
Perché a fare i preventivi facciamo così schifo?Perché a fare i preventivi facciamo così schifo?
Perché a fare i preventivi facciamo così schifo?Cristiano Rastelli
 
Paper - "Esperienza utente e fruizione dei contenuti nei quotidiani online i...
Paper - "Esperienza utente e fruizione dei contenuti nei  quotidiani online i...Paper - "Esperienza utente e fruizione dei contenuti nei  quotidiani online i...
Paper - "Esperienza utente e fruizione dei contenuti nei quotidiani online i...Cristiano Rastelli
 
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.Cristiano Rastelli
 

More from Cristiano Rastelli (20)

Let There Be Peace On CSS
Let There Be Peace On CSSLet There Be Peace On CSS
Let There Be Peace On CSS
 
Style Guides, Pattern Libraries, Design Systems and other amenities.
 Style Guides, Pattern Libraries, Design Systems and other amenities. Style Guides, Pattern Libraries, Design Systems and other amenities.
Style Guides, Pattern Libraries, Design Systems and other amenities.
 
Interaction Design Above the Level of a Single Man
Interaction Design Above the Level of a Single ManInteraction Design Above the Level of a Single Man
Interaction Design Above the Level of a Single Man
 
The data we should not miss
 The data we should not miss The data we should not miss
The data we should not miss
 
Adaptive, Responsive, Mobile. A liquid web.
Adaptive, Responsive, Mobile. A liquid web.Adaptive, Responsive, Mobile. A liquid web.
Adaptive, Responsive, Mobile. A liquid web.
 
What future we want for our Software Industry?
What future we want for our Software Industry?What future we want for our Software Industry?
What future we want for our Software Industry?
 
Slides are easy
Slides are easySlides are easy
Slides are easy
 
Mobile last
Mobile lastMobile last
Mobile last
 
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102 Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102
Perché a fare i preventivi facciamo così schifo? @BetterSoftware 2102
 
Exploring ideas
Exploring ideasExploring ideas
Exploring ideas
 
Perché a fare i preventivi facciamo così schifo?
Perché a fare i preventivi facciamo così schifo?Perché a fare i preventivi facciamo così schifo?
Perché a fare i preventivi facciamo così schifo?
 
HCI to UX to HCI - Parte B
HCI to UX to HCI - Parte BHCI to UX to HCI - Parte B
HCI to UX to HCI - Parte B
 
HCI to UX to HCI - Parte A
HCI to UX to HCI - Parte AHCI to UX to HCI - Parte A
HCI to UX to HCI - Parte A
 
HTML5 for Mobile
HTML5 for MobileHTML5 for Mobile
HTML5 for Mobile
 
The big bang theory
The big bang theoryThe big bang theory
The big bang theory
 
Senior 2.0 (reprise)
Senior 2.0 (reprise)Senior 2.0 (reprise)
Senior 2.0 (reprise)
 
La qualità non paga
La qualità non pagaLa qualità non paga
La qualità non paga
 
Il valore percepito
Il valore percepitoIl valore percepito
Il valore percepito
 
Paper - "Esperienza utente e fruizione dei contenuti nei quotidiani online i...
Paper - "Esperienza utente e fruizione dei contenuti nei  quotidiani online i...Paper - "Esperienza utente e fruizione dei contenuti nei  quotidiani online i...
Paper - "Esperienza utente e fruizione dei contenuti nei quotidiani online i...
 
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.
Esperienza utente e fruizione dei contenuti nei quotidiani online in Italia.
 

Best practices per lo sviluppo Frontend

  • 1. Best practices per lo sviluppo Frontend CRISTIANO RASTELLI WEB & INTERACTION DESIGNER
  • 2. Alcune cose prima di iniziare Forse le più importanti... g ood Best practices
  • 3. Alcune cose prima di iniziare Forse le più importanti... ser- side brow sviluppo Frontend
  • 4. Alcune cose prima di iniziare Forse le più importanti... Piccole, medie e grandi strategie per la presentazione, l'interazione e la manipolazione delle pagine web tramite fogli di stile, client-scripting e uso del DOM. presentazione visuale tramite CSS interazione utente tramite JS manipolazione pagina tramite DOM
  • 5. AGENDA  Di cosa stiamo parlando?  Linguaggi  Demo  “Presentazione”  “Interazione”  “Manipolazione”  Risorse utili
  • 6. Di cosa stiamo parlando?
  • 7. Una domanda... Quanto ne sapete di HTML, CSS & Javascript? Poco Abbastanza Tanto
  • 9. Il nostro modello client-server SERVER LAYOUT ENGINE RENDERING MODE VISUAL FORMATTING MODEL http:// • standard mode BOX MODEL DOCTYPE • quirks mode • standard W3C DTD • traditional IE DOCUMENT OBJECT MODEL BROWSER
  • 10. Visual Formatting Model È il modello con il quale viene processato il document-tree per il rendering verso media visuali. Ogni elemento del document-tree genera o meno un box il cui layout grafico è determinato in base a: tipo e dimensione del box schema posizionale relazione con gli altri elementi del document-tree condizioni al contorno
  • 11. Box Model È il modello con il quale viene elaborato il layout grafico del singolo box all’interno del document-tree. Le dimensioni grafiche del box sono determinate in base a: dimensione orizzontale/verticale dimensione del margine esterno dimensione del padding interno dimensione del bordo
  • 14. Document Object Model ( ) “A document object model (DOM) is an application programming interface (API) for representing a document (such as an HTML document) and accessing and manipulating the various elements (such as HTML tags and strings of text) that make up that document. JavaScript-enabled web browsers have always defined a document object model.” Oggi convenzionalmente ci si riferisce al DOM come rappresentazione del documento in memoria nel browser. Attenzione: DOM ≠ “Source”
  • 15. Il documento <html> <head> <title>Helo
world</title> </head> <body> <h1
id=”stw”>Save
the
world</h1> <p>Save
the
<i>cheer</i>
leaders.</p>
 </body> </html>
  • 16. Il documento a oggetti DOCUMENT <html> <head> <body> ELEMENT <title> <h1> <p> Save
the
 Helo
world world Save
the <i> leaders. cheer id ATTR TEXT
  • 17. Accesso ai nodi Attraversamento dell’albero .parentNode .childNodes[x] .firstChild .lastChild document.firstChild.firstChild.lastChild document.firstChild.childNodes[0].lastChild document.firstChild.childNodes[0].childNodes[2] document.firstChild.childNodes [0].parentNode.firstChild.childNodes[1]
  • 18. Accesso ai nodi Diretto tramite selettore .getElementsByTagName('tag')[x] .getElementById('xxx'); document.getElementsByTagName('h1')[0] document.getElementsByTagName('p')[3].lastChild document.getElementById('stw');
  • 19. Gestione dei nodi Creazione/Modifica/Eliminazione .createElement('hr') .appendChild(x) .removeChild(document.childNodes[3].firstChild) .createTextNode('lorem
ipsum') var
x
=
document.createElement('span');
 var
y
=
document.createTextNode('I
am
a
paragraph');
 x.appendChild(y); document.appendChild(x);
  • 20. Il documento a oggetti DOCUMENT span <html> I am a paragraph <head> <body> ELEMENT <title> <h1> <p> Save
the
 Helo
world world Save
the <i> leaders. cheer id ATTR TEXT
  • 21. Modifica dei nodi Proprietà degli elementi .id .className .nodeValue .innerHTML setAttribute(…) getAttribute() removeAttribute(…)
  • 22. Manipolazione del DOM Abbiamo tramite il DOM il completo accesso agli elementi del documento. Questo vuol dire che, nel browser, tramite Javascript, possiamo modificare programmaticamente qualsiasi parte del documento. Ovviamente va come sempre considerato il supporto dei browser ai metodi del DOM, che se nel caso del CORE sono abbastanza standard, per il resto hanno implementazioni che variano da browser a browser.
  • 23. Un mondo (quasi) perfetto l’implementazione in Javascript dei metodi di accesso al DOM non è standard fra i browser DOM Frameworks
  • 24. Il nostro client il browser... (si, ma quale??)
  • 25. Il nostro client (si, ma quale??)
  • 26. Rendering engines Market-share dei principali motori di rendering 20% Trident Gecko WebKit 10% Presto 70% 0% http://en.wikipedia.org/wiki/Usage_share_of_web_browsers
  • 27. Javascript engines Motori Javascript presenti nei browser più diffusi JScript Nitro V8 SpiderMonkey SquirrelFish Futhark
  • 28. Framework & Librerie Javascript Alcuni dei framework Javascript più noti
  • 29. Framework & Librerie CSS Alcuni dei framework CSS disponibili
  • 30. Il nostro server <whatever you=”like”/> L’importante è che ci permetta di fare quello che ci occorre...
  • 31. I nostri strumenti di sviluppo DEVELOPMENT TEST & DEBUG
  • 33. HTML
  • 34. Struttura di una pagina HTML <!DOCTYPE
HTML
PUBLIC
"‐//W3C//DTD
HTML
4.01
 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Untitled</title> </head> <body> .................
TAG
SOUP
............. </body> </html>
  • 35. Elenco tag HTML •
ADDRESS
‐
Address
information •
DIR
‐
Directory
list •
APPLET
‐
Java
applet •
DIV
‐
Logical
division •
AREA
‐
Hotzone
in
imagemap •
DL
‐
Definition
list •
A
‐
Anchor •
DT
‐
Definition
term •
BASE
‐
Document
location •
EM
‐
Emphasized
text •
BASEFONT
‐
Default
font
size •
FONT
‐
Font
modification •
BIG
‐
Larger
text •
FORM
‐
Input
form •
BLOCKQUOTE
‐
Large
quotation •
H1
‐
Level
1
header •
BODY
‐
Document
body •
H2
‐
Level
2
header •
BR
‐
Line
break •
H3
‐
Level
3
header •
B
‐
Bold •
H4
‐
Level
4
header •
CAPTION
‐
Table
caption •
H5
‐
Level
5
header •
CENTER
‐
Centered
division •
H6
‐
Level
6
header •
CITE
‐
Short
citation •
HEAD
‐
Document
head •
CODE
‐
Code
fragment •
HR
‐
Horizontal
rule •
DD
‐
Definition •
HTML
‐
HTML
Document •
DFN
‐
Definition
of
a
term •
IMG
‐
Images
  • 36. Elenco tag HTML •
INPUT
‐
Input
field,
button,
etc. •
SMALL
‐
Smaller
text •
ISINDEX
‐
Primitive
search •
STRIKE
‐
Strikeout •
I
‐
Italics •
STRONG
‐
Strongly
emphasized •
KBD
‐
Keyboard
input •
STYLE
‐
Style
information •
LINK
‐
Site
structure •
SUB
‐
Subscript •
LI
‐
List
item •
SUP
‐
Superscript •
MAP
‐
Client‐side
imagemap •
TABLE
‐
Tables •
MENU
‐
Menu
item
list •
TD
‐
Table
cell •
META
‐
Meta‐information •
TEXTAREA
‐
Input
area •
OL
‐
Ordered
list •
TH
‐
Header
cell •
OPTION
‐
Selection
list
option •
TITLE
‐
Document
title •
PARAM
‐
Parameter
for
Java
applet •
TR
‐
Table
row •
PRE
‐
Preformatted
text •
TT
‐
Teletype •
P
‐
Paragraph •
UL
‐
Unordered
list •
SAMP
‐
Sample
text •
U
‐
Underline •
SCRIPT
‐
Inline
script •
VAR
‐
Variable •
SELECT
‐
Selection
list
  • 37. HyperText Markup Language Linguaggio di markup, ovvero di descrizione di un contenuto, non di programmazione. Osservando con attenzione le specifiche W3C sull’uso e sul significato dei tag, si capisce che: Molta struttura Molta semantica Poca formattazione
  • 38. CSS
  • 39. Un po’ di storia
  • 40. Utilizzo dei CSS PRESENTAZIONE LAYOUT color position font sizing text formatting margin/padding list style/type display border float/clear
  • 41. I vantaggi Separazione fra “contenuto” e “presentazione” Riduzione banda (“traffico”) e latenza nel rendering Migliore controllo del codice HTML e del layout Maggiore consistenza fra le pagine e fra i browser
  • 42. Concetti di base Cascading (precedenza) Author --› User --› User Agent Overriding Stile dichiarato vs. Stile computato Specificità Elemento (b, div, span) 0.0.1 Classe/Pseudoclasse (.redbox, :hover) 0.1.0 ID (#mainBox) 1.0.0 Ereditarietà
  • 43. La sintassi /*
‐‐‐‐‐‐‐
HEADER
‐‐‐‐‐‐‐
*/ commenti div
{
color:
#000000;
}
 selettore
‐›
regole p,
li,
span.redbox
{color:#FF0000;}
 selettori
multipli h2
{ dichiarazione
o
 
 margin:
10px; “stanza” 
 font‐size:
1.5em; 
 color:
#000000; }
  • 44. I selettori h1,
h2,
p
{…}
 elemento
HTML #boxRoot,
h2#title
{…} id .redbox
{…},
span.redbox
{…} classe span.redbox.special
{…} classi
multiple a:hover
{…} pseudo‐classi div
>
p,
h1
+
h2
{…} figli/adiacenti input[type=button] attributi *** e
molti
altri...
  • 45. Struttura di un file CSS body
{…} h1
{…} h2
{…} h3
{…} p

{…} a,
a:hover,
a:active,
a:visited
{…} #boxHead
{…} #boxBody
{…} #boxFoot
{…} body#pageHome
h1,
body#pageHome
h2,
body#pageHome
h3
{…} body#pageAbout
#boxMain
table#tblAboutPeople
{…} body#pageContacts
#boxMain
#bmContactPlace
p
{…} .sIFR‐flash
{…} .sIFR‐hasFlash
#boxMain
h1
{…}
  • 47. Quale Javascript? Differenti browser implementano diversi engine Javascript, con diverse estensioni applicative (componenti, utility, metodi, ecc.). Ma soprattutto, implementano diversi metodi di accesso al DOM. Dovremmo riempire ogni singola funzione di “if” e di test sul browser utilizzato, con tutto ciò che comporta una scelta del genere. Conclusione: dobbiamo utilizzare un framework.
  • 48. Quale Framework? Ogni framework avrà la sua sintassi e la propria libreria di “effetti speciali”. Quello che è comune ai framework in realtà è il fatto di disporre di metodi cross-browser di accesso e manipolazione del DOM. Come sceglierlo? In base al tipo di applicazione e di utilizzo che andremo a farne. s e al lo go! ba ...opp ure in
  • 49. Perché adottare un framework? Vi immaginate fare questo per tutte le funzioni? window.xpath
=
!!(document.evaluate); if
(window.ActiveXObject)
{ 
 window[window.XMLHttpRequest
?
'ie7':'ie6']
=
true; 
 window.ie
=
true; }
else
if
(document.childNodes
&&
!document.all
&&
! navigator.taintEnabled)
{ 
 window[window.xpath
?
'webkit420':'webkit419']
=
true; 
 window.webkit
=
true; 
 window.khtml
=
true; }
else
if
(document.getBoxObjectFor
!=
null)
{ 
 window.gecko
=
true; } Lasciamo che sia il framework a farlo per noi!
  • 51. Separazione, ora e sempre! È fondamentale la separazione fra i diversi ambiti o layer “logici” di una pagina web: Comportamento Presentazione Contenuti
  • 52. Ad ognuno il suo! Lasciamo che ogni linguaggio faccia ciò per cui è stato pensato e progettato: HTML semantica CSS visualizzazione JS interazione
  • 53. Browser evoluti In cosa consiste l’evoluzione dei browser? Nel crescente supporto agli standard del W3C. Quali vantaggi per gli sviluppatori? Impiego intelligente di CSS + DOM & JS Maggiore rigore formale e controllo sul codice Maggiore controllo sul rendering Maggiore capacità di elaborazione lato client (JS) Più attenzione a semantica e accessibilità
  • 54. L’importanza del “DOM scripting” Cosa posso fare in una applicazione web tramite la manipolazione del DOM? TUTTO. Capite allora l’importanza del DOM ai fini dello sviluppo di pagine e soprattutto applicazioni web: posso spostare moltissima logica verso il client. DOM
  • 56. table-less layout (lasciamo le tabelle libere di fare le tabelle)
  • 57. avoid inline stile (spostiamo la presentazione nei CSS)
  • 58. Avoid inline style Evitate per quanto vi è possibile questo: <p
align="center"><b><font
size="4"> <p
style="color:red;">... <div
align="right"><p>...</p></div> <p>...</p><br/><br/><br/><br/><p>...</p>
  • 59. avoid inline code (teniamo ordinato il nostro codice)
  • 60. Avoid inline code Evitate sempre e comunque questo: <a
href="javascript:func()"> <a
href="#"
onclick="javascript:func();return
false;"> <select
onchange="javascript:func();"> <script
type="text/javascript"> ... </script> <p>...</p>
  • 61. don’t browser-detec (i browser cambiano più spesso di quanto pensiamo)
  • 62. DEMO “Presentazione” Come utilizzare i CSS
  • 66. DEMO “Manipolazione” Come intervenire sul DOM
  • 68. In conclusione SEPARAZIONE LAYER STATI LOGICI = STATI VISUALI OGGETTI DELLA PAGINA = LEGO EVENTI <=> INTERAZIONE I CLIENT SONO EVOLUTI
  • 69. Grazie a tutti! CRISTIANO RASTELLI www.didoo.net
  • 72. Piccola biblioteca del web-developer
  • 73. Bookmarks (HTML/CSS) The W3C MarkUp Validation Service http://validator.w3.org/ CSS2 Specification http://www.w3.org/TR/REC-CSS2/ CSS pocket reference http://www.culturedcode.com/css/reference.html PPK - CSS http://www.quirksmode.org/css/contents.html CSS browser support http://www.westciv.com/style_master/academy/browser_support/ The W3C CSS Validation Service http://jigsaw.w3.org/css-validator/
  • 74. Bookmarks (JS/Frameworks) PPK - JavaScript http://www.quirksmode.org/js/ Core JavaScript 1.5 Guide - MDC https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide jQuery http://jquery.com/ jQuery UI http://jqueryui.com/ Yahoo! UI Library http://developer.yahoo.com/yui/ Mootools http://mootools.net/