Onde colocar JavaScript
Já sabe que JavaScript acrescenta comportamento. A pergunta seguinte é prática: onde o código vive para o browser o encontrar, e para os elementos que quer alterar já existirem?
Onde você deve colocar JavaScript numa página HTML?
Coloque JavaScript num elemento <script> — embutido entre as tags ou externo com src a apontar para um ficheiro .js. No trabalho diário de iniciantes que tocam na página, ponha o script mesmo antes de </body> para o HTML acima estar pronto. Quando o código crescer, passe-o para um ficheiro externo e mantenha o hábito do fim do body (mais tarde verá defer).
Três opções de local à primeira vista
📊 Onde o JavaScript pode viver
| Opção | Onde fica | Melhor uso para iniciantes |
|---|---|---|
| Embutido no head | <script> dentro de <head> |
Só configuração mínima; arriscado se os elementos ainda não existem |
| Embutido no fim do body | <script> logo antes de </body> |
Predefinição para demos curtas que mudam título ou texto |
Ficheiro .js externo |
<script src="app.js"> (muitas vezes fim do body) |
Predefinição quando a lógica cresce ou reutiliza o ficheiro |
Script no head (conheça e use com cuidado)
Um script no head corre cedo, enquanto o browser ainda lê o documento. Pode atrasar conteúdo visível. Se o código procura de imediato um elemento com getElementById, ele pode ainda não existir — resultado null ou erro.
<!DOCTYPE html>
<html>
<head>
<title>Where To — Head</title>
<script>
console.log("Head script ran early");
</script>
</head>
<body>
<h1>Content comes after the head script</h1>
</body>
</html>
Quando um script no head serve
- Registar uma mensagem ou definir um valor simples sem DOM
- Carregar uma biblioteca com atributos modernos (
defer/asyncvêm depois) - Não é a sua predefinição para demos «mude este parágrafo» neste curso
Script no fim do body (predefinição para iniciantes)
Primeiro o markup de que os visitantes precisam. Depois execute o script. Elementos com id acima do script já estão no documento quando as instruções correm.
<!DOCTYPE html>
<html>
<head>
<title>Where To — Body End</title>
</head>
<body>
<h1 id="title">Loading…</h1>
<p>HTML arrives first; then the script updates the heading.</p>
<script>
document.getElementById("title").textContent =
"Ready — script ran at the end of body";
</script>
</body>
</html>
Porque este hábito ajuda
- O título e o parágrafo podem aparecer antes do trabalho do script terminar
getElementById("title")encontra um nó real- Demos curtas ficam num só ficheiro enquanto aprende a linguagem
- Depois move as mesmas instruções para um ficheiro externo sem mudar a ideia
Ficheiro JavaScript externo (predefinição de projeto)
Mantenha a estrutura no HTML e a lógica em app.js. Aponte com src. Os caminhos são relativos ao HTML salvo se usar uma pasta.
<!DOCTYPE html>
<html>
<head>
<title>Where To — External</title>
</head>
<body>
<h1 id="title">Loading…</h1>
<script src="app.js"></script>
</body>
</html>
document.getElementById("title").textContent =
"Loaded from app.js";
Porque o externo ganha ao crescer
- Um
.jspode servir várias páginas - Os editores destacam melhor JavaScript no próprio ficheiro
- Evita blocos
<script>enormes no markup - Um caminho
srcerrado falha em silêncio — veja Console e Network se nada correr
A ordem importa
O browser lê de cima para baixo. Um script corre quando o analisador o alcança (salvo atributos avançados mais tarde). Se a linha 1 precisa de #title, esse elemento deve aparecer acima do script no HTML, ou espera o documento terminar. O fim do body é a forma simples de acertar essa ordem.
Experimente você
- Crie
where.htmlcom o exemplo do fim do body. Abra e confirme a atualização do título. - Altere a string de
textContent, guarde e atualize. - Crie
app.jscom o JavaScript do exemplo externo. Emwhere.html, carregue só<script src="app.js"></script>antes de</body>. - Renomeie temporariamente
app.jsou quebre o caminhosrc, atualize e veja a Console — depois corrija o caminho. - Opcional: mova o mesmo script para o head (sem
defer) e veja quegetElementByIdpode falhar; depois volte ao fim do body.
Erros comuns
- Pôr no head um script que atualiza o DOM para
getElementByIdcorrer antes do elemento existir - Ligar
<script src="app.js">com typo ou pasta errada — a página parece bem mas nada corre - Deixar centenas de linhas embutidas em cada HTML em vez de um
.jspartilhado - Confundir esta lição com a ligação de CSS: estilos usam
<link>/<style>; comportamento usa<script>
Resumo
- JavaScript vive num
<script>— embutido ou viasrcpara um ficheiro.js - O fim do body é a predefinição amigável quando o código toca elementos da página
- Scripts no head correm cedo; evite atualizar o DOM aí até conhecer atributos de carregamento
- Ficheiros externos são a predefinição de projeto quando as demos crescem
- A ordem do script segue a do documento salvo opções avançadas mais tarde
- Pratique separando uma demo embutida que funciona em HTML +
app.js
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo