SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
JavaScript
Framework jQuery

       Tonin R. Bolzan
              &
Fernando Sávio R. Dominguez Jr
DOM - Document Object
Model
Criado pelo W3C, O DOM é uma API
independente de linguagem que representa
como as marcações em HTML e XML são
organizadas;

Disposto em forma de árvore;
Nos navegadores a API é JavaScript;

Manipular o layout HTML é manipular o DOM;
DOM - Document Object
Model




   Representação de um documento HTML e sua árvore DOM
DOM - Document Object
Model
Esta estrutura não é o que se "vê" (o layout em
si);

O DOM é a base para uma outra árvore que é o
que realmente um browser monta na tela, a
Árvore de Renderização (Render Tree);

Render Tree possui também objetos que não
possuem nós na árvore DOM, como scripts e
folhas de estilos.
DOM - Document Object
Model
Caso um elemento da árvore DOM tenha uma
propriedade "display:none", este elemento e
seus nós filhos não serão criados na Render
Tree. Ao contrário do uso de "visibility:hidden";

O DOM tem um comportamento ligeiramente
diferente com páginas HTML5;
DOM - Document Object
Model




        COM suporte HTML5
DOM - Document Object
Model




         SEM suporte HTML5
DOM - Document Object
Model
Isso acontece por que, quando o browser não
reconhece um elemento, ele posiciona o
elemento desconhecido como um nó filho de
<BODY>.

Por isso devemos usar modernizr ou
HTML5shiv, para que o browser reconheça
elementos HTML5 e monte a árvore DOM
corretamente.
Reflows
Reflow é o resultado de um evento que
desencadeia mudanças na disposição dos
elementos de uma página, modificando a
maneira como ela vai ser renderizada na
página.

Esse processo toma tempo para o cálculo e
reposicionamento dos elementos.
O que causa os Reflows
● Atualizar, remover ou atualizar o DOM;
● Esconder nós com display: none;
● Mover ou animar o DOM na página;
● Adicionar CSS que mude o comportamento
  dos elementos;
● Redimensionar janelas;
● Alterar tamanho de fontes;
Repaint
Repaint é o resultado de um evento que
desencadeia mudanças na apresentação dos
elementos de uma página sem alterar a
disposição do elementos.

Ao contrário do Reflow, o Repaint não modifica
a posição dos elementos na página.
DOM - Document Object
Model
Mexer no DOM é "caro", pois causa Reflows
e/ou Repaints, mas principalmente pelo DOM
ser uma API independente;

Temos uma ponte para atravessar com um
pedágio aonde o preço é dado em desempenho;

       DOM --------------------- JavaScript
ECMAScript
ECMAScript é uma linguagem de programação
baseada em scripts, padronizada pela Ecma
Internacional na especificação ECMA-262.

Javascript, JScript e ActionScript não são nada
mais que dialetos de ECMAScript.
JavaScript - Boas Práticas
● Sempre utilize "var" para declarar variáveis;
● Variáveis locais são acessadas mais
  rápidamente;
● Evite a instrução "with";
● Evite o uso de loops "for-in", a menos que
  necessário;
● Evite ao máximo o uso de "eval";
● Use "[]" e "{}" ao invés de "new Array()" e
  "new Object()";
● Sempre minifique o script que irá para a
  produção;
JavaScript - Boas Práticas
use:
   for(var i=0, l=vetor.length ; i<l ; i++);
ao invés de:
   for(var i=0 ; i<vetor.length ; i++);
e se der:
   for(var i=vetor.length ; i-- ; );
JavaScript - Boas Práticas
use:   function(){
           var x = 0, y;
           if(x > 1)
                y = 'Javascript';
       }
ao invés de:
       function(){
           var x = 0;
           if(x > 1)
                var y = 'Hoisting';
       }
JavaScript - Boas Práticas
console.log()     Envia mensagens;
console.dir()     Registra um objeto
navegável;
console.warn()    Registra warnings;
console.error()   Registra msg de erro;
Framework jQuery
jQuery é um framework, é uma abstração que
une códigos comuns para prover uma
funcionalidade genérica;
jQuery 1.8.0 - ChangeLog
MELHORADO
Agora é modularizado: pode-se remover módulos ajax, css, effects,
etc...;
Sizzle reestruturado: motor de seletores mais rápidos;
Atualizaram e limparam o código de animações da biblioteca;
Prefixos CSS, como -webkit, -moz e -ms são adicionados
automaticamente;
IE 6,7 e 8 continuam a ser suportados, teve mais de 160 correções de
bugs;
O tamanho total da nova versão diminuiu algumas centenas de bytes;

REMOVIDO
$(element).closest(Array) retornando Array (Usado para o ".live()")
$.curCSS : Era um alias para jQuery.css()
$.attrFn : Utilizada para definir quais os métodos podem ser usados ​em
jQuery - Iniciando
$(document).ready(function() {console.log('pronto!');});
$(function() {console.log('pronto!');});

$ == jQuery
var meujQuery = jQuery.noConflict();
var meujQuery = $.noConflict();
(function($) {
    // seu código aqui, usando o $
})(jQuery);

$.fn.jquery == "1.8.0"
jQuery - Boas Práticas
$('#id').filter('ul li') ao invés de $('#id ul li')
$('.data td.gonzalez') ao invés de $('div.data .gonzalez')
$('.data td.teste') ao invés de $('.data table.blabla td.teste')
$('.buttons').children() ao invés de $('.buttons > *')
$('.gender input:radio') ao invés de $('.gender :radio')

.on() ao invés de .live() .bind() .delegate()
.on('click',function(){}) ao invés de .click(function(){})
.trigger('click') ao invés de .click()

$.GET deve ser usado para operações não-destrutivas
$.POST deve ser usado para operações destrutivas
jQuery UI
jQuery UI (User Interface) é uma extensão do
framework jQuery que fornece funcionalidades
de interface com o usuário, como animações,
efeitos, temas, etc.
Algumas funcionalidades:
   Widgets - accordion, datepicker, dialog,
   progress bar, slider, tabs;
   Interações - draggable, droppable,
   resizable, sortable, selectable;
jQuery Mobile
Web Framework Javascript criado sobre os
frameworks jQuery e jQuery UI voltado para
Smartphones e Tablets (otimizado para eventos
de toque).
Suporte a temas e vários widgets comuns em
interfaces de dispositivos móveis.
Revisando...
DOM
JavaScript
jQuery
OBRIGADO !

       Tonin R. Bolzan
              &
Fernando Sávio R. Dominguez Jr

Weitere ähnliche Inhalte

Was ist angesagt?

Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBLuciano Borges
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
jQuery - Visão Geral
jQuery - Visão GeraljQuery - Visão Geral
jQuery - Visão GeralKaio Valente
 

Was ist angesagt? (20)

CSS & JQquery
CSS & JQqueryCSS & JQquery
CSS & JQquery
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações web
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEB
 
Java script aula 07 - eventos
Java script   aula 07 - eventosJava script   aula 07 - eventos
Java script aula 07 - eventos
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
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
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
jQuery - Visão Geral
jQuery - Visão GeraljQuery - Visão Geral
jQuery - Visão Geral
 

Ähnlich wie DOM, JavaScript e jQuery: revisão de conceitos fundamentais

Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework JavascriptMarcio Romu
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jqueryYuri Costa
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
jQuery e ASP.Net MVC a dupla dinâmica
jQuery e ASP.Net MVC a dupla dinâmicajQuery e ASP.Net MVC a dupla dinâmica
jQuery e ASP.Net MVC a dupla dinâmicaVictor Cavalcante
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQueryTiago Butzke
 
Iniciando com Jquery
Iniciando com JqueryIniciando com Jquery
Iniciando com JqueryDanilo Sousa
 

Ähnlich wie DOM, JavaScript e jQuery: revisão de conceitos fundamentais (20)

Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework Javascript
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jquery
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Conhecendo Ror
Conhecendo RorConhecendo Ror
Conhecendo Ror
 
jQuery e ASP.Net MVC a dupla dinâmica
jQuery e ASP.Net MVC a dupla dinâmicajQuery e ASP.Net MVC a dupla dinâmica
jQuery e ASP.Net MVC a dupla dinâmica
 
Web 3.0
Web 3.0Web 3.0
Web 3.0
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Iniciando com jQuery
Iniciando com jQueryIniciando com jQuery
Iniciando com jQuery
 
Java script1
Java script1Java script1
Java script1
 
Iniciando com Jquery
Iniciando com JqueryIniciando com Jquery
Iniciando com Jquery
 

DOM, JavaScript e jQuery: revisão de conceitos fundamentais

  • 1. JavaScript Framework jQuery Tonin R. Bolzan & Fernando Sávio R. Dominguez Jr
  • 2. DOM - Document Object Model Criado pelo W3C, O DOM é uma API independente de linguagem que representa como as marcações em HTML e XML são organizadas; Disposto em forma de árvore; Nos navegadores a API é JavaScript; Manipular o layout HTML é manipular o DOM;
  • 3. DOM - Document Object Model Representação de um documento HTML e sua árvore DOM
  • 4. DOM - Document Object Model Esta estrutura não é o que se "vê" (o layout em si); O DOM é a base para uma outra árvore que é o que realmente um browser monta na tela, a Árvore de Renderização (Render Tree); Render Tree possui também objetos que não possuem nós na árvore DOM, como scripts e folhas de estilos.
  • 5. DOM - Document Object Model Caso um elemento da árvore DOM tenha uma propriedade "display:none", este elemento e seus nós filhos não serão criados na Render Tree. Ao contrário do uso de "visibility:hidden"; O DOM tem um comportamento ligeiramente diferente com páginas HTML5;
  • 6. DOM - Document Object Model COM suporte HTML5
  • 7. DOM - Document Object Model SEM suporte HTML5
  • 8. DOM - Document Object Model Isso acontece por que, quando o browser não reconhece um elemento, ele posiciona o elemento desconhecido como um nó filho de <BODY>. Por isso devemos usar modernizr ou HTML5shiv, para que o browser reconheça elementos HTML5 e monte a árvore DOM corretamente.
  • 9. Reflows Reflow é o resultado de um evento que desencadeia mudanças na disposição dos elementos de uma página, modificando a maneira como ela vai ser renderizada na página. Esse processo toma tempo para o cálculo e reposicionamento dos elementos.
  • 10. O que causa os Reflows ● Atualizar, remover ou atualizar o DOM; ● Esconder nós com display: none; ● Mover ou animar o DOM na página; ● Adicionar CSS que mude o comportamento dos elementos; ● Redimensionar janelas; ● Alterar tamanho de fontes;
  • 11. Repaint Repaint é o resultado de um evento que desencadeia mudanças na apresentação dos elementos de uma página sem alterar a disposição do elementos. Ao contrário do Reflow, o Repaint não modifica a posição dos elementos na página.
  • 12. DOM - Document Object Model Mexer no DOM é "caro", pois causa Reflows e/ou Repaints, mas principalmente pelo DOM ser uma API independente; Temos uma ponte para atravessar com um pedágio aonde o preço é dado em desempenho; DOM --------------------- JavaScript
  • 13.
  • 14. ECMAScript ECMAScript é uma linguagem de programação baseada em scripts, padronizada pela Ecma Internacional na especificação ECMA-262. Javascript, JScript e ActionScript não são nada mais que dialetos de ECMAScript.
  • 15. JavaScript - Boas Práticas ● Sempre utilize "var" para declarar variáveis; ● Variáveis locais são acessadas mais rápidamente; ● Evite a instrução "with"; ● Evite o uso de loops "for-in", a menos que necessário; ● Evite ao máximo o uso de "eval"; ● Use "[]" e "{}" ao invés de "new Array()" e "new Object()"; ● Sempre minifique o script que irá para a produção;
  • 16. JavaScript - Boas Práticas use: for(var i=0, l=vetor.length ; i<l ; i++); ao invés de: for(var i=0 ; i<vetor.length ; i++); e se der: for(var i=vetor.length ; i-- ; );
  • 17. JavaScript - Boas Práticas use: function(){ var x = 0, y; if(x > 1) y = 'Javascript'; } ao invés de: function(){ var x = 0; if(x > 1) var y = 'Hoisting'; }
  • 18. JavaScript - Boas Práticas console.log() Envia mensagens; console.dir() Registra um objeto navegável; console.warn() Registra warnings; console.error() Registra msg de erro;
  • 19. Framework jQuery jQuery é um framework, é uma abstração que une códigos comuns para prover uma funcionalidade genérica;
  • 20. jQuery 1.8.0 - ChangeLog MELHORADO Agora é modularizado: pode-se remover módulos ajax, css, effects, etc...; Sizzle reestruturado: motor de seletores mais rápidos; Atualizaram e limparam o código de animações da biblioteca; Prefixos CSS, como -webkit, -moz e -ms são adicionados automaticamente; IE 6,7 e 8 continuam a ser suportados, teve mais de 160 correções de bugs; O tamanho total da nova versão diminuiu algumas centenas de bytes; REMOVIDO $(element).closest(Array) retornando Array (Usado para o ".live()") $.curCSS : Era um alias para jQuery.css() $.attrFn : Utilizada para definir quais os métodos podem ser usados ​em
  • 21. jQuery - Iniciando $(document).ready(function() {console.log('pronto!');}); $(function() {console.log('pronto!');}); $ == jQuery var meujQuery = jQuery.noConflict(); var meujQuery = $.noConflict(); (function($) { // seu código aqui, usando o $ })(jQuery); $.fn.jquery == "1.8.0"
  • 22. jQuery - Boas Práticas $('#id').filter('ul li') ao invés de $('#id ul li') $('.data td.gonzalez') ao invés de $('div.data .gonzalez') $('.data td.teste') ao invés de $('.data table.blabla td.teste') $('.buttons').children() ao invés de $('.buttons > *') $('.gender input:radio') ao invés de $('.gender :radio') .on() ao invés de .live() .bind() .delegate() .on('click',function(){}) ao invés de .click(function(){}) .trigger('click') ao invés de .click() $.GET deve ser usado para operações não-destrutivas $.POST deve ser usado para operações destrutivas
  • 23. jQuery UI jQuery UI (User Interface) é uma extensão do framework jQuery que fornece funcionalidades de interface com o usuário, como animações, efeitos, temas, etc. Algumas funcionalidades: Widgets - accordion, datepicker, dialog, progress bar, slider, tabs; Interações - draggable, droppable, resizable, sortable, selectable;
  • 24. jQuery Mobile Web Framework Javascript criado sobre os frameworks jQuery e jQuery UI voltado para Smartphones e Tablets (otimizado para eventos de toque). Suporte a temas e vários widgets comuns em interfaces de dispositivos móveis.
  • 26. OBRIGADO ! Tonin R. Bolzan & Fernando Sávio R. Dominguez Jr