Este é o
vigésimo de uma série de posts que estou escrevendo sobre o próximo
lançamento do VS 2010 e .NET 4.
O post de hoje abrange algumas
das melhorias que estão chegando com a IntelliSense para JavaScript no
VS 2010 e no Visual Web Developer 2010 Express. Você vai perceber no VS 2010 que a IntelliSense
para JavaScript é carregada de forma muito mais rápida para arquivos e
bibliotecas de script e que a IntelliSense agora oferece dicas para
completar código em cenários mais avançados se compararmos com versões
prévias do Visual Studio.
[Além do blog, eu também estou agora
utilizando o Twitter para atualizações rápidas e para compartilhar
links. Siga-me em: twitter.com/scottgu]
IntelliSense para JavaScript Melhorada
Prover
Intellisense para uma linguagem dinâmica igual à JavaScript é mais
complicado do que prover IntelliSense para uma linguagem estaticamente
tipada igual a VB e C#. Inferir
corretamente o formato e estrutura de varíaveis, métodos, etc é
praticamente impossível sem executar virtualmente o código propriamente
dito – isto porque JavaScript como linguagem é flexível o bastante para
dinamicamente modificar e transformar estas estruturas no tempo de
execução.
O editor de código do VS 2010 agora tem a
inteligência necessária para realizar esse tipo de execução virtual do código à
medida em que você o escreve - e é assim que a IntelliSense é mantida
precisa e completa. A seguir está
uma explicação simples que mostra quão rica e flexível a IntelliSense se
apresenta na versão final do VS 2010.
Cenário 1: Inferência Básica de Tipos
Quando
você declara uma variável em JavaScript, você não precisa declarar o seu
tipo. Em vez disso, o tipo da
variável é baseado no valor atribuído a ela. Haja vista que o VS 2010 executa o código virtualmente dentro
do editor, ele pode inferir dinamicamente o tipo de uma
variável, e fornecer o código IntelliSense apropriado com base no valor
atribuído a uma variável.
Por exemplo, observe a seguir que o VS 2010
fornece ajuda para completar o código para uma string (porque nós
atribuímos uma string na variável "foo"):
Se nós mais tarde
atribuirmos um valor numérico para "foo", a ajuda para completar o
código (após a atribuição) automaticamente muda para prover IntelliSense
para um número:
Cenário 2:
Intellisense para Quando Manipulamos Objetos do Browser
É bastante
comum com JavaScript a manipulação do DOM (modelo de objetos de uma
página), bem como trabalhar com objetos do browser disponíveis no lado
do cliente/usuário.
Versões anteriores do Visual Studio
proporcionavam ajuda para completar código JavaScript tendo em vista os
objetos padrão do browser - mas não forneciam muita ajuda nos cenários
mais avançados (como a criação de variáveis e métodos dinâmicos). A execução virtual de código do VS 2010 dentro do
editor agora nos permite oferecer intellisense rica para um conjunto
mais amplo de cenários.
Por exemplo, a seguir estamos usando o objeto window
do browser para criar uma variável global chamada "bar". Observe como podemos obter intellisense (com a
inferência do tipo correto para uma string) com o VS 2010, quando mais
tarde tentamos usar a variável bar:
Quando nós atribuímos um
valor numérico para a variável "bar" (ao invés de uma string), o motor
da intellisense do VS 2010 infere corretamente seu tipo e modifica a
ajuda para completar a instrução adequadamente de forma que a ajuda seja
referente a um número:
Cenário 3: Mostrando
todo o poder da IntelliSense
Como o VS 2010 executa o código
virtualmente dentro do editor, ele é capaz de lidar com várias
situações (tanto práticas quanto estranhas) que você apresenta a ele - e
ainda é capaz de fornecer a inferência de tipos e IntelliSense
precisamente.
Por exemplo, a seguir nós estamos usando um loop
for e o objeto window do browser para criar e nomear múltiplas
variáveis dinâmicas (bar1, bar2, bar3 ... bar9). Observe como o motor da IntelliSense do editor
identifica e provê ajuda para completar o código da instrução nos
oferecendo como opção todas as variáveis dinamicamente criadas:
Como variáveis
adicionadas através do objeto window do browser também são
variáveis globais - elas agora também aparecem na caixa de seleção de
variáveis globais da intellisense:
Melhor ainda -
inferência de tipo ainda é completamente suportada. Assim, se atribuirmos uma string a uma variável
dinamicamente nomeada nós teremos a inferência de tipo para uma string. Se atribuirmos um número nós teremos
a inferência de tipo para um número.
Apenas por diversão (e
para mostrar!) podemos ajustar nosso
loop for para atribuirmos uma string nas variáveis numeradas pares
(bar2, bar4, bar6, etc) e atribuir um número nas variáveis numeradas que
são ímpares (bar1, bar3, bar5, etc):
Observe acima como nós
temos ajuda para completar o código da instrução para uma string para a
variável "bar2".
Observe a seguir que para a variável "bar1" temos
a ajuda para completar o código com referência a um número:
Este não é
simplesmente um truque maneiro...
Embora o exemplo acima
seja um pouco artificial, a abordagem para criar variáveis, métodos e
tratadores de evento dinamicamente no tempo de execução é bastante comum
em muitas bibliotecas Javascript. Muitas
das bibliotecas mais populares usam estas técnicas para manter o
tamanho do download da biblioteca de scripts tão pequeno quanto
possível. O suporte do VS 2010 para
analisar e executar virtualmente bibliotecas que usam estas técnicas
garante que você obtenha melhor código Intellisense quando você
utilizá-las.
Resumo
O Visual Studio 2010 (e o
Visual Web Developer 2010 Express que é grátis) agora oferecem suporte
intellisense muito mais rico para JavaScript. Este suporte funciona com praticamente todas as bibliotecas
JavaScript populares. Ele deverá
ajudar a fornecer uma experiência de desenvolvimento muito melhor quando
você escrever código JavaScript para ser executado no lado do
cliente/usuário permitindo cenários AJAX dentro suas aplicações ASP.NET.
Espero que
ajude,
Scott
P.S. Você pode ler o meu post
anterior sobre a IntelliSense para JavaScript com o VS 2008 (em Inglês) para
aprender mais sobre a nossa intellisense para JavaScript anterior (e
alguns dos cenários que esta suportava). Obviamente, o VS 2010 suporta todos os cenários previamente
possíveis com o VS 2008.
Texto traduzido do post original por
Leniel Macaferi.