12k
All articles

Como Usar o LocalStorage em JavaScript para Salvar e Recuperar Dados

É possível salvar e recuperar dados no navegador via LocalStorage, cobrindo métodos JSON, estratégias de cache, riscos de segurança e boas práticas.

OpenReplay Team
OpenReplay Team
Como Usar o LocalStorage em JavaScript para Salvar e Recuperar Dados

O LocalStorage permite que os desenvolvedores armazenem dados de chave-valor no navegador do usuário de forma persistente. É útil para armazenar preferências do usuário, armazenar em cache respostas de API e manter o estado da aplicação entre sessões.

Principais Pontos

  • O LocalStorage é um sistema simples de armazenamento chave-valor que mantém os dados mesmo após recarregar a página ou reiniciar o navegador.
  • Não deve ser usado para dados sensíveis devido a preocupações de segurança.
  • Útil para armazenar preferências do usuário e cache leve de respostas de API.
  • Opções alternativas incluem SessionStorage (temporário) e IndexedDB (para armazenamento de dados complexos ou em grande escala).

Entendendo o LocalStorage

O LocalStorage faz parte da API Web Storage e fornece métodos para armazenar, recuperar e remover dados:

localStorage.setItem('theme', 'dark'); // Armazenar dados
const theme = localStorage.getItem('theme'); // Recuperar dados
localStorage.removeItem('theme'); // Remover um item específico
localStorage.clear(); // Limpar todos os dados armazenados

O LocalStorage mantém os dados até que sejam explicitamente removidos. Os dados são armazenados como strings, então para objetos ou arrays, use JSON.stringify() e JSON.parse():

const settings = { theme: 'dark', fontSize: 16 };
localStorage.setItem('settings', JSON.stringify(settings));
const savedSettings = JSON.parse(localStorage.getItem('settings'));
console.log(savedSettings.theme); // ""dark""

Caso de Uso 1: Armazenando Preferências do Usuário

O LocalStorage é comumente usado para armazenar configurações de interface, como preferências de tema.

// Salvando preferência de tema
localStorage.setItem('theme', 'dark');

// Aplicando preferência armazenada ao carregar a página
const savedTheme = localStorage.getItem('theme');
if (savedTheme) applyTheme(savedTheme);

Caso de Uso 2: Armazenando em Cache Respostas de API

Armazenar em cache respostas de API reduz requisições de rede desnecessárias e melhora o desempenho.

const cacheKey = 'apiData';
const maxAge = 60 * 60 * 1000; // 1 hora

const cached = localStorage.getItem(cacheKey);
if (cached) {
    const { data, timestamp } = JSON.parse(cached);
    if (Date.now() - timestamp < maxAge) {
        renderData(data);
    } else {
        localStorage.removeItem(cacheKey);
    }
}

if (!localStorage.getItem(cacheKey)) {
    fetch('/api/data')
        .then(response => response.json())
        .then(data => {
            renderData(data);
            localStorage.setItem(cacheKey, JSON.stringify({ data, timestamp: Date.now() }));
        });
}

LocalStorage vs. Outras Opções de Armazenamento Web

  • SessionStorage: Mesma API que o LocalStorage, mas os dados são limpos quando a aba é fechada.
  • IndexedDB: Suporta armazenamento de dados em grande escala com consultas estruturadas, mas é mais complexo.
  • Cookies: Usados para armazenamento do lado do servidor, enviados automaticamente com requisições HTTP.

Limitações e Melhores Práticas

  • Riscos de Segurança: Os dados são acessíveis via JavaScript; não armazene informações sensíveis.
  • Limites de Armazenamento: Cerca de 5MB por origem; exceder isso lança um erro QuotaExceededError.
  • Acesso Síncrono: Leituras/escritas grandes podem bloquear a thread principal.
  • Sem Expiração Automática: Implemente a lógica de expiração manualmente, se necessário.
  • Use Namespacing: Prefixe as chaves para evitar conflitos (MyApp_theme em vez de theme).

Conclusão

O LocalStorage é uma ferramenta poderosa, porém simples, para persistir pequenas quantidades de dados do lado do cliente. É mais adequado para armazenar preferências do usuário e armazenar em cache respostas leves de API. No entanto, os desenvolvedores devem estar cientes de suas limitações de segurança e garantir o tratamento adequado dos dados para evitar problemas de desempenho.

Perguntas Frequentes

Os dados do LocalStorage expiram?

Não, os dados do LocalStorage persistem indefinidamente, a menos que sejam manualmente limpos.

Quanto de dados posso armazenar no LocalStorage?

Normalmente cerca de 5MB por origem, dependendo do navegador.

O LocalStorage é seguro para armazenar dados sensíveis?

Não, o LocalStorage é acessível por JavaScript e não deve ser usado para dados sensíveis.

Como o LocalStorage difere do SessionStorage?

O LocalStorage mantém os dados entre sessões, enquanto o SessionStorage limpa os dados quando a aba é fechada.

Devo usar LocalStorage ou IndexedDB?

Use LocalStorage para pequenos pares chave-valor; IndexedDB é melhor para armazenamento complexo ou em grande escala.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers

We use cookies to improve your experience. By using our site, you accept cookies.