Which JavaScript Are You Using - Refactoring JavaScript
Which JavaScript Are You Using - Refactoring JavaScript
Which JavaScript Are You Using - Refactoring JavaScript
Isso pode parecer que tem uma resposta fácil.Quão variada pode ser uma língua?
Bem, no caso do JavaScript, qualquer um deles pode impactar bastante suas ferra-
mentas e fluxos de trabalho:
Versões e especificações
Plataformas e implementações
Idiomas pré-compilados
Estruturas
Bibliotecas
Qual JavaScript você precisa?
Qual JavaScript estamos usando?
Estes podem representar não apenas maneiras diferentes de fazer as coisas, mas tam-
bém um investimento de tempo significativo para decidir, aprender a proficiência e,
eventualmente, escrever fluentemente. Ao longo deste capítulo, exploraremos essas
complexidades para descobrir qual JavaScript podemos escrever e, no restante do li-
vro, seremos mais específicos sobre qual JavaScript devemos escrever.
Algumas das escolhas envolvidas em qual JavaScript usar serão impostas pelo projeto,
algumas pelo framework e algumas por seus próprios gostos pessoais.
Essa é uma pergunta perene feita por desenvolvedores de JavaScript e uma forma es-
pecífica de linguagem provavelmente a maior pergunta de novos desenvolvedores:
“Qual linguagem devo aprender?”A esteira do framework pode dar aos programado-
res uma sensação de que eles realmente precisam saber tudo. Descrições de cargos
com requisitos inflados e até mesmo contraditórios não ajudam. Quando se trata de
JavaScript, existem tantos frameworks, plataformas e, em última análise, tipos distin-
tos de código que você pode escrever que alguma forma dessa pergunta surge uma e
outra vez.
No final, você não pode aprender tudo. Se você tem um emprego ou trabalho-alvo que
realmente requer certas habilidades, gaste seu tempo com elas primeiro. Se você não
tem um trabalho específico em mente, encontre amigos e mentores em encontros e
siga o que eles fazem. Ou, se você está apenas preocupado em aprender algo que é in-
teressante para você, escolha algo que pareça legal* e vá tão fundo quanto quiser, en-
tão siga em frente e, em algum momento, considere se tornar muito hábil com um pu-
nhado dessas tecnologias.
Você pode aplicar esse mesmo processo (filtrando por exigência de trabalho, o que
seus amigos estão usando e o que você acha legal) em linguagens, frameworks, biblio-
tecas de teste ou instrumentos musicais. Em todos eles, vá fundo de vez em quando e,
se você me perdoar um pouco de conselho grosseiro, fique de olho onde está o
dinheiro.
*“Parece legal” pode soar vago, e é. Para mim , isso significa encontrar a tecnologia
mais inovadora ou alucinante para mim . Não é provável que eu aprenda 14 variantes
de algo que resolva o mesmo problema. Para outros, cool significa novo e moderno.
Para outras pessoas significa popular ou lucrativo. Se você não sabe o que “parece le-
gal” significa para você, resolva isso fazendo viagens superficiais em algumas possibi-
lidades, em vez de gastar muito tempo imaginando qual escolher.
Versões e especificações
Se você quiser saber onde está o JavaScript e para onde está indo, você devesiga o que
está acontecendo com a especificação ECMAScript . Embora os recursos do JavaScript
possam surgir de bibliotecas e implementações específicas, se você estiver procu-
rando a fonte canônica de recursos que provavelmente permanecerão, observe a es-
pecificação ECMAScript.
Especificamente (no momento da redação deste artigo), o comitê responsável por ras-
trear e adotar novos recursos na especificação é chamado TC39. As propostas de espe-
cificações passam por um processo de várias etapas para adoção. Você pode acompa-
nhar as propostas em todos os cinco estágios (0–4) no GitHub .
M O D O E S T R I TO
Infelizmente, o JavaScript contém alguns recursos que causam imprevisibilidade e outros que
prejudicam o desempenho apenas por serem disponibilizados.
Geralmente, é considerado uma boa prática usar o modo estrito. Alguns frameworks e lingua-
gens pré-compiladas o incluem como parte do processo de compilação/compilação. Além disso,
os corpos das expressões e declarações de classe incluem "use strict" por padrão.
Dito isso, seguir as especificações do ECMAScript tem duas grandes desvantagens. Pri-
meiro, a documentação bruta pode ser intimidante em tamanho e ênfase. Geralmente
é escrito para aqueles que criam navegadores em vez de aplicativos ou sites. Em ou-
tras palavras, para a maioria de nós, meros mortais, é um exagero. Alguma exposição
a ele é útil, no entanto, para aqueles que gostam de descrever os recursos de uma ma-
neira mais acessível por meio de postagens de blog ou preferem não ter que confiar
nessas postagens de blog como sua fonte de verdade.
Plataformas e Implementações
Essa promessa teve resultados mistos. O ecossistema JavaScript floresceu com o bac-
kend empurrando o frontend para ser tratado mais como código real (organizacional-
mente e paradigmaticamente), enquanto a pura massa de desenvolvedores frontend
disponíveis garantiu que as plataformas de backend sempre atraíssem contribuidores
novos e curiosos.
Por outro lado, até o momento em que este artigo foi escrito, embora tenham sido fei-
tas tentativas, os frameworks JavaScript full-stack (às vezes chamados de “isomórfi-
cos” para executar o mesmo código em dois lugares) não eram tão populares entre os
desenvolvedores quanto os frameworks dedicados de front-end e back-end. estive. En-
quanto dentro do Rails do Ruby e do Django do Python há um claro centro de ativi-
dade de framework, nenhum “grande framework unificador” surgiu no cenário vi-
brante mas volátil do JavaScript.
Até agora, vimos que implementações, plataformas e cada versão da especificação EC-
MAScript têm seu próprio conceito do que é JavaScript.Então, qual JavaScript você
deve escrever?
Primeiro, vamos pegar o caso mais simples de JavaScript “compilado” versus “fonte”:
um processo chamado minificação .Um minifier irá comprimir seu código para reduzir
o tamanho do arquivo, deixando o mesmo significado. No contexto do navegador, isso
significa um download menor para o usuário do site e, consequentemente, um carre-
gamento mais rápido da página.
No entanto, a minificação está longe de ser o único caso de uso para compilar JavaS-
cript em outro JavaScript. Um projeto particularmente bem-sucedido, Babel.js, come-
çou com o objetivo de permitir que os desenvolvedores fizessem uso de recursos futu-
ros do JavaScript, tomando como entrada o código-fonte que potencialmente ainda
não funcionaria na implementação de destino e, em seguida, compilando-o em uma
sintaxe mais antiga com melhor adoção .
Em uma raiva contra chaves e uma (antiga) falta declasses, CoffeeScript ganhou popu-
laridade como uma forma de escrever (preferível a alguns) código compilado em Ja-
vaScript. Muitas outras pré-compilações adotam uma abordagem semelhante: escreva
o código da maneira que você deseja (usando uma linguagem nova ou preexistente) e
ele será compilado em JavaScript. Embora o CoffeeScript tenha caído em desuso, ou-
tras linguagens pré-compiladas estão aumentando para preencher outras lacunas per-
cebidas (ou apenas falta de consistência) no JavaScript.
Seria ótimo dar uma visão geral de todas as linguagens que compilam em JavaScript,
mas existem 337 delas documentadas no wiki do projeto CoffeeScript até o momento.
Se você precisava de mais evidências da importância das plataformas JavaScript, da
desconfiança da própria linguagem ou da complexidade do ecossistema do JavaScript,
esse é um bom número para se ter em mente.
Estruturas
Vamos voltar à pergunta original do capítulo: “qual JavaScript você está usando?”
A linha entre frameworks e bibliotecas é um pouco turva, mas sempre que você vê
essa pergunta sobre uma biblioteca, isso indica (além de um pouco de confusão por
parte do questionador) que você está lidando com um framework que não asseme-
lham-se ao JavaScript o suficiente para serem reconhecíveis para o iniciante.
Para confundir ainda mais as coisas, praticamente qualquer biblioteca pode anexar a
palavra framework a si mesma (por exemplo, “framework de teste”) e parecer mais
importante. Por outro lado, o Electron, que permite que aplicativos de SO de desktop
sejam construídos usando HTML, CSS e JavaScript, também usa a palavra framework ,
enquanto na taxonomia deste capítulo está mais próximo de uma plataforma em si.
Bibliotecas
Tudo o que as bibliotecas tendem a adicionar a isso é uma combinação de mais recur-
sos e possível depreciação de outros (à la "use strict" ).
1. Siga o hype.
Honestamente, se você não tiver certeza, seguir o hype é a melhor coisa que você
pode fazer. Escolha estruturas populares. Escolha bibliotecas populares. Segmente
as plataformas e implementações mais populares que fazem sentido para seus
aplicativos e programas. Ter uma grande comunidade significa que eles provavel-
mente também terão uma quantidade razoável de documentação e código de
exemplo.
2. Tente algo obscuro.
Depois de explorar as opções mais populares, procure um framework que seja
único e o ajude a pensar sobre as coisas de uma maneira diferente. Procure seme-
lhanças e diferenças na versão mais popular que você tentou.
3. Use todas as ferramentas possíveis.
Veja o quão inchado e complicado você pode tornar seu processo de teste apresen-
tando todas as bibliotecas que puder.
4. Vá minimalista.
Veja até onde você pode chegar com Vanilla.js em uma determinada implementa-
ção. Depois de ganhar alguma experiência com ferramentas, pode ser revigorante
começar do zero, trazendo ferramentas apenas quando elas se justificarem. Esse
processo é abordado quando introduzimos gradualmente uma estrutura de teste
no Capítulo 4 .
Com tantas opções para JavaScript, pode parecer impossível escolher qualquer forma
para este livro. Veja como estamos lidando com isso:
Você verá muito código ruim antes que as melhorias sejam aplicadas. Mas o código
depois pode não ser o ideal, ou no seu estilo preferido (ou mesmo no meu). Damos pe-
quenos passos seguros e, para demonstrar uma ampla variedade de técnicas, não po-
demos levar cada trecho de código à perfeição desde sua primeira forma.
Empacotando
Conforme abordamos neste capítulo, suas opções de como usar JavaScript são incri-
velmente amplas. Essa situação pode mudar no futuro, mas eu não apostaria muito
em nenhum JavaScript verdadeiro . O ecossistema é tão variado que você pode explo-
rar maneiras completamente diferentes de codificação e ainda ficar um pouco perto
de casa. Embora o fato de “conhecer JavaScript” ser algo como um alvo em movi-
mento tenha suas frustrações, também significa que a perspectiva é ótima para en-
contrar novos interesses e trabalhar com JavaScript(s) .
Apoiar Sair