Envie seu primeiro script ao navegador
Vamos adicionar um menu hambúrguer para abrir e fechar seus links em tamnhos de tela móveis, que necessita de interatividade no lado do cliente!
Se prepare para...
- Criar um componente de menu hambúrguer
- Escrever um <script>para permitir visitantes do site abrirem e fecharem o menu de navegação
- Mover seu JavaScript para seu arquivo .js
Construa um componente Hambúrguer
Crie um componente <Hamburguer /> para abrir e fechar sua navegação móvel.
- 
Crie um arquivo chamado Hamburguer.astroemsrc/components/
- 
Copie o seguinte código em seu componente. Isso irá representar o seu menu “hambúrguer” de 3-linhas para abrir e fechar seus links de navegação em dispositivos móveis. (Você vai adicionar os novos estilos CSS ao global.cssposteriormente.)src/components/Hamburguer.astro ------<div class="hamburguer"><span class="linha"></span><span class="linha"></span><span class="linha"></span></div>
- 
Coloque esse novo componente <Hamburguer />logo antes do seu componente<Navegacao />emCabecalho.astro.Me mostre o código!src/components/Cabecalho.astro ---import Hamburguer from './Hamburguer.astro';import Navegacao from './Navegacao.astro';---<header><nav><Hamburguer /><Navegacao /></nav></header>
- 
Adicione os seguintes estilos ao seu componente Hambúrguer: src/styles/global.css /* estilos da navegação */.hamburguer {padding-right: 20px;cursor: pointer;}.hamburguer .linha {display: block;width: 40px;height: 5px;margin-bottom: 10px;background-color: #ff9776;}.links-nav {width: 100%;top: 5rem;left: 48px;background-color: #ff9776;display: none;margin: 0;}.links-nav a {display: block;text-align: center;padding: 10px 0;text-decoration: none;font-size: 1.2rem;font-weight: bold;text-transform: uppercase;}.links-nav a:hover, a:focus {background-color: #ff9776;}.expandido {display: unset;}@media screen and (min-width: 636px) {.links-nav {margin-left: 5em;display: block;position: static;width: auto;background: none;}.links-nav a {display: inline-block;padding: 15px 20px;}.hamburguer {display: none;}}
Escreva sua primeira tag de script
Seu cabeçalho ainda não é interativo pois ele não consegue responder as interações do usuário, como clicar no menu hambúrguer para mostrar ou esconder os links de navegação.
Adicionar uma tag <script> fornece JavaScript no lado do cliente para “escutar” por um evento do usuário e então responder de acordo.
- 
Adicione a seguinte tag <script>emindex.astro, logo antes da tag de fechamento</body>.src/pages/index.astro <Rodape /><script>document.querySelector('.hamburguer').addEventListener('click', () => {document.querySelector('.links-nav').classList.toggle('expandido');});</script></body>
- 
Verifique sua pré-visualização do navegador novamente em vários tamanhos, e verifique que você tem um menu de navegação funcional que é tanto responsivo ao tamanho da tela quanto responde a interação do usuário na página. 
Importando um arquivo .js
Ao invés de escrever seu JavaScript diretamente em cada página, você pode mover os conteúdos da sua tag <script> para seu próprio arquivo .js em seu projeto.
- 
Crie src/scripts/menu.js(você terá que criar uma nova pasta/scripts/) e mova seu JavaScript para ela.src/scripts/menu.js document.querySelector('.hamburguer').addEventListener('click', () => {document.querySelector('.links-nav').classList.toggle('expandido');});
- 
Substitua os conteúdos da tag <script>emindex.astrocom a seguinte importação de arquivo:src/pages/index.astro <Rodape /><script>document.querySelector('.hamburguer').addEventListener('click', () => {document.querySelector('.links-nav').classList.toggle('expandido');});import "../scripts/menu.js";</script></body>
- 
Verifique a pré-visualização do seu navegador novamente em um tamanho de tela menor e verifique que o menu hambúrguer ainda abre e fecha seus links de navegação. 
- 
Adicione o mesmo <script>por importação para suas outras duas páginas,sobre.astroeblog.astroe verifique que você tem um cabeçalho responsivo e interativo em cada página.src/pages/sobre.astro & src/pages/blog.astro <Rodape /><script>import "../scripts/menu.js";</script></body>
Você tinha utilizado algum JavaScript anteriormente para construir partes do seu site:
- Definir o título da sua página e cabeçalho dinamicamente
- Mapear através de uma lista de habilidades na página Sobre
- Mostrar elementos HTML condicionalmente
Esses comandos são todos executados em tempo de build para criar HTML estático para seu site, e então o código é “jogado fora.”
O JavaScript e uma tag <script> é enviado para o navegador, e é disponível para execução, baseado na interação do usuário como atualizar a página ou alternar uma entrada.
Teste seu conhecimento
- 
Quando o Astro executa qualquer JavaScript escrito no frontmatter de um componente? 
- 
Opcionalmente, Astro pode enviar JavaScript para o navegador para permitir: 
- 
O JavaScript no lado do cliente será enviado ao navegador do usuário quando ele é escrito ou importado: 
Checklist
Recursos
Scripts no lado do cliente no Astro
Tutorials