Javascript: No Navegador e Além

43
Javascript : no navegador e além Javascript : no navegador e além PHP Conference 2010 PHP Conference 2010

description

Boas Práticas para o desenvolvimento de aplicações com JavaScript. O Uso dessas práticas podem ser aplicadas não necessariamente só a aplicações web, mas em uma gama impressionante de outras plataformas.

Transcript of Javascript: No Navegador e Além

Page 1: Javascript: No Navegador e Além

Javascript : no navegador e alémJavascript : no navegador e alémPHP Conference 2010PHP Conference 2010

Page 2: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Duodraco...Duodraco...

● Desenvolvimento web desde 2002● Análise, desenvolvimento, arquitetura

● Zend Certified Engineer '07● Certified Scrum Master● Analista no TiqueImóveis● Evangelista PHP

Page 3: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

ObjetivosObjetivos

Page 4: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Falaremos hoje sobreFalaremos hoje sobre

● Javascript● História● Boas práticas● Importantes Desconhecidos● JS sem navegador● PHP

Page 5: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

HistóriaHistória

● Criado para a Netscape em 1995● LiveScript● Colaboração da Sun

● Java: nome e sintaxe parecidos● Gerou o ECMAScript

● Tornando-se um padrão● Este é base do ActionScript

Page 6: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

VersõesVersões

● 1.0 – Março de 1996● 1.1 – Agosto de 1996● 1.2 – Junho de 1997● 1.3 – Outubro de 1998

● Ecma-262 – 1ª e 2ª edições

● 1.5 – Novembro/2000 – ECMA-262 3ªed.● Subset da linguagem futuramente torna-se JSON

Page 7: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

VersõesVersões

● 1.6 – Nov/05 – 1.5 + Array Extras + E4X …● 1.7 – Out/06 – 1.6 + Generators + Iterators …● 1.8 – Jun/08 – 1.7+Gen. Expressions/Closures …● 1.8+(1.9)

● Firefox4● JSON encode/decode nativo● Function bind● ...

Page 8: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

DHTMLDHTML

● Dynamic HTML● HTML + CSS + Javascript

● Ações e eventos JS● HTML não “estático”● Animações● Elementos GUI

● … muito besteirol

Page 9: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

AjaxAjax

● Asynchronous Javascript And XML● XMLHttpRequest assíncrono

● ActiveX no Internet Explorer

● Requisição HTTP● Processamento de XML – DOM● Processamento de XSL

● Deveria ser usado com Webservices

Page 10: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

FrameworksFrameworks

Page 11: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

FrameworksFrameworks

● Simplifica o desenvolvimento● Implementam funcionalidades complexas

● Com interfaces simples

● Introduzem facilitadores na sintaxe

● Interface com o Usuário● Gráficos● HTML5

Page 12: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

FrameworksFrameworks

● jQuery● Prototype● ExtJS● Dojo● GWT● Mootools

● RaphaëlJS (SVG)

● jQueryUI● jQueryMobile

● script.aculo.us● YUI● moo.fx● qooxdoo

Page 13: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Estilo de CodificaçãoEstilo de Codificação

● Organização● Legibilidade● Manutenabilidade● Evita erros por má codificação

● Sintaxe principalmente

Page 14: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Estilo de CodificaçãoEstilo de Codificação

● Endentação - tabulação com espaços (quatro)● Limite de 80 caracteres● Chaves de blocos lógicos

● Quebra de linha após abertura

● Nomenclatura compreensível● Variáveis, atributos, métodos, funções

● Utilizar formatação uniforme nas declarações● OFormatoCamelizadoÉMuitoBom

Page 15: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Estilo de CodificaçãoEstilo de Codificação

● Terminar os comando com ;● Codificar de maneira autodescritiva● Evitar eval e with● Utilizar-se de JSON

Page 16: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Estilo de CodificaçãoEstilo de Codificação

Page 17: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

OOPOOP

● Javascript é uma linguagem oo● Baseado em prototipação

● Classes com visibilidade● Public● Private● Privileged

– WTF?

Page 18: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Atributos Privados Atributos Privados

● Não têm acesso externo diretamente

● Declarados como parâmetro ou● Com var dentro da “Classe”

Page 19: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Métodos privadosMétodos privados

● Não têm acesso direto externamente● Declarados como function dentro da “Classe”

Page 20: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Atributos PúblicosAtributos Públicos

● Acesso externo e interno

● Criado com ● this.atributo● Classe.prototype.atributo

– Pode ser um Function (Método Público)

Page 21: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Métodos PrevilegiadosMétodos Previlegiados

● Métodos Públicos com acesso a itens privados

● this.metodo = function(){...}

Page 22: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Um ExemploUm Exemplo

Page 23: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

HerançaHerança

● Sim, existe

● prototype● apply|call

Page 24: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

E4XE4X

● EcmaScript for (4) Xml● Interpretação de XML nativa ao Javascript● Atualmente só funciona com Firefox

Page 25: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

JSONJSON

● Javascript Object Notation● Objetivo: legível para humanos● Douglas Crockford

● Baseado em um Subset do JS – 1999

● Adoção do Yahoo e Google em 2005~06

Page 26: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

JSON NativoJSON Nativo

● Encode e decode● Firefox 3.5+, Webkit, Opera 10.5+, Webkit

● JSON.stringify({name:”Duodraco”,year:1981})● JSON.parse('{teste:”Uma string JSON”}')

Page 27: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

JSON-RPCJSON-RPC

● Remote Procedure Call● HTTP ou Sockets● Bidirecional

● Request:● { "method": "helloWord", "params": ["PHPConf"], "id": 1}

● Response:● { "result": "Olá PHPConf", "error": null, "id": 1}

Page 28: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

XULXUL

● Xml UserInterface Language● Mozilla

● Firefox,Thunderbird,Seabird,Flock, etc

● XML+JS

Page 29: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

NoSQLNoSQL

● Trabalham com documentos JSON● Internamente com Javascript● MongoDB

● MapReduce

● CouchDB● MapReduce, Validações, transformações internas

Page 30: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

NoSQLNoSQL

● Requisição:● localhost/php_conf/palestrantes/?limit=1

● Resposta:{“ok”:1,”results”:[{“name”:”Duodraco”,”_id”:“$oid”:”4b7ee0731d41c8137e000002”}}],”id”:1}

Page 31: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

Embedded - WidgetsEmbedded - Widgets

● Apple● Dashboard Widgets● Extensões Safari5

● Microsoft Gadgets● Yahoo Widgets● Google Desktop

Page 32: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

EmbeddedEmbedded

● Adobe● PDF com suporte a Javascript● Photoshop, Illustrator, InDesign, Dreamweaver

● OpenOffice● Google Docs - Spreadsheets● Phillips – Pronto Script● Sphere

Page 33: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

ServerSideServerSideJavaScriptJavaScript

● Netscape – 1996 - LiveWire● Como nosso PHP: script no servidor

● Aptana Jaxer● Opera – Unite● IIS+ASP

● JScript

Page 34: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

ScriptingScripting

● Java 1.6● javax.script

● Qt● QtScript

Page 35: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

LinguagensLinguagens

● Objective-J● CoffeeScript● JSON

Page 36: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

AplicaçãoAplicação

● Flash● ActionScript

● AIR – Adobe Integrated Runtime● XUL● GJS

● GnomeShell

● Kjsembed | Kross● plasmoid

Page 37: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

PlasmoidPlasmoid

● “Widgets” para a plataforma desktop KDE● Podem ser escritos em diversas linguagens

● Python, C++, Ruby, Java … e Javascript

● Tem uma estrutura simples● Podem acessar dados do sistema

Page 38: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

PHPPHP

● JSON● Arquivos de Configuração

● XML, INI, YAML,etc...

● Transporte de Informação● Leve e simples

Page 39: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

PHP – Parsers JSONPHP – Parsers JSON

● Zend_JSON● PEAR\Json● XmlRpc Json● PHP

Page 40: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

json_encodejson_encodejson_decodejson_decode

● json_encode($valorPHP,$options = 0);● json_decode(“String JSON”);

● http://php.net/json_encode● http://php.net/json_decode

Page 41: Javascript: No Navegador e Além

ConclusãoConclusão

Page 42: Javascript: No Navegador e Além

Dúvidas???Dúvidas???

Page 43: Javascript: No Navegador e Além

PHPConference Brasil 2010 - Duodraco

● http://duodra.co● [email protected]

● @duodraco [twitter e identi.ca]

● facebook.com/duodraco● linkedin.com/in/andersoncasimiro● slideshare.net/duodraco

ContatoContato