SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Javascript
@Lucas_Aquiles
Roteiro
 1.   WTF javascript?
 2.   como funciona? como "instala"? isso "roda" onde?
 3.   Sintaxe básica
      a. variáveis, arrays, loops, functions
 4.   manipulando elementos DOM
 5.   Javascript OO?
      a. em, OO?
      b. o prototype
      c. os métodos call() e apply()
 6.   Events
 7.   Debbugin e Testing
      a. tem jUnit?
      b. Firebug (firefox), element inspect (chrome)
 8.   Boas práticas
 9.   Bibliotecas
10.   Dojo
      a. jogo Campo minado, quem lembra?
WTF Javascript?
● baseada em protótipos
● usada tanto no cliente-side como em server-
  side (node.js, commonjs)
● no browser é utilizada para criar interações
  com elementos da página (ajax, css,...)
● tem até JVM implementada em javascript -
  Rhino
Como funciona? Onde isso "roda"?
aqui precisamos só de um browser.




                                    firebug extension
Sintaxe básica
● sintaxe bem parecida com Java
● variáveis
   ○   não é obrigado definir tipos, basta declarar


   ○   possui tipagem fraca
● loops
   ○   for, while, do...while, enhaced for
● if..else
  obs: valores nulos podem ser colocados direto na condição:
  ex: var test = null;
      if(!test){ /* faz alguma coisa */ }
Sintaxe básica



Arrays



 métodos                  descrição

 forEach(function(){ })   percorre os elementos do array

 length                   tamanho do array

 push()                   adiciona um elemento na última posição

 pop()                    remove um elemento
Sintaxe básica
Loops
  ○ for, while, do...while, semelhante a sintaxe Java
  ○ enchaced for:
Sintaxe básica
Functions
  ○   declaração simples:

      function doSomething(){
          alert('opa');
      }


  ○   funções podem receber funções como parametro
  ○   uma variável pode armazenar uma function

  *funções podem ser usadas como construtor
Manipulando Elementos DOM
 ○ o que é DOM?
   ■ Modelo de Objecto de Documento
   ■ métodos que permitem modificar, alterar, remover um
     elemento do documento que está trabalhando através do
     DOM

   ■ Linguagem neutra?
      ● como assim? se só é usado pra manipular elementos
         DOM com javascript?
   ■ E o que faz o que em um documento?
      ● ex:
         var div = document.getElementsByTagName('div');
         for(var i = 0; i < div.length; i++){
             console.log(div[i].innerHTML);
         }
Manipulando Elementos
● o objeto document
  ○ através do objeto document é possivel
    manipular, criar ou remover qualquer
    elemento
  ○ criar
         ● document.createElement('div');
         ● document.appendChild(element);
  ○ recuperar
         ● document.getElementBy*
         ● document.getElementsBy*
Manipulando Elementos DOM
● Métodos mais comuns para recuperar um
  elemento DOM

  ○   document.getElementById('')
  ○   document.currentSelector('#*')
  ○   document.getElementsByTagName()
  ○   document.getElementsByClassName()
  ○   document.getElementsByName()
Manipulando Elementos DOM
com um HtmlElement pode se navegar entre
os elementos
   .parentNode - retorna o elemento anterior
   .chidren - retorna todos os elementos filhos
   .style - modifica propriedades CSS
   .innerHTML - insere um conteudo
Javascript OO
● é possivel trabalhar com construtores,
  métodos e literais de objetos

● functions podem ser usadas como um
  construtor
     function LionMan(cor){
        this.cor = cor;
        this.modeNinja = false;
     }
     var lionMan = new LioMan('branco');
Javascript OO
● e podem usar métodos através do prototype
  function ativaLionManMode(){
     this.modeNinja = true;
     console.log("Lion Man, uma dádiva dos ninjas!");
  }

  LionMan.prototype.ativarLionManMode =
  ativaLionManMode;
Javascript OO
● function call();

     ■ invoca a função e usa o primeiro parametro
       como "this";


● function apply();

     ■ praticamente a mesma coisa, exceto que no
       segundo parametro é preciso passar um Array
Eventos
var nomeDaVar.onClick = function(){
    alert('opa');
}


ou
function fazAlgumaCoisa(){
    return "lion man";
}
var aElement = document.currentSelector("#link");
aElement.addEventListener('click', fazAlgumaCoisa, false);


*o addEventListener nem existe nas versões antigas do IE, tem que usar o
attachEvent
Eventos
DOMEventElement

  EventObject - retorna informações sobre o
objeto em que foi feita interação

  var aLink = document.getElementById('link');
  var eventObj = null;
  aLink.onclick = function(ev){
           eventObj = ev;
         return false;
  }
Testing e Debbuging
● Testing
  ○ existems bibliotecas javascript - jSUnit
  ○ com a função console, também é possivel fazer
    debug e asserts de objetos javascript
  ○ as extensões (firebug) e ferramentas do browser
    que permimte inspecionar e debugar objetos
    javascript
Boas práticas
● evite misturar código de interação com
  código de marcação!
● evite o javascript obstrusivo
Bibliotecas
● jQuery
  ○ a mais popular, simples para manipular elementos
    DOM e criar animações
  ○ jquery.com


● Coffee Script
  ○ http://coffeescript.org/
  ○ uma linguagem com marcação própria que compila
    o código para Javascript
Dojo!




Campo Minado!

Contenu connexe

Tendances

(A09) LabMM3 - JavaScript - Estruturas de repetição
(A09) LabMM3 - JavaScript - Estruturas de repetição(A09) LabMM3 - JavaScript - Estruturas de repetição
(A09) LabMM3 - JavaScript - Estruturas de repetiçãoCarlos Santos
 
Mágica com qt’s meta object system
Mágica com qt’s meta object systemMágica com qt’s meta object system
Mágica com qt’s meta object systemRodrigo Delduca
 
Breve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJsBreve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJsRubens Fernandes
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basicoWemerson Silva
 
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e MathCarlos Santos
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Jeison Barros
 
Javascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryJavascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryWesley Lemos
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosWesley Lemos
 
TDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryTDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryGuilherme Rey
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
JavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysJavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysValter Cinquenta
 
T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)Carlos Santos
 
Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Luís Cobucci
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Elvis Araújo
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)Carlos Santos
 

Tendances (20)

(A09) LabMM3 - JavaScript - Estruturas de repetição
(A09) LabMM3 - JavaScript - Estruturas de repetição(A09) LabMM3 - JavaScript - Estruturas de repetição
(A09) LabMM3 - JavaScript - Estruturas de repetição
 
Mágica com qt’s meta object system
Mágica com qt’s meta object systemMágica com qt’s meta object system
Mágica com qt’s meta object system
 
Breve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJsBreve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJs
 
Mootools
MootoolsMootools
Mootools
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basico
 
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
 
Javascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQueryJavascript para CSharpers - Append B - jQuery
Javascript para CSharpers - Append B - jQuery
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
TDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQueryTDC 2011 - Criando um plugin jQuery
TDC 2011 - Criando um plugin jQuery
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
JavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysJavaScript - Objectos e Arrays
JavaScript - Objectos e Arrays
 
T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)
 
Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 
Javascript Ilegível
Javascript IlegívelJavascript Ilegível
Javascript Ilegível
 

Similaire à Minicurso javascript

Similaire à Minicurso javascript (20)

jQuery básico (parte 1)
jQuery básico (parte 1)jQuery básico (parte 1)
jQuery básico (parte 1)
 
10 - JS OOP.pptx
10 - JS OOP.pptx10 - JS OOP.pptx
10 - JS OOP.pptx
 
JavaScript
JavaScriptJavaScript
JavaScript
 
JQuery
JQuery JQuery
JQuery
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Javascript
JavascriptJavascript
Javascript
 
Javascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworksJavascript - Princípios da linguagem e utilização de frameworks
Javascript - Princípios da linguagem e utilização de frameworks
 
Java script1
Java script1Java script1
Java script1
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
Javascript
JavascriptJavascript
Javascript
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQuery
 
Python
PythonPython
Python
 
CSS Cross "Bownser"
CSS Cross "Bownser"CSS Cross "Bownser"
CSS Cross "Bownser"
 
T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
OOP Java
OOP JavaOOP Java
OOP Java
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 

Plus de Lucas Aquiles

Best practices in pair programming
Best practices in pair programmingBest practices in pair programming
Best practices in pair programmingLucas Aquiles
 
Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Lucas Aquiles
 
Pocket Talk - Mob programming
Pocket Talk - Mob programmingPocket Talk - Mob programming
Pocket Talk - Mob programmingLucas Aquiles
 
google maps api - v1
 google maps api - v1 google maps api - v1
google maps api - v1Lucas Aquiles
 
Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Lucas Aquiles
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Lucas Aquiles
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidLucas Aquiles
 

Plus de Lucas Aquiles (15)

Open talk micronaut
Open talk   micronautOpen talk   micronaut
Open talk micronaut
 
Best practices in pair programming
Best practices in pair programmingBest practices in pair programming
Best practices in pair programming
 
Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?
 
Pocket Talk - Mob programming
Pocket Talk - Mob programmingPocket Talk - Mob programming
Pocket Talk - Mob programming
 
google maps api - v1
 google maps api - v1 google maps api - v1
google maps api - v1
 
Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015
 
Phonegap
PhonegapPhonegap
Phonegap
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Grails
GrailsGrails
Grails
 
Groovy
GroovyGroovy
Groovy
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Groovy
GroovyGroovy
Groovy
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
 
Orm android
Orm androidOrm android
Orm android
 

Minicurso javascript

  • 2. Roteiro 1. WTF javascript? 2. como funciona? como "instala"? isso "roda" onde? 3. Sintaxe básica a. variáveis, arrays, loops, functions 4. manipulando elementos DOM 5. Javascript OO? a. em, OO? b. o prototype c. os métodos call() e apply() 6. Events 7. Debbugin e Testing a. tem jUnit? b. Firebug (firefox), element inspect (chrome) 8. Boas práticas 9. Bibliotecas 10. Dojo a. jogo Campo minado, quem lembra?
  • 3. WTF Javascript? ● baseada em protótipos ● usada tanto no cliente-side como em server- side (node.js, commonjs) ● no browser é utilizada para criar interações com elementos da página (ajax, css,...) ● tem até JVM implementada em javascript - Rhino
  • 4. Como funciona? Onde isso "roda"? aqui precisamos só de um browser. firebug extension
  • 5. Sintaxe básica ● sintaxe bem parecida com Java ● variáveis ○ não é obrigado definir tipos, basta declarar ○ possui tipagem fraca ● loops ○ for, while, do...while, enhaced for ● if..else obs: valores nulos podem ser colocados direto na condição: ex: var test = null; if(!test){ /* faz alguma coisa */ }
  • 6. Sintaxe básica Arrays métodos descrição forEach(function(){ }) percorre os elementos do array length tamanho do array push() adiciona um elemento na última posição pop() remove um elemento
  • 7. Sintaxe básica Loops ○ for, while, do...while, semelhante a sintaxe Java ○ enchaced for:
  • 8. Sintaxe básica Functions ○ declaração simples: function doSomething(){ alert('opa'); } ○ funções podem receber funções como parametro ○ uma variável pode armazenar uma function *funções podem ser usadas como construtor
  • 9. Manipulando Elementos DOM ○ o que é DOM? ■ Modelo de Objecto de Documento ■ métodos que permitem modificar, alterar, remover um elemento do documento que está trabalhando através do DOM ■ Linguagem neutra? ● como assim? se só é usado pra manipular elementos DOM com javascript? ■ E o que faz o que em um documento? ● ex: var div = document.getElementsByTagName('div'); for(var i = 0; i < div.length; i++){ console.log(div[i].innerHTML); }
  • 10. Manipulando Elementos ● o objeto document ○ através do objeto document é possivel manipular, criar ou remover qualquer elemento ○ criar ● document.createElement('div'); ● document.appendChild(element); ○ recuperar ● document.getElementBy* ● document.getElementsBy*
  • 11. Manipulando Elementos DOM ● Métodos mais comuns para recuperar um elemento DOM ○ document.getElementById('') ○ document.currentSelector('#*') ○ document.getElementsByTagName() ○ document.getElementsByClassName() ○ document.getElementsByName()
  • 12. Manipulando Elementos DOM com um HtmlElement pode se navegar entre os elementos .parentNode - retorna o elemento anterior .chidren - retorna todos os elementos filhos .style - modifica propriedades CSS .innerHTML - insere um conteudo
  • 13. Javascript OO ● é possivel trabalhar com construtores, métodos e literais de objetos ● functions podem ser usadas como um construtor function LionMan(cor){ this.cor = cor; this.modeNinja = false; } var lionMan = new LioMan('branco');
  • 14. Javascript OO ● e podem usar métodos através do prototype function ativaLionManMode(){ this.modeNinja = true; console.log("Lion Man, uma dádiva dos ninjas!"); } LionMan.prototype.ativarLionManMode = ativaLionManMode;
  • 15. Javascript OO ● function call(); ■ invoca a função e usa o primeiro parametro como "this"; ● function apply(); ■ praticamente a mesma coisa, exceto que no segundo parametro é preciso passar um Array
  • 16. Eventos var nomeDaVar.onClick = function(){ alert('opa'); } ou function fazAlgumaCoisa(){ return "lion man"; } var aElement = document.currentSelector("#link"); aElement.addEventListener('click', fazAlgumaCoisa, false); *o addEventListener nem existe nas versões antigas do IE, tem que usar o attachEvent
  • 17. Eventos DOMEventElement EventObject - retorna informações sobre o objeto em que foi feita interação var aLink = document.getElementById('link'); var eventObj = null; aLink.onclick = function(ev){ eventObj = ev; return false; }
  • 18. Testing e Debbuging ● Testing ○ existems bibliotecas javascript - jSUnit ○ com a função console, também é possivel fazer debug e asserts de objetos javascript ○ as extensões (firebug) e ferramentas do browser que permimte inspecionar e debugar objetos javascript
  • 19. Boas práticas ● evite misturar código de interação com código de marcação! ● evite o javascript obstrusivo
  • 20. Bibliotecas ● jQuery ○ a mais popular, simples para manipular elementos DOM e criar animações ○ jquery.com ● Coffee Script ○ http://coffeescript.org/ ○ uma linguagem com marcação própria que compila o código para Javascript