~/VibeHandbook
PDF grátis

Linguagens

developer.mozilla.org

JavaScript

O que é

JavaScript é a linguagem da web. É a única que roda nativamente em todos os navegadores. Por meio do Node, Deno e Bun, ela também roda em servidores, então você pode construir um aplicativo inteiro com ela. Ela verifica seus dados apenas enquanto o programa está em execução, não antes — como escrever uma receita sem uma lista de ingredientes, em que um item faltante só é descoberto no meio do preparo (isso é chamado de "tipagem dinâmica"). Ela também é orientada a eventos e está em toda parte, o que a torna a linguagem de programação mais usada no mundo.

Pontos fortes

  • Roda em todo lugar: navegadores, servidores, funções de borda ( functions), até em sistemas embarcados.
  • Sem etapa de compilação; edite e recarregue para feedback instantâneo.
  • Ecossistema npm (Node Manager) enorme e uma comunidade gigantesca.
  • Suporte nativo de primeira classe a operações assíncronas com promises e async/await.

Concessões

  • Sem tipos estáticos — muitos erros só aparecem em tempo de execução.
  • Peculiaridades históricas: igualdade fraca (==), o vínculo de this, coerção implícita.
  • Fácil criar cadeias de callbacks ou dependências desorganizadas sem disciplina.
  • e na mesma linguagem podem borrar os limites arquiteturais.

Quando usar

Recorra ao JavaScript puro para scripts rápidos, projetos pequenos, aprendizado, protótipos ou ambientes em que adicionar uma etapa de build não compensa. Para qualquer coisa maior ou de vida mais longa, a maioria das equipes prefere o TypeScript — mas o JS continua sendo a forma mais rápida de colocar algo rodando em um navegador ou em uma ferramenta pequena do Node.

Encaixe no vibe coding

Assistentes de IA lidam com JavaScript com fluência, mas a ausência de tipos significa que o código gerado pode assumir silenciosamente o formato errado de dados. Instrua a IA a usar sintaxe moderna (const/let, arrow functions, async/await, módulos) e igualdade estrita, e peça para ela adicionar verificações defensivas ou comentários JSDoc onde o formato dos dados importa. Especifique seu ambiente — navegador ou Node, ESM ou CommonJS — para que as importações fiquem corretas. Como não há compilador para se apoiar, peça um exemplo pequeno e executável, ou um teste, para verificar o comportamento diretamente.

const fetchTitle = async (url) => {
  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const html = await res.text();
  return html.match(/<title>(.*?)<\/title>/i)?.[1] ?? "(no title)";
};

fetchTitle("https://example.com").then(console.log);