Esta seção funciona como uma referência prática sobre armazenamento no navegador com localStorage e sessionStorage. O foco agora é entender como a aplicação pode lembrar dados entre recargas da página e como esse estado deve ser organizado de forma limpa.
Ao final deste guia, você deve conseguir:
localStorage de sessionStorage;JSON.stringify() e JSON.parse();Esta seção junta conteúdos que já apareceram antes na disciplina:
Em outras palavras: storage não substitui arrays, objetos e DOM. Ele complementa essas estruturas para que a página consiga lembrar o estado depois que for atualizada.
Web Storage é uma API do navegador que guarda pares de chave e valor no lado do cliente.
Isso permite salvar dados simples sem depender de banco de dados ou back-end.
Os dois tipos mais usados são estes:
localStorage: os dados continuam disponíveis mesmo depois de fechar a aba ou o navegador;sessionStorage: os dados existem apenas enquanto a sessão da aba continuar aberta.Pense assim:
localStorage é uma gaveta que continua no lugar depois da aula;sessionStorage é um papel de apoio que some quando a sala fecha.localStorage x sessionStorageOs dois usam praticamente a mesma API. A diferença principal está no tempo de vida dos dados.
localStoragesessionStorageRegra prática:
localStorage;sessionStorage.stringify() e parse(): o que é JSONJSON é um formato de texto usado para representar dados estruturados.
O nome vem de JavaScript Object Notation, mas ele não serve apenas para JavaScript. Em várias linguagens e ferramentas, JSON aparece como uma forma padronizada de organizar informações em texto.
Na prática, JSON aparece quando precisamos:
Exemplo de JSON:
{
"nome": "Ana",
"turma": "2AT",
"ativo": true
}
Esse texto representa uma estrutura com propriedades e valores. A ideia importante aqui é esta: o navegador consegue guardar texto no storage, então JSON entra como uma ponte entre o texto salvo e a estrutura JavaScript que usamos na memória.
Por isso, antes de pensar em JSON.stringify() e JSON.parse(), o mais importante é entender o papel do JSON: ele não é um método do storage, e sim um formato intermediário que ajuda a transportar ou armazenar dados estruturados.
Em resumo:
Quando o valor já é texto simples, como 'claro' ou 'Ana', ele pode ser salvo diretamente.
localStorage.setItem('tema', 'claro');
Mas, quando queremos guardar algo como um objeto ou um array de objetos, precisamos converter antes.
Exemplo de estrutura em memória:
const alunos = [
{ nome: 'Ana', turma: '2AT' },
{ nome: 'Bruno', turma: '2AT' }
];
Essa estrutura não deve ser salva diretamente. Primeiro ela precisa virar JSON.
JSON.stringify() e JSON.parse()JSON.stringify()Transforma um objeto ou array em texto JSON.
const json = JSON.stringify(alunos);
localStorage.setItem('cadastro-alunos', json);
JSON.parse()Lê o texto JSON e reconstrói a estrutura JavaScript.
const json = localStorage.getItem('cadastro-alunos');
let alunos = [];
if (json) {
alunos = JSON.parse(json);
}
Regra prática:
stringify() vai da memória para o storage;parse() volta do storage para a memória.setItem()Salva ou sobrescreve o valor de uma chave.
localStorage.setItem('tema', 'claro');
getItem()Lê o valor salvo na chave informada.
const tema = localStorage.getItem('tema');
Se a chave não existir, o retorno será null.
removeItem()Remove apenas uma chave específica.
localStorage.removeItem('tema');
clear()Apaga todas as chaves daquele storage.
localStorage.clear();
Em geral, clear() deve ser usado com cautela, porque ele remove tudo e não apenas o dado daquela funcionalidade.
localStorageEste é o ponto mais importante da seção.
Quando a aplicação trabalha com cadastro, o padrão esperado é este:
Exemplo do fluxo:
const STORAGE_KEY = 'cadastro-alunos';
let alunos = carregarAlunos();
function carregarAlunos() {
const json = localStorage.getItem(STORAGE_KEY);
if (!json) {
return [];
}
return JSON.parse(json);
}
function salvarAlunos() {
localStorage.setItem(STORAGE_KEY, JSON.stringify(alunos));
}
function cadastrarAluno(aluno) {
alunos.push(aluno);
salvarAlunos();
renderizarAlunos();
}
O que não deve virar hábito:
getItem() toda vez que o usuário clicar no botão de cadastrar;Regra prática para decorar:
Pasta: perfil-estudante
Este primeiro exercício trabalha com um único objeto salvo no localStorage, mas agora com uma proposta visual de cartão escolar com prévia em tempo real.
Ele é útil para introduzir três ideias:
Conceitos em foco:
select, range, color e checkbox);JSON.stringify();JSON.parse();removeItem() para limpar o perfil salvo.Pasta: cadastro-alunos
Este exercício mantém o padrão central da seção, mas em um cenário de conselho de classe: um array de objetos com três notas, média calculada e situação final.
Conceitos em foco:
getItem();setItem();Se o aluno entender bem esse exercício, ele já entendeu o coração do uso de localStorage em cadastros simples.
Pasta: agenda-contatos
Aqui a lista continua sendo a fonte principal da verdade, mas o exercício vira um mural com categorias e destaque de favoritos.
Conceitos em foco:
Pasta: inscricao-com-rascunho
Este exercício junta os dois tipos de storage:
localStorage guarda as inscrições confirmadas;sessionStorage guarda apenas o rascunho do formulário.Conceitos em foco:
checkbox e textarea;Os exercícios abaixo foram pensados para ter dificuldade próxima das provas de P1: o HTML e o CSS já estão prontos, o script.js possui funções com comentários de orientação, e o estudante precisa implementar validação, arrays, renderização, eventos e persistência.
Eles evitam repetir apenas o padrão simples de cadastro. Cada um trabalha um fluxo diferente e força uma decisão específica sobre o formato do estado que será salvo.
Pasta: mapa-sala
Foco principal:
A-1;Pasta: urna-prioridades
Foco principal:
Pasta: sessao-foco
Foco principal:
Date.now();Pasta: trilha-leitura
Foco principal:
Pasta: ranking-quiz
Foco principal:
Os materiais antigos do curso ainda podem ajudar como referência de raciocínio, mas não fazem parte desta nova série de exercícios.
Entre os exemplos anteriores, vale observar estes padrões:
localStorage;localStorage para um login didático e uma tela de perfil;localStorage com sessionStorage para trabalhar cadastro e rascunho.Eles são úteis como comparação histórica, mas a prática principal desta seção deve ficar concentrada nos exercícios de 05-local-storage.
getItem() pode retornar null;JSON.stringify();JSON.parse() sem verificar se existe valor salvo;localStorage como solução segura para credenciais ou dados sensíveis.perfil-estudante, cadastro-alunos e rascunho-inscricao;sessionStorage quando o dado for temporário.As ideias centrais desta seção são estas:
localStorage persiste por mais tempo;sessionStorage dura apenas na sessão atual;