Alura > Cursos de Front-end > Cursos de JavaScript > Conteúdos de JavaScript > Primeiras aulas do curso JavaScript: DOM, eventos e requisições

JavaScript: DOM, eventos e requisições

Iniciando o javascript no navegador - Apresentação

Apresentando o curso e definindo pré-requisitos

Olá! Meu nome é Vinícius Neves, o Careca Barbudo. Se ainda não era seu melhor amigo, agora passou a ser! Estou aqui para discutirmos como o JavaScript funciona na web.

O que é necessário para maximizar o aprendizado neste curso? Para aproveitarmos ao máximo, é essencial dominar JavaScript. Não abordaremos a linguagem em si nem estruturas de dados; consideramos esse conhecimento um pré-requisito. Além disso, HTML e CSS, que são a base da web, também são necessários. Se você domina JavaScript, HTML e CSS, está preparade para nos acompanhar.

Desenvolvendo os projetos do curso: quiz e focus

Neste curso, desenvolveremos dois projetos. Primeiro, começaremos com um quiz. Nesse quiz, nós o executaremos até o fim e o reiniciaremos para começar novamente. Trabalharemos com perguntas e respostas, controlaremos o estado e, ao final, apresentaremos a pontuação.

Esta é uma aplicação que usaremos para começar a entender como o JavaScript funciona no navegador.

Nosso próximo passo é o Focus. É uma aplicação muito mais ampla e mais complexa do que o Quiz (Questionário). Ela terá:

Adotando a abordagem de desenvolvimento e encerrando

Trata-se de uma aplicação muito completa para entendermos como tudo isso funciona. E, obviamente, faremos tudo isso usando o Cursor. Algumas partes implementaremos manualmente e outras delegaremos ao agente, pois é assim que o desenvolvimento de software funciona atualmente.

Eu espero que você esteja com o mesmo nível de animação que eu. Eu te espero no próximo vídeo. Vamos com tudo! Até mais!

Iniciando o javascript no navegador - Conhecendo nossas ferramentas: cursor, terminal e figma

Apresentando o foco do curso e pré-requisitos

Para aproveitarmos bem este curso, vamos compartilhar alguns conselhos sobre o que é importante já conhecer e com o que precisamos estar confortáveis para aproveitar ao máximo o conteúdo que veremos. Vamos nos concentrar em HTML, CSS e JavaScript, principalmente no mecanismo do navegador, no Chrome (navegador).

Para aproveitar 100%, o que precisamos já conhecer e com o que é importante ter familiaridade? Primeiro, Figma. Ao clicarmos em “preparando o ambiente”, onde está o link para o Figma do projeto, seremos levados a uma tela muito parecida com a que vemos agora, que contém um botão como Open in Figma (Abrir no Figma). A partir daí, poderemos clonar o projeto para nosso espaço. Não vamos executar esse procedimento aqui. No arquivo, veremos os elementos do Focus bem organizados e poderemos inspecionar cada um deles, observar tamanhos, fontes; na parte superior, há um guia de tipografia; também podemos coletar todas as cores — por exemplo, as cores que formam o degradê. Está tudo disponível. Quanto mais familiaridade tivermos com o Figma, melhor. Recomendamos explorar, experimentar e navegar pela ferramenta, porque a utilizaremos várias vezes ao longo do nosso percurso.

Utilizando o Cursor como IDE e considerando alternativas

Outro ponto: nosso IDE (Ambiente de Desenvolvimento Integrado) ou editor de texto. Durante o curso, vamos usar o Cursor. Podem surgir dúvidas como: “Vini, por que usar o Cursor? É algo ‘hipster’ que ninguém utiliza?”. Não. Há bastante gente que utiliza, e, sobretudo, ele nos permite ter contato com agentes de código. O Cursor possui uma camada gratuita muito boa, com a qual podemos fazer bastante coisa. Por isso vamos utilizá-lo.

Já o temos instalado; basta abrir um projeto. Vale destacar que o Cursor tem dois modos: um mais orientado ao uso como IDE e outro modo, chamado Cursor 3, mais focado em agentes. Como estamos estudando e aprendendo, não vamos usar o modo de agentes; ou seja, não vamos usar o Cursor 3, e sim o Cursor “normal”.

Vamos fechar a pasta que abrimos sem querer, mas está tudo aqui. Conseguiremos nos orientar bem.

Qual é o bônus? Se estivermos usando VS Code até agora, a experiência será basicamente a mesma, com apenas alguns atalhos diferentes. Se, por exemplo, já tivermos acesso a Cloud Code, Copilot, AntiGravity, Unidisurf ou qualquer outra ferramenta de código, IDE ou editor de texto, podemos utilizá-la e aproveitar da mesma forma. Não é necessário usar a mesma ferramenta que estamos usando aqui; o que aprendermos pode ser aplicado em qualquer uma delas, seja qual for.

Escolhendo e utilizando o terminal

Um ponto muito importante é o terminal. No Windows, existem algumas opções:

No Linux ou no macOS, caso queiramos experimentar outra opção, existe o O+.excel, que é outro tipo de terminal, com funcionalidades diferentes. É uma boa alternativa.

Nós vamos utilizar o Warp. É um terminal bastante eficiente, com muitas funcionalidades, inclusive para visualizar código dentro dele, se necessário. Ele possui uma camada de IA, mas nós não vamos utilizá-la; vamos usar apenas a camada de terminal. Nem mesmo estaremos conectados no Warp: usaremos somente o terminal.

Praticando comandos essenciais no terminal

O que precisamos conseguir fazer no terminal para estarmos prontos para seguir? No mínimo:

Essas práticas ajudam a maximizar o aproveitamento do aprendizado de JavaScript para web.

Ajustando o ambiente e iniciando a codificação

Familiarize-se e sinta-se confortável com o computador e com o ambiente de desenvolvimento. Cuide do setup, ajuste os atalhos ao seu gosto, defina o tamanho de fonte que precisar e escolha o tema do editor conforme preferir (modo claro ou escuro). É essencial estar confortável com tudo isso para que possamos focar no que importa: JavaScript para a web.

Dito isso, vamos começar a escrever um pouco de código, com os fundamentos necessários. Tudo certo? Vamos em frente.

Iniciando o javascript no navegador - O que o JavaScript faz no navegador

Entendendo como JavaScript funciona no navegador

Vamos começar entendendo como JavaScript funciona no navegador. Precisamos pensar em JavaScript como uma camada que adiciona dinamismo à aplicação. O ciclo de uso será o seguinte: a pessoa usuária interage com a aplicação — clica em um botão, envia um formulário, digita algo em um campo — e JavaScript ficará atento ao que acontece, atualizando o DOM (ou seja, o documento, a página HTML) para refletir o que foi alterado.

Isso pode incluir adicionar uma tarefa à lista de tarefas, remover uma tarefa ou iniciar o temporizador. Vimos que o Focus é uma aplicação de técnica Pomodoro. Todas essas interações serão interpretadas por JavaScript, que executará o que indicarmos para reagir aos eventos da pessoa usuária.

Como isso funciona, em linhas gerais? O navegador carrega a página HTML, identifica que há um arquivo de JavaScript a ser baixado, realiza o download, executa o arquivo e, ao executá-lo, segue as instruções que definimos. Pedimos ao navegador, por exemplo: “se alguém clicar neste botão, execute esta função”. É exatamente isso que nosso arquivo de JavaScript fará. Vamos começar a escrevê-lo, montar o HTML base com as tags necessárias e fazer algo acontecer no navegador.

Iniciando o projeto e criando a pasta quiz

No terminal Warp, dentro da pasta "projetos", vamos limpar o terminal para remover o que estávamos testando anteriormente e criar uma nova pasta chamada "quiz". Em seguida, vamos abrir o explorador de arquivos a partir de onde estamos. Lá estará a pasta "quiz". Nosso objetivo é abrir essa pasta "quiz" no Cursor. Ele pode demorar um pouco; como ainda não há nenhum arquivo, não vamos fazer nenhuma operação adicional nesse momento. Vamos fechar, abrir novamente e criar um arquivo index.html.

Para registrar os comandos de início do projeto, no terminal executamos:

mkdir quiz
open .

Configurando a base do HTML e ajustes iniciais

Usaremos um atalho para preencher a base do documento HTML. Em seguida, ajustaremos o título do documento para “Quiz” e alteraremos o idioma no atributo lang, no topo do HTML, para “pt-BR”. Observemos que, ao pressionar a tecla Tab no Cursor, entramos na camada de IA do editor, que tenta adivinhar nossas próximas ações com recursos de autocompletar. Esse autocompletar tem um limite diário na versão gratuita, mas, enquanto disponível, procura antecipar nosso próximo passo e a próxima linha de código.

Primeiro, criamos a estrutura base do index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

Agora aplicamos os ajustes prometidos:

<title>Quiz</title>
<html lang="pt-BR">

Estruturando o conteúdo principal da página

Vamos focar no HTML e maximizar o Cursor. Criaremos a tag

para agrupar toda a aplicação. Dentro dela, colocaremos um

com o texto “Quiz”. Em seguida, pediremos para formatar o documento. Se o Cursor sugerir “quiz de programação”, trata-se apenas da IA tentando adivinhar o que queremos fazer, e não necessariamente o tema que vamos utilizar agora.

Começamos adicionando a estrutura de main:

<body>
    <main>
        
    </main>
</body>

Em seguida, inserimos o título da página dentro de main:

<h1>Quiz</h1>

Inserindo texto de orientação e pontuação

Vamos inserir um parágrafo de teste para orientar a pessoa usuária: algo como “Teste seus conhecimentos aqui com nosso quiz”. Antes de as perguntas aparecerem, criaremos um

para conter a pontuação da aplicação. Dentro dele, adicionaremos um parágrafo explicando que “score” é a pontuação e um iniciando com o valor zero. Como precisaremos atualizar esse valor, colocaremos um identificador único nesse , chamando-o de score. Assim, quando for necessário manipular a pontuação, poderemos localizar esse elemento pelo id.

Primeiro, adicionamos o parágrafo de orientação:

<p>Teste seus conhecimentos com nosso quiz!</p>

Depois, criamos o contêiner da pontuação:

<div>

</div>

Acrescentamos a legenda de pontuação:

<p>Pontuação: </p>

E a visualização inicial do valor:

<p>Pontuação: <span>0</span></p>

Por fim, atribuímos um id ao span para conseguirmos manipulá-lo via JavaScript. No HTML final, esse span ficará dentro do parágrafo de pontuação:

<span id="score">0</span>

Adicionando o botão de início do quiz

Agora, adicionaremos um botão para iniciar o quiz, com o texto “Iniciar quiz”. Da mesma forma que fizemos com o score, também colocaremos um id nesse botão para podermos encontrá-lo facilmente no DOM.

Primeiro criamos o botão:

<button>
    Iniciar Quiz
</button>

Em seguida, adicionamos um id ao botão para facilitar sua seleção no JavaScript:

<button id="start-quiz">

Criando a primeira pergunta e opções

Em seguida, vamos criar a estrutura para as perguntas. Adicionaremos um novo

com um id para a primeira pergunta, e o chamaremos de question-1. Vamos aceitar a sugestão do Cursor para o enunciado: “Qual é a capital do Brasil?”. Antes da pergunta, apresentaremos a identificação “Questão 1”. Depois, incluiremos as opções de resposta como botões. Entre as opções, colocaremos, por exemplo: Brasília, São Paulo, Rio de Janeiro, Tocantins, Paraná e, se necessário, ajustaremos uma delas para Santa Catarina.

Estruturamos a primeira pergunta:

<div id="question-1">

Identificação da questão:

<p>Questão 1</p>

Enunciado:

<p>Qual é a capital do Brasil?</p>

E as opções como botões:

<button>
    <p>São Paulo</p>
</button>
<button>
    <p>Rio de Janeiro</p>
</button>
<button>
    <p>Brasília</p>
</button>

Continuando com mais alternativas:

<button>
    <p>Tocantins</p>
</button>
<button>
    <p>Paraná</p>
</button>
<button>
    <p>Santa Catarina</p>
</button>

Visualizando no navegador e preparando o JavaScript

Queremos visualizar isso no navegador. Para isso, usaremos o recurso “Go Live”. Caso surja a dúvida sobre o que é o “Go Live”, trata-se de uma extensão instalada no Cursor que disponibiliza o arquivo index.html no navegador. O nome da extensão é Live Server, publicada por Ritwick Dey. Atenção ao nome da pessoa publicadora, pois isso é relevante para encontrar a extensão correta. Antes de ativar o “Go Live”, removeremos um botão que havia ficado sobrando e aparecia além do necessário.

Até aqui, escrevemos bastante HTML para estruturar nosso quiz, mas ainda não criamos nosso arquivo de JavaScript. Vamos pensar em como conectar e carregar esse arquivo na página. O próximo passo será criar um novo arquivo chamado quiz.js dentro da pasta "scripts".

Optamos por manter a pasta "scripts" em vez de colocar os arquivos na raiz do projeto. Poderíamos colocar na raiz e funcionaria, mas preferimos organizar, porque, muito provavelmente, teremos mais de um script.js. Assim, o projeto permanece organizado.

Ao carregar este quiz.js no navegador, queremos executar um console.log com a mensagem “quiz iniciando”. Em seguida, precisamos conectar o HTML com o JavaScript. Para isso, no index.html, descemos até o final e, antes de fechar a tag </body>, importamos esse script. O próprio Cursor completou o caminho automaticamente. O que fazemos aqui? A tag script define a inclusão do arquivo, e o atributo src determina a rota do arquivo que desejamos carregar. Como começamos direto pelo nome da pasta, o caminho é relativo ao arquivo atual. Assim, estando no index.html, a rota relativa entra na pasta "scripts" e carrega o quiz.js.

Criando e importando o script quiz.js

Criamos o arquivo scripts/quiz.js com o primeiro teste:

console.log("Quiz iniciando...");

E, no index.html, importamos o script antes de </body>:

<script src="scripts/quiz.js"></script>

Testando no Console do navegador

Vamos verificar se funciona. Para testar, clicamos com o botão direito na página e selecionamos “Inspecionar”. À direita, abriu-se a ferramenta de desenvolvimento do navegador, as Ferramentas do Desenvolvedor, em inglês, Developer Tools (Ferramentas do desenvolvedor). Dentro das Ferramentas do Desenvolvedor, acessamos a aba Console e ampliamos o zoom. Nosso console.log já funcionou: apareceu “quiz iniciando”, informando também a origem: quiz.js: linha 1. Esses dois pontos indicam a linha que gerou o console.log.

Vamos relembrar que podemos encontrar elementos por id. Primeiro, faremos isso no próprio navegador. No Console das Ferramentas do Desenvolvedor, podemos executar JavaScript. Por exemplo, ao declarar uma variável com let, podemos nomeá-la de soma e atribuir o valor de 1 + 1. Em seguida, ao solicitar que mostre soma, o valor é exibido. Portanto, esse Console disponibiliza JavaScript para uso imediato, não apenas o que vem do navegador; podemos executar comandos diretamente ali.

No Console, isso fica assim:

let soma = 1 + 1
soma

Explorando o document e selecionando elementos

Quando precisamos entender o documento HTML e interagir com ele, existe uma variável global — já disponível sem precisar ser declarada — que o navegador fornece: document. Ao invocarmos document, vemos, à esquerda (onde o HTML está renderizado), um destaque em azul. Ao pressionar Enter, visualizamos o conteúdo carregado, por exemplo a origem 127.0.0.1 porta 5500, o index.html e todo o HTML do projeto. Dentro dessa visualização, podemos percorrer a estrutura; ao passar o mouse, cada elemento é destacado. Por exemplo, uma div com id question-1 é destacada como um bloco azul.

No Console, podemos simplesmente inspecionar o objeto document:

document

É por meio desse document, disponível globalmente e injetado pelo navegador, que podemos executar ações como buscar um elemento. Para isso, chamamos document, que possui vários métodos disponíveis. Um deles é getElementById(). Para executar essa função, abrimos e fechamos parênteses e passamos o id do elemento que queremos encontrar. No Cursor, definimos o botão de iniciar; o id é start-quiz. No Console do navegador, ao tentar colar um comando, o Chrome pode alertar para não colar código se não soubermos a origem ou o que faz, pois isso pode permitir que pessoas mal-intencionadas obtenham acesso ao navegador e à identidade da pessoa usuária. Para liberar a colagem, é necessário digitar “allow” (permitir colagem, em inglês, allow pasting). Após essa liberação, executamos document.getElementById("start-quiz") e o botão é encontrado. Portanto, document representa o HTML e também oferece métodos para interagir com ele; getElementById retorna o elemento correspondente ao id.

No Console:

document.getElementById('start-quiz')

Manipulando elementos via JavaScript

Na prática, no quiz.js, copiamos essa chamada para começar a estruturar o código. Declaramos uma constante chamada startQuizButton para armazenar o retorno de document.getElementById("start-quiz"). Em seguida, queremos visualizar o texto desse botão. Para isso, acessamos a propriedade textContent e registramos no console algo como “Texto do botão:” seguido do valor de startQuizButton.textContent. Voltando ao navegador e recarregando a página, vemos: “Texto do botão: iniciar quiz”.

No arquivo scripts/quiz.js, isso fica assim:

const startQuizButton = document.getElementById("start-quiz");

Para inspecionar o texto atual do botão:

console.log("texto do botão", startQuizButton.textContent);

Se quisermos alterar o texto a partir do JavaScript, também podemos. Considerando que isso é um objeto e textContent é uma propriedade do botão do quiz, atribuímos um novo valor — por exemplo, “Iniciando Quiz...”. Após recarregar a página e ampliar o zoom, o texto exibido no botão passa a ser “iniciando o quiz”. Observe que, no console.log anterior, o texto ainda era “iniciar quiz”. Assim, comprovamos que conseguimos manipular o nosso HTML a partir de um arquivo .js.

startQuizButton.textContent = "Iniciando Quiz...";

Conectando o fluxo e concluindo

Conectando todas as partes no fluxo: o nosso HTML carrega um arquivo .js existente no projeto e executa o código válido. Se houver erro de JavaScript, a execução falha e o código não roda. Se o arquivo referenciado não existir, o navegador informará que não foi encontrado. Por exemplo, se inserirmos um espaço no meio do caminho do arquivo, ao recarregar, esse espaço será convertido para %20 na URL, e, como o arquivo com esse nome não existe, veremos um erro em vermelho informando que não foi encontrado. Ao escrever corretamente o nome do arquivo e salvar, o Live Server recarrega a página automaticamente e renderiza o conteúdo corretamente.

Este é o nosso primeiro passo — o hello world (olá, mundo) de JavaScript no navegador. É o início da nossa jornada; ainda temos muitas etapas pela frente. Eu te espero no próximo vídeo.

Sobre o curso JavaScript: DOM, eventos e requisições

O curso JavaScript: DOM, eventos e requisições possui 427 minutos de vídeos, em um total de 115 atividades. Gostou? Conheça nossos outros cursos de JavaScript em Front-end, ou leia nossos artigos de Front-end.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda JavaScript acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas