Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Web Geliştirmede `localStorage` ile Tarayıcıda Veri Saklama Rehberi 💾

asteron

Üye
Katılım
14 Mart 2026
Mesajlar
9
Web Geliştirmede `localStorage` ile Tarayıcıda Veri Saklama Rehberi 💾

Selam dostlar! Uzun zamandır forumda takılıyorum ve sıkça karşılaştığım bir konuya değinmek istedim: "Kullanıcı tercihlerini veya basit verileri nasıl saklarız?" Tabii ki her şey için bir sunucu veritabanı kullanmak her zaman doğru değil. İşte tam bu noktada, localStorage imdadımıza yetişiyor. Bugün, bu basit ama güçlü Web API'sini birlikte inceleyeceğiz. 🚀

localStorage Nedir? Ne İşe Yarar?

Basitçe söylemek gerekirse, `localStorage` tarayıcınızda (istemci tarafında) anahtar-değer (key-value) çiftleri şeklinde veri saklamanızı sağlayan bir depolama alanıdır. Bu veriler:

  • Sayfayı yenilediğinizde veya tarayıcıyı kapattığınızda kaybolmaz.
  • Aynı web sitesine farklı bir sekmeden girdiğinizde erişilebilir.
  • Sunucuya gönderilmez, tamamen sizin bilgisayarınızda kalır.
  • Yaklaşık 5-10 MB arasında bir depolama sınırı vardır (tarayıcıya göre değişir).

Kullanım Alanları: Kullanıcı teması tercihi (açık/koyu mod), basit form verilerini geçici saklama, alışveriş sepeti içeriği (oturum bazlı değilse) veya küçük oyun kayıtları gibi senaryolarda harikadır. Ancak şifre, kredi kartı bilgisi gibi hassas verileri ASLA saklamamalısınız! ⚠️

localStorage Nasıl Kullanılır? (Metotlar ve Örnekler)

Kullanımı son derece basittir. Sadece 4 temel metodu var. Hadi bir kullanıcının tercih ettiği dili saklayalım.

  • Veri Kaydetmek (.setItem()):
    `localStorage.setItem('anahtar', 'deger');`
    Örnek: `localStorage.setItem('tercihEdilenDil', 'tr');`
    Bu, `tercihEdilenDil` anahtarına `tr` değerini kaydeder.

  • Veri Okumak (.getItem()):
    `const deger = localStorage.getItem('anahtar');`
    Örnek: `const dil = localStorage.getItem('tercihEdilenDil');`
    `console.log(dil); // "tr" yazdırır. Eğer anahtar yoksa `null` döner.

  • Belirli Bir Veriyi Silmek (.removeItem()):
    `localStorage.removeItem('anahtar');`
    Örnek: `localStorage.removeItem('tercihEdilenDil');`
    Artık bu anahtarla ilişkili veri silinir.

  • Tüm Verileri Temizlemek (.clear()):
    `localStorage.clear();`
    Dikkat! Bu, o alan adı için kaydettiğiniz tüm verileri siler. Kullanırken iki kere düşünün. 🧹

JSON ile Nesne ve Dizi Saklama

`localStorage` sadece string veri tipini saklayabilir. Peki ya bir nesne (object) veya dizi (array) saklamak istersek? İşte burada JSON devreye giriyor.

  • Nesneyi Saklama: Nesneyi JSON string'ine çevirip kaydederiz.
    Kod:
    const kullaniciAyarlari = { tema: 'koyu', bildirim: true, dil: 'tr' };
    localStorage.setItem('ayarlar', JSON.stringify(kullaniciAyarlari));
  • Nesneyi Okuma: String'i geri nesneye çeviririz.
    Kod:
    const kayitliAyarlar = localStorage.getItem('ayarlar');
    if (kayitliAyarlar) {
      const ayarlarNesnesi = JSON.parse(kayitliAyarlar);
      console.log(ayarlarNesnesi.tema); // "koyu"
    }

Dikkat Edilmesi Gerekenler ve Sınırlamalar

  • Güvenlik: Tekrar söylüyorum, hassas veri saklamayın. Verilere tarayıcı geliştirici araçlarından (Application sekmesi) kolayca erişilebilir.
  • Senkron Çalışır: localStorage işlemleri senkron (sıralı) çalışır. Çok büyük verilerle uğraşıyorsanız ana iş parçacığını (main thread) bloklayabilir. Bu durumda IndexedDB gibi asenkron çözümler düşünülmelidir.
  • String Depolama: Her şey string'e dönüştürülür. Sayı saklasanız bile, okuduğunuzda string olarak gelir. Dönüşümü manuel yapmanız gerekebilir.
  • Private/Incognito Mod: Bazı tarayıcılarda gizli modda, sayfa kapandığında localStorage temizlenebilir. Buna güvenerek kritik mantık kurmayın.

Pratik Bir Örnek: Koyu/Açık Tema Değiştirici

Hadi basit bir tema değiştirici yapalım ve localStorage ile kullanıcı tercihini hatırlatalım. ⚙️

Kod:
// HTML: <button id="temaDegistir">Temayı Değiştir</button>

const temaButonu = document.getElementById('temaDegistir');
const body = document.body;

// Sayfa yüklendiğinde kayıtlı temayı kontrol et
const kayitliTema = localStorage.getItem('siteTemasi');
if (kayitliTema === 'koyu') {
  body.classList.add('koyu-tema');
}

// Butona tıklanınca temayı değiştir ve kaydet
temaButonu.addEventListener('click', () => {
  body.classList.toggle('koyu-tema');

  if (body.classList.contains('koyu-tema')) {
    localStorage.setItem('siteTemasi', 'koyu');
  } else {
    localStorage.setItem('siteTemasi', 'acik');
  }
});

Ve tabii ki CSS'imizde `.koyu-tema` sınıfı arka plan ve yazı rengini değiştirecek.

Sonuç

`localStorage`, kullanıcı deneyimini kişiselleştirmek ve basit durum bilgilerini saklamak için mükemmel bir araçtır. Kullanımı kolay, hafif ve tarayıcı desteği çok yüksektir. 💻

Ancak her teknolojide olduğu gibi, onun sınırlarını ve güvenlik risklerini bilmek önemlidir. Küçük, hassas olmayan veriler için harika, büyük veya gizli veriler için ise uygun değildir.

Umarım bu rehber işinize yarar. Takıldığınız bir yer olursa yorumlarda konuşalım! Bir sonraki yazıda görüşmek üzere, kodlamaya devam! 👨‍💻👩‍💻
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri