SlideShare una empresa de Scribd logo
1 de 25
A nova web demanda
novas práticas de
desenvolvimento
@GiovanniBassi
...
...
flickr.com/photos/sofitel_so_bangkok/9362636601/
SPA?
- HTML
+ JSON
flickr.com/photos/lox/9408028555
flickr.com/photos/chrigu/3828941773
flickr.com/photos/mariachily/2649028354/
flickr.com/photos/cimmyt/5219256862
flickr.com/photos/hatm/5704687186/
flickr.com/photos/cookingforvegans/3721103467/
flickr.com/photos/avlxyz/5033183830/
flickr.com/photos/cookingforvegans/3721103467/
Testes
flickr.com/photos/lourdesmunozsantamaria/6139649843/
flickr.com/photos/gabofr/4203458321/
A nova web demanda novas práticas de desenvolvimento
A nova web demanda novas práticas de desenvolvimento

Más contenido relacionado

La actualidad más candente

OESIS - Blended Programs for Alternative Revenue
OESIS - Blended Programs for Alternative RevenueOESIS - Blended Programs for Alternative Revenue
OESIS - Blended Programs for Alternative RevenueDave Ostroff
 
Bridging the Gap - The Future of Learning
Bridging the Gap - The Future of LearningBridging the Gap - The Future of Learning
Bridging the Gap - The Future of LearningClint Hamada
 
Adventures in International Schools
Adventures in International SchoolsAdventures in International Schools
Adventures in International SchoolsKim Cofino
 
Transforming Your Classroom
Transforming Your ClassroomTransforming Your Classroom
Transforming Your ClassroomKim Cofino
 
College Credit Now...Degree Tomorrow
College Credit Now...Degree TomorrowCollege Credit Now...Degree Tomorrow
College Credit Now...Degree TomorrowJeremy Zweiacker
 
8 Promising Pointers For Your Content On Pinterest
8 Promising Pointers For Your Content On Pinterest8 Promising Pointers For Your Content On Pinterest
8 Promising Pointers For Your Content On PinterestDigital Business Academy
 
Keeping It All Together
Keeping It All TogetherKeeping It All Together
Keeping It All TogetherKim Cofino
 
Direct your digital footprint
Direct your digital footprintDirect your digital footprint
Direct your digital footprintAprilKassman
 
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...Andreas Beining
 
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)Andreas Beining
 
BrazTESOL Brasilia - Share, Connect, Learn
BrazTESOL Brasilia - Share, Connect, LearnBrazTESOL Brasilia - Share, Connect, Learn
BrazTESOL Brasilia - Share, Connect, LearnCarla Arena
 

La actualidad más candente (20)

Accessibility
AccessibilityAccessibility
Accessibility
 
Terrific Tumblr Hints For Newbies
Terrific Tumblr Hints For NewbiesTerrific Tumblr Hints For Newbies
Terrific Tumblr Hints For Newbies
 
10 Real Tips For Reddit
10 Real Tips For Reddit10 Real Tips For Reddit
10 Real Tips For Reddit
 
9 Tips On How To Better Use Twitter
9 Tips On How To Better Use Twitter9 Tips On How To Better Use Twitter
9 Tips On How To Better Use Twitter
 
OESIS - Blended Programs for Alternative Revenue
OESIS - Blended Programs for Alternative RevenueOESIS - Blended Programs for Alternative Revenue
OESIS - Blended Programs for Alternative Revenue
 
Bridging the Gap - The Future of Learning
Bridging the Gap - The Future of LearningBridging the Gap - The Future of Learning
Bridging the Gap - The Future of Learning
 
Adventures in International Schools
Adventures in International SchoolsAdventures in International Schools
Adventures in International Schools
 
Transforming Your Classroom
Transforming Your ClassroomTransforming Your Classroom
Transforming Your Classroom
 
College Credit Now...Degree Tomorrow
College Credit Now...Degree TomorrowCollege Credit Now...Degree Tomorrow
College Credit Now...Degree Tomorrow
 
Inbox Zero
Inbox ZeroInbox Zero
Inbox Zero
 
8 Promising Pointers For Your Content On Pinterest
8 Promising Pointers For Your Content On Pinterest8 Promising Pointers For Your Content On Pinterest
8 Promising Pointers For Your Content On Pinterest
 
Keeping It All Together
Keeping It All TogetherKeeping It All Together
Keeping It All Together
 
Direct your digital footprint
Direct your digital footprintDirect your digital footprint
Direct your digital footprint
 
Gaggle
GaggleGaggle
Gaggle
 
"Ferramentas Sociais, Gestão do Conhecimento e Inovação" - Ana Neves
"Ferramentas Sociais, Gestão do Conhecimento e Inovação" - Ana Neves"Ferramentas Sociais, Gestão do Conhecimento e Inovação" - Ana Neves
"Ferramentas Sociais, Gestão do Conhecimento e Inovação" - Ana Neves
 
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...
Hvordan spre innholdet fra en Wordpress nettside eller blogg gratis til så ma...
 
Blogging Getting Started
Blogging Getting StartedBlogging Getting Started
Blogging Getting Started
 
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)
Frilansverktøykasse (praktiske tips for budsjettering og prosjektstyring)
 
BrazTESOL Brasilia - Share, Connect, Learn
BrazTESOL Brasilia - Share, Connect, LearnBrazTESOL Brasilia - Share, Connect, Learn
BrazTESOL Brasilia - Share, Connect, Learn
 
Gaggle
GaggleGaggle
Gaggle
 

Destacado

Newt and salamander
Newt and salamanderNewt and salamander
Newt and salamanderIsabel Rojo
 
Spyder Advisor Capabilities
Spyder Advisor CapabilitiesSpyder Advisor Capabilities
Spyder Advisor CapabilitiesJeannine Ritter
 
Where Humanity Cries
Where Humanity CriesWhere Humanity Cries
Where Humanity Criesdiretruth
 
Open Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn SolutionOpen Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn Solutionguest782598d5
 
Management Final Project Fall 2008
Management Final Project Fall 2008Management Final Project Fall 2008
Management Final Project Fall 2008lat886
 
TTB - Five Important Things About Me
TTB -  Five Important Things About MeTTB -  Five Important Things About Me
TTB - Five Important Things About MeJeanette Murphy
 
LinkedIn - Active Networking For Career Advancement Revised 2 21 11
LinkedIn - Active Networking For Career Advancement   Revised 2 21 11LinkedIn - Active Networking For Career Advancement   Revised 2 21 11
LinkedIn - Active Networking For Career Advancement Revised 2 21 11mythicgroup
 
Skema Bm Kertas1 Set2
Skema Bm Kertas1 Set2Skema Bm Kertas1 Set2
Skema Bm Kertas1 Set2Kay Aniza
 
Fontys business model generation & dichtbij
Fontys business model generation & dichtbijFontys business model generation & dichtbij
Fontys business model generation & dichtbijBart Brouwers
 
Social Media Marketing Approaches Outcomes
Social Media Marketing Approaches OutcomesSocial Media Marketing Approaches Outcomes
Social Media Marketing Approaches OutcomesMargaret Stangl
 
Informationliteracy
InformationliteracyInformationliteracy
InformationliteracyIreubzaet
 
Ikaskuntza eta Jarrera 2011 5. gaia
Ikaskuntza eta Jarrera 2011 5. gaiaIkaskuntza eta Jarrera 2011 5. gaia
Ikaskuntza eta Jarrera 2011 5. gaiaKirolPsikologia
 

Destacado (20)

Dreamscape
DreamscapeDreamscape
Dreamscape
 
Holidayfun 1
Holidayfun 1Holidayfun 1
Holidayfun 1
 
Newt and salamander
Newt and salamanderNewt and salamander
Newt and salamander
 
Spyder Advisor Capabilities
Spyder Advisor CapabilitiesSpyder Advisor Capabilities
Spyder Advisor Capabilities
 
Where Humanity Cries
Where Humanity CriesWhere Humanity Cries
Where Humanity Cries
 
Open Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn SolutionOpen Vpn – Poor Man’S Vpn Solution
Open Vpn – Poor Man’S Vpn Solution
 
Amphibians
AmphibiansAmphibians
Amphibians
 
Native tmg
Native tmgNative tmg
Native tmg
 
Friends
FriendsFriends
Friends
 
side_face samples
side_face samplesside_face samples
side_face samples
 
HELLVILLE FINAL
HELLVILLE FINALHELLVILLE FINAL
HELLVILLE FINAL
 
Management Final Project Fall 2008
Management Final Project Fall 2008Management Final Project Fall 2008
Management Final Project Fall 2008
 
TTB - Five Important Things About Me
TTB -  Five Important Things About MeTTB -  Five Important Things About Me
TTB - Five Important Things About Me
 
LinkedIn - Active Networking For Career Advancement Revised 2 21 11
LinkedIn - Active Networking For Career Advancement   Revised 2 21 11LinkedIn - Active Networking For Career Advancement   Revised 2 21 11
LinkedIn - Active Networking For Career Advancement Revised 2 21 11
 
Skema Bm Kertas1 Set2
Skema Bm Kertas1 Set2Skema Bm Kertas1 Set2
Skema Bm Kertas1 Set2
 
Benchmarking Article
Benchmarking ArticleBenchmarking Article
Benchmarking Article
 
Fontys business model generation & dichtbij
Fontys business model generation & dichtbijFontys business model generation & dichtbij
Fontys business model generation & dichtbij
 
Social Media Marketing Approaches Outcomes
Social Media Marketing Approaches OutcomesSocial Media Marketing Approaches Outcomes
Social Media Marketing Approaches Outcomes
 
Informationliteracy
InformationliteracyInformationliteracy
Informationliteracy
 
Ikaskuntza eta Jarrera 2011 5. gaia
Ikaskuntza eta Jarrera 2011 5. gaiaIkaskuntza eta Jarrera 2011 5. gaia
Ikaskuntza eta Jarrera 2011 5. gaia
 

Más de Giovanni Bassi

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosGiovanni Bassi
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesGiovanni Bassi
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8Giovanni Bassi
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployGiovanni Bassi
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresGiovanni Bassi
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2Giovanni Bassi
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e LinuxGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsGiovanni Bassi
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsGiovanni Bassi
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windowsGiovanni Bassi
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET CoreGiovanni Bassi
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com dockerGiovanni Bassi
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Giovanni Bassi
 

Más de Giovanni Bassi (20)

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviços
 
Sendo ágil com git
Sendo ágil com gitSendo ágil com git
Sendo ágil com git
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NET
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deploy
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineres
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.js
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.js
 
O Futuro do C#: C#8
O Futuro do C#: C#8O Futuro do C#: C#8
O Futuro do C#: C#8
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windows
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET Core
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
 

Notas del editor

  1. Desenvolver para a web há muitos anos significava usar Perl, Php, Java, C#, Ruby ou alguma outra linguagem que rodasse no servidor. Javascript ficava pra alguma coisa mais interativa, e só. Mas de uns anos pra cá o Javascript está retomando o controle da web: as Single Page Applications (SPAs) estão cada vez mais presentes, e até um servidor baseado em Javascript está rodando em mais e mais lugares – e se dizendo mais eficiente que todos os outros. Com essa mudança acontecendo algumas práticas precisam ser repensadas e outras completamente adaptadas. Novas maneiras de alcançar o mesmo objetivo estão surgindo. Nessa sessão vamos ver o que mudou e o que pode ser melhor quando você desenvolve com esse novo paradigma em mente.
  2. 1. Start bymakingyouraudiencecare, using a relatableexampleoranintriguingidea.Alguns de nós desenvolvem pra web desde que ela ficou disponível, ou seja, cerca de 20 anos.No começo desenvolver pra web significava somente fazer um HTML estático. A linguagem era HTML.Depois passou a ser usar CGI com qualquer linguagem que conseguisse responder na linha de comando.Aí vieram as linguagens de Script. ASP, PHP, entre outras. E elas evoluíram pra Java, C#, Ruby, Python, etc.Com certeza entre nós temos desenvolvedores de Java, Ruby, Python, PHP, Perl. Alguns de nós desenvolvem pra web desde que ela ficou disponível, ou seja, cerca de 20 anos, e começaram com HTML e CGI.
  3. Só que isso está mudando. Desenvolver pra web cada vez mais significa escrever uma única linguagem: JavaScript. Ou qualquer coisa que compile pra JavaScript, tipo TypeScript ou CoffeeScript. O desenvolvimento nao está mais só no backend, estamos fazendo aplicações que estão quase todas no front-end, e o backend responde JSON. Paramos de entregar dinamicamente o HTML e passamos a entregar JSON. E o Xml, que dá nome ao Ajax está morrendo.
  4. Estamos cada vez mais trabalhando com o conceito de SPAs. O usuário espera uma SPA, ele gosta da responsividade e da velocidade. Mesmo que sua app nao seja uma SPA, ela vai ter partes que serao, ou serao algo muito parecido.
  5. 2. Explainyourideaclearlyandwithconviction.E com toda a app no front end as regras mudaram. Uma única linguagem nos une, independemente se você coda no Windows, Mac, ou Linux.O problema é que muda tudo. As ferramentas de desenvolvimento mudam. A gestao do código fonte é diferente. As pessoas precisam se especializar mais. O código precisa ser mais organizado. Escrever testes é diferente. SEO muda completamente. O processo de build muda.Deploy é completamente diferente.
  6. 3. Describeyourevidenceandhowandwhyyourideacouldbeimplemented.Ferramentas:Nao necessariamente a melhor IDE pra desenvolver Java ou C# é também a melhor pra desenvolver JavaScript. As ferramentas de testes, build e deploy também mudam.Codamos na nuvem com Nitrous.io, Cloud9, ou parecidos, e no desktop com Sublime, VIM, Webstorm, etc. Linguagens dinâmicas como o JavaScript geralmente vivem muito bem sem IDEs. Temos ainda que minificar o JavaScript. As ferramentas de testes e build também mudam, mas já falamos delas.
  7. SourceControl: A gestao do código fonte é completamente diferente. Você nao coloca dlls, JARs ou GEMs no seu sourcecontrol, porque colocaria o jquery.js, ou backbone.js? Temos tentado usar algumas ferramentas que já sao usadas no backend pra resolver esse problema. Talvez você encontre uma gem ou um nuget de jQuery. Mas isso nao faz sentido, essas ferramentas nao foram feitas pra isso.
  8. Isso já foi resolvido e se chama Bower. O Bower permite gerenciar as dependências de front-end, colocar dependências entre elas, e já está ligado diretamente no Github, ou seja, está sempre atualizado. As principais bibliotecas já estao lá. E o Bower é um componente do Node.
  9. Especializaçao: Talvez nao seja possível manter uma pessoa muito especializada em front-end e back-end. Um desenvolvedor iniciante vai ter que escolher.
  10. Organizaçao do código: Um projeto pequeno consegue passar batido com algumas tags script numa página html. Um projeto maior vai precisar gerenciar dependência entre esses arquivos, otimizar sua carga, etc. O RequireJS utiliza o padrao AMD onde você consegue dizer arquivo deve ser carregado, na ordem correta, e sem poluir o objeto global.
  11. Testes: Uma aplicaçao com grande dependência de JS precisa de testes de unidade. Temos inúmeras bibliotecas que podem ser usadas (Jasmine, QUnit, Mocha, Chai, Sinon, etc). O processo de testes tem que ser fácil. Algumas IDEs já suportam rodar testes de unidade diretamente, como o Visual Studio que roda QUnit e Jasmine.
  12. Com o NodeJS podemos simular o DOM na memória e rodar testes sem precisar de um headless browser.
  13. SEO: Uma SPA nao ter seu conteúdo detectado pelo mecanismos de buscas. Você vai ter que servir html estático quando um crawler se identificar. O #! é o caminho pra isso, junto com PhantomJS.
  14. Build: O build de uma aplicaçaobackend vai às vezes gerar um binário e rodar os testes. Mas nao vai tratar o resultado do front-end. Precisamos compilar o front-end se for escrito em CoffeeScript ou TypeScript, e rodar os testes de unidade com JS.
  15. Deploy: O deploy de uma aplicaçao dependente de JS pode ser feito em dois estágios, um para o backend, outro para o front-end. Você vai: - Buildar e testar o JS. - Minificar o JS. - Otimizar o RequireJS. Após o build concluido você vai ter um arquivo JS de base e um JS para cada SPA da sua app. Esses arquivos nao precisam ser deployados junto com sua aplicaçao de backend. É muito provável que eles possam rodar a partir de um servidor web mais simples ou até de um CDN. E o ideal é que estejam em outro domínio pra evitar o tráfego indevido de cookies.
  16. 4. Endbyaddressinghowyourideacouldaffectyouraudienceiftheyweretoaccept it.NodeJS: O NodeJS é a resposta pra boa parte dos problemas. A comunidade de JS está se agregando a sua volta. Mesmo que você nao vá rodar JS no server, o Node vai ser uma excelente ferramenta para te auxiliar no processo de desenvolvimento.Grunt pode te ajudar a otimizar tarefas de gestao do JS, como build, testes e deploy.Bower vai gerenciar suas dependências. Uma simulaçao do DOM vai te ajudar a rodar testes.
  17. JS é uma linguagem de verdade. Trate ela como uma.Adotando essas práticas você vai testar melhor. Vai escrever JavaScript mais organizado. Vai fazer deploy de maneira mais segura, com um overhead menor e em menos tempo.Você ainda vai desenvolver JS como se fosse 1995?