SlideShare uma empresa Scribd logo
1 de 155
Client Side Development
Introductory Workshop




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Introduction
Hi, Iʼm Wilfred




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Introduction
I do HTML, CSS and some Javascript




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://www.slideshare.net/wnas




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Application
html, css and javascript.




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
itʼs easy.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
NOT
if you do it right.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Structure


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
not presentation


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Doctypes


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Strict//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtdquot;>




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
quirksmode


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
boxmodel


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
itʼs more than tables.
   much more




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables are evil?


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
nope




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tables are beautiful


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Caption


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Thead


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tfoot


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tbody


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
tr


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
td


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
th


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
colspan


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
colgroup


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
rowspan


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
rowgroup


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
Itʼs more than divʼs and spanʼs




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
div


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
span


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
p


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
h1 > h6


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
em


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
strong


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
abbr


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Block & inline


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Generally, block-level elements begin
on new lines, inline elements do not




 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
id


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
class


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
validator.w3.org


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HTML
             Itʼs about structure, NOT presentation.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<div class=quot;spacer-wquot;><!-- this empty spacer
  is used to make a space between vertical
           holding blocks --></div>




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Do more with less
focus on the information, not the presentation.
that is what css is for.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://microformats.org/




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
In conclusion...


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Use a proper doctype


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS at the top


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Javascript at the bottom


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Use elements as they
  should be used.

Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Do more with less.


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Structure information,
     NOT design.

Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise
Write some markup.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
break


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
If you thought html was bad, I give you...




 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
selector {

 property : value;
}


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
div#id.foo p .bar { ... }


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 2.1


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://www.456bereastreet.com/archive/200509/
               css_21_selectors_part_1/




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Positioning


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
position : static;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
position : relative;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
float: left;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
float : left;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
IE doubles the padding and margin




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
display: inline;


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Explorer 6 Duplicate Characters Bug




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The IE5/6 Doubled Float-Margin Bug




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://positioniseverything.net/
                explorer.html




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Cascading
http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Shorthand


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
padding: 2px;
padding: 2px 2px 2px 2px;




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 3


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://www.456bereastreet.com/archive/200601/
               css_3_selectors_explained/




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
power


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Unlimited power




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
e[att^=”val”]


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
E:empty


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
E~F


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS 3 ?


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
dojo


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
jQuery


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Tools


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Firebug
   https://addons.mozilla.org/en-US/firefox/addon/1843




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Yslow
               http://developer.yahoo.com/yslow/




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Web developer 1.1.6
     https://addons.mozilla.org/en-US/firefox/addon/60




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
In conclusion


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Start big
set font stuff on the body (and the td for ie)




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
End small
formulate exceptions on id’s, classes or on specific dom
elements.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Write as little as possible
It’s easy to get confused.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Know of the cascade
And embrace it.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Inline styles are evil
don’t use them.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise



 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Style this.




 Exercise

      Wilfred Nas - Client Side Development
      wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://wnas.nl/fronteers/


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
break


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
                                               part 1




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript === evil
                            Do not rely on it.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Donʼt rely on it
HTML is a rely accessible platform. Use JavaScript to
enhance it.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Global variables === evil


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
x = global;




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
function isitglobal() {
  x = global;
}



  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
var is your friend


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
function isitglobal() {
  var x = notglobal;
}



  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Progressive Enhancement
                                     !==

        Graceful degradation.


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
HIJAX vs AJAX
Plan ajax from the beginning and build it in the end.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
ns.nl
with javascript




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
ns.nl
without javascript.

aka not so graceful
degradation...



         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript !== java
                                Really not.




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
Is not a toy language.




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The old way


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<a
  href=”#”
  onclick=”javascript:function(){
     window.open(‘http://wnas.nl’,’wnas’,’width=300,height=400’);
  }”>
     go there!
</a>




     Wilfred Nas - Client Side Development
     wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Bad.


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<a
  href=”#”
  onclick=”javascript:function(){
     window.open(‘http://wnas.nl’,’wnas’,’width=300,height=400’);
  }”>
     go there!
</a>




     Wilfred Nas - Client Side Development
     wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>
<a   href=”#”   onclick=”javascript:function(){//     do   stuff   );}”>go   there!</a>




       Wilfred Nas - Client Side Development
       wnas.nl | twitter.com/wnas | wilfred@wnas.nl
<a
  href=”http://wnas.nl”
  class=”popup”>
     go there!
</a>




     Wilfred Nas - Client Side Development
     wnas.nl | twitter.com/wnas | wilfred@wnas.nl
$(‘.popup’).click( function () {
  window.open( this.href,’wnas’,’width=300,height=400’);
});




     Wilfred Nas - Client Side Development
     wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The World's Most Misunderstood
      Programming Language
‘Douglas Crockford’




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Closures
one of javascript most devious concepts




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
where a function
remembers what
happens around it
‘Stuart Langridge’




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
http://tinyurl.com/jsclosures




   Wilfred Nas - Client Side Development
   wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Patterns
Smatterns




Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
If all you have is a
everything looks like a nail




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Read a lot
this day is too short for patterns...
http://delicious.com/wnas




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
namespace
var ing = function () {
     // do stuff
}();




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Revealing module pattern
var ing = function () {
     var foo = function () {
         // do stuff
     }
     return {
         foo : foo
     }
}();




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
private variables
var ing = function () {
     var config = { // object literal
         name : ‘value’
     };
     var foo = function () {
         alert ( config.name );
     };
     return {
         foo : foo
     };
}();

ing.foo();




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Group your stuff
namespacing keeps it safe and structurally sound.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
XML vs JSON
Use the best possible solution




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Not the available one
JSON vs XML




  Wilfred Nas - Client Side Development
  wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Memory
And the garbage collector




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
So what changed ?
Ajax and Rich Internet Applications.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Ajax
Asynchronous
Javascript
and
XML



       Wilfred Nas - Client Side Development
       wnas.nl | twitter.com/wnas | wilfred@wnas.nl
The solution
think of history




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Ajax
origins




          Wilfred Nas - Client Side Development
          wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Clean up
That is what Ajax stood for anyway...




         Wilfred Nas - Client Side Development
         wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Pick up after yourself
Leave a clean dom after you... ( use dojo for that )




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
In conclusion


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Totaal voetbal
Let the individual elements of your
program work for you.




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Java
To handle the logic.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JSP / XHTML
To display the structure of your programs.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
CSS
To present it in a proper manner.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
To enhance the user experience.




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Exercise
enhance the page you made...




    Wilfred Nas - Client Side Development
    wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Extra time


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Event delegation


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Just in time initialization


 Wilfred Nas - Client Side Development
 wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Lazy loading


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Code as prose.


Wilfred Nas - Client Side Development
wnas.nl | twitter.com/wnas | wilfred@wnas.nl
Douglas
The good parts




       Wilfred Nas - Client Side Development
       wnas.nl | twitter.com/wnas | wilfred@wnas.nl
JavaScript
The Definitive Guide (5th)




        Wilfred Nas - Client Side Development
        wnas.nl | twitter.com/wnas | wilfred@wnas.nl

Mais conteúdo relacionado

Destaque

What has responsive web design done for us, so far.
What has responsive web design done for us, so far.What has responsive web design done for us, so far.
What has responsive web design done for us, so far.Wilfred Nas
 
Javascript is evil - fronteers 2013 jam sessions
Javascript is evil - fronteers 2013 jam sessionsJavascript is evil - fronteers 2013 jam sessions
Javascript is evil - fronteers 2013 jam sessionsWilfred Nas
 
Bestpractices nl
Bestpractices nlBestpractices nl
Bestpractices nlWilfred Nas
 
Fronteers iprofs
Fronteers iprofsFronteers iprofs
Fronteers iprofsWilfred Nas
 
CSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipeCSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipeWilfred Nas
 

Destaque (7)

What has responsive web design done for us, so far.
What has responsive web design done for us, so far.What has responsive web design done for us, so far.
What has responsive web design done for us, so far.
 
Html5 nl
Html5 nlHtml5 nl
Html5 nl
 
Javascript is evil - fronteers 2013 jam sessions
Javascript is evil - fronteers 2013 jam sessionsJavascript is evil - fronteers 2013 jam sessions
Javascript is evil - fronteers 2013 jam sessions
 
Bestpractices nl
Bestpractices nlBestpractices nl
Bestpractices nl
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
Fronteers iprofs
Fronteers iprofsFronteers iprofs
Fronteers iprofs
 
CSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipeCSS naming | ceci n'est pas un pipe
CSS naming | ceci n'est pas un pipe
 

Último

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Último (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

front end workshop v3

  • 1. Client Side Development Introductory Workshop Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 2. Introduction Hi, Iʼm Wilfred Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 3. Introduction I do HTML, CSS and some Javascript Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 4. http://www.slideshare.net/wnas Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 5. Application html, css and javascript. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 6. HTML itʼs easy. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 7. NOT if you do it right. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 8. Structure Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 9. not presentation Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 10. Doctypes Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 11. <!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Strict//ENquot; quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtdquot;> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 12. quirksmode Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 13. boxmodel Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 14. HTML itʼs more than tables. much more Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 15. Tables Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 16. Tables are evil? Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 17. nope Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 18. Tables are beautiful Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 19. Caption Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 20. Thead Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 21. tfoot Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 22. tbody Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 23. tr Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 24. td Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 25. th Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 26. colspan Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 27. colgroup Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 28. rowspan Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 29. rowgroup Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 30. HTML Itʼs more than divʼs and spanʼs Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 31. div Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 32. span Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 33. p Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 34. h1 > h6 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 35. em Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 36. strong Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 37. abbr Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 38. Block & inline Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 39. Generally, block-level elements begin on new lines, inline elements do not Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 40. id Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 41. class Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 42. validator.w3.org Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 43. HTML Itʼs about structure, NOT presentation. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 44. <div class=quot;spacer-wquot;><!-- this empty spacer is used to make a space between vertical holding blocks --></div> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 45. Do more with less focus on the information, not the presentation. that is what css is for. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 46. http://microformats.org/ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 47. In conclusion... Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 48. Use a proper doctype Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 49. CSS at the top Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 50. Javascript at the bottom Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 51. Use elements as they should be used. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 52. Do more with less. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 53. Structure information, NOT design. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 54. Exercise Write some markup. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 55. break Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 56. If you thought html was bad, I give you... Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 57. CSS Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 58. selector { property : value; } Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 59. div#id.foo p .bar { ... } Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 60. CSS 2.1 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 61. http://www.456bereastreet.com/archive/200509/ css_21_selectors_part_1/ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 62. Positioning Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 63. position : static; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 64. position : relative; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 65. float: left; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 66. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 67. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 68. float : left; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 69. IE doubles the padding and margin Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 70. display: inline; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 71. Explorer 6 Duplicate Characters Bug Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 72. The IE5/6 Doubled Float-Margin Bug Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 73. http://positioniseverything.net/ explorer.html Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 74. Cascading http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 75. Shorthand Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 76. padding: 2px; padding: 2px 2px 2px 2px; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 77. CSS 3 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 78. http://www.456bereastreet.com/archive/200601/ css_3_selectors_explained/ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 79. power Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 80. Unlimited power Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 81. e[att^=”val”] Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 82. E:empty Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 83. E~F Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 84. CSS 3 ? Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 85. dojo Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 86. jQuery Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 87. Tools Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 88. Firebug https://addons.mozilla.org/en-US/firefox/addon/1843 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 89. Yslow http://developer.yahoo.com/yslow/ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 90. Web developer 1.1.6 https://addons.mozilla.org/en-US/firefox/addon/60 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 91. In conclusion Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 92. Start big set font stuff on the body (and the td for ie) Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 93. End small formulate exceptions on id’s, classes or on specific dom elements. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 94. Write as little as possible It’s easy to get confused. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 95. Know of the cascade And embrace it. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 96. Inline styles are evil don’t use them. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 97. Exercise Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 98. Style this. Exercise Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 99. http://wnas.nl/fronteers/ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 100. break Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 101. JavaScript part 1 Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 102. JavaScript === evil Do not rely on it. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 103. Donʼt rely on it HTML is a rely accessible platform. Use JavaScript to enhance it. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 104. Global variables === evil Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 105. x = global; Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 106. function isitglobal() { x = global; } Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 107. var is your friend Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 108. function isitglobal() { var x = notglobal; } Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 109. Progressive Enhancement !== Graceful degradation. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 110. HIJAX vs AJAX Plan ajax from the beginning and build it in the end. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 111. ns.nl with javascript Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 112. ns.nl without javascript. aka not so graceful degradation... Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 113. JavaScript !== java Really not. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 114. JavaScript Is not a toy language. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 115. The old way Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 116. <a href=”#” onclick=”javascript:function(){ window.open(‘http://wnas.nl’,’wnas’,’width=300,height=400’); }”> go there! </a> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 117. Bad. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 118. <a href=”#” onclick=”javascript:function(){ window.open(‘http://wnas.nl’,’wnas’,’width=300,height=400’); }”> go there! </a> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 119. <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> <a href=”#” onclick=”javascript:function(){// do stuff );}”>go there!</a> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 120. <a href=”http://wnas.nl” class=”popup”> go there! </a> Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 121. $(‘.popup’).click( function () { window.open( this.href,’wnas’,’width=300,height=400’); }); Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 122. The World's Most Misunderstood Programming Language ‘Douglas Crockford’ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 123. Closures one of javascript most devious concepts Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 124. where a function remembers what happens around it ‘Stuart Langridge’ Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 125. http://tinyurl.com/jsclosures Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 126. Patterns Smatterns Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 127. If all you have is a everything looks like a nail Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 128. Read a lot this day is too short for patterns... http://delicious.com/wnas Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 129. namespace var ing = function () { // do stuff }(); Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 130. Revealing module pattern var ing = function () { var foo = function () { // do stuff } return { foo : foo } }(); Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 131. private variables var ing = function () { var config = { // object literal name : ‘value’ }; var foo = function () { alert ( config.name ); }; return { foo : foo }; }(); ing.foo(); Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 132. Group your stuff namespacing keeps it safe and structurally sound. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 133. XML vs JSON Use the best possible solution Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 134. Not the available one JSON vs XML Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 135. Memory And the garbage collector Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 136. So what changed ? Ajax and Rich Internet Applications. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 137. Ajax Asynchronous Javascript and XML Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 138. The solution think of history Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 139. Ajax origins Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 140. Clean up That is what Ajax stood for anyway... Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 141. Pick up after yourself Leave a clean dom after you... ( use dojo for that ) Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 142. In conclusion Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 143. Totaal voetbal Let the individual elements of your program work for you. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 144. Java To handle the logic. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 145. JSP / XHTML To display the structure of your programs. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 146. CSS To present it in a proper manner. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 147. JavaScript To enhance the user experience. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 148. Exercise enhance the page you made... Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 149. Extra time Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 150. Event delegation Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 151. Just in time initialization Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 152. Lazy loading Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 153. Code as prose. Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 154. Douglas The good parts Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl
  • 155. JavaScript The Definitive Guide (5th) Wilfred Nas - Client Side Development wnas.nl | twitter.com/wnas | wilfred@wnas.nl

Notas do Editor

  1. I have been working on the web for the past 14 years. I started out as a designer bugging developers. In the past years I have come full circle, becoming the developer that is bugging designers.
  2. giving workshops is not my main job, just something I do on the side. mostly when people give me beer and get me talking :)
  3. the only url you have to write down
  4. There are three sides to a website... mvc...
  5. we will start with the basics, HTML. boring isn&#x2019;t it. after all html is easy...
  6. There are a lot of things to think about, like;
  7. html is for structure, a way to show the content...
  8. Which doctype do you use?
  9. Strict is the way to go, if you can
  10. sketch the difference between ie and w3c
  11. and still this is the way most websites were build...
  12. especially if your building data intensive applications...
  13. make sure you specify this one BEFORE the tbody
  14. most people, turning away from tables, will use div&#x2019;s in the same way...
  15. to identify, must be unique
  16. not just for css. to classify
  17. most developers get a fo and a graphic design. they will use the design to build and the fo to tweak. they should do the reverse
  18. bad
  19. don&#x2019;t add extra div&#x2019;s to create that border the design calls for. You allready have enough elements to play with...
  20. should be around 10.30
  21. start 11.00
  22. selectors are not limited to id&#x2019;s and can be chained... multiple classes can be used. and such...
  23. supported in most browsers
  24. support is not as wide spread
  25. Match any E elements, whose att atribute value begins with &#x2018;val&#x2019;
  26. Matches any E element that has no children (including text nodes)
  27. matches any F element that is preceded by an E element... general sibling selector
  28. style the page you just made with proper html... start 12.00
  29. should be 11.45
  30. around 12.30
  31. start 13.00
  32. === is exactly equal to (value and type) == is equal to
  33. build a good app and make it better. don&#x2019;t build a good app and let it slip away...
  34. build as if you have no javascript en HIJACK the form actions with javascript
  35. please don&#x2019;t try to make it into it...
  36. Really it is not.
  37. power, confusion ie is the problem
  38. further than that, I will not go. as stuart talk opens my eyes but not enough. there is more in this than I know...
  39. Don&#x2019;t put all of your trust in patterns...
  40. transactie module by the dutch police to process your tickets is suffering...
  41. used to be no problem, as we left the page after a while
  42. We don&#x2019;t leave the page anymore, instead we keep producing more and more dom objects...
  43. he forgot css and left out json or html as a data layer...
  44. Where does the name ajax stood for in the beginning...
  45. sorry for that, a mistake...
  46. The cleaner was a household name for so long, that we should use it...
  47. look into the architecture document for a good example, me I make the mistake sometimes, that&#x2019;s where my hair is going...
  48. including main characters and a compelling story line...
  49. JavaScript as a language is great, but has many bad parts. You want to avoid them...
  50. A must have reference guide of a gaziljon pages. Any decent JavaScript developer has a copy handy...