Takip et

Svelte 3 ile Başlangıç: Reaktif Web Uygulamaları Geliştirmenin Yeni Yolu

Svelte 3 ile Başlangıç: Reaktif Web Uygulamaları Geliştirmenin Yeni Yolu Giriş Web geliştirme dünyası, son on yılda inanılmaz bir hızla

Svelte 3 ile Başlangıç: Reaktif Web Uygulamaları Geliştirmenin Yeni Yolu

Giriş

Web geliştirme dünyası, son on yılda inanılmaz bir hızla evrildi. Kullanıcı deneyimini zenginleştiren, performansı artıran ve geliştirici verimliliğini maksimize eden yeni araçlar ve framework’ler sürekli olarak ortaya çıkıyor. React, Angular ve Vue.js gibi popüler framework’ler, modern web uygulamalarının temelini oluşturarak bileşen tabanlı mimariler ve reaktif programlama paradigmalarını yaygınlaştırdı. Ancak bu framework’ler, genellikle çalışma zamanında (runtime) büyük bir kod yükü getirerek ve Virtual DOM gibi soyutlama katmanları kullanarak belirli performans maliyetleri yaratabiliyorlardı. İşte tam bu noktada, geleneksel yaklaşımlardan farklılaşan ve “kaybolan framework” felsefesiyle öne çıkan Svelte, sahneye çıktı.

Svelte, web geliştirme dünyasına taze bir soluk getirerek, geliştiricilerin daha küçük, daha hızlı ve daha etkili web uygulamaları oluşturmalarını vaat ediyor. Diğer framework’lerin aksine, Svelte bir runtime framework değil, bir derleyici (compiler). Geliştirme zamanında yazdığınız Svelte kodunu, tarayıcı tarafından doğrudan anlaşılabilecek, bağımsız ve optimize edilmiş JavaScript koduna dönüştürüyor. Bu yaklaşım, uygulama boyutunu küçültürken, çalışma zamanı performansını önemli ölçüde artırıyor. Bu makalede, Svelte 3’ün ne olduğunu, temel özelliklerini, nasıl çalıştığını ve sıfırdan bir Svelte uygulaması geliştirmek için atılması gereken adımları detaylı bir şekilde inceleyeceğiz. Ayrıca, Svelte ekosistemine genel bir bakış sunarak, bu yenilikçi teknolojinin neden modern web geliştiricileri için cazip bir seçenek olduğunu anlamaya çalışacağız.

Svelte Nedir?

Svelte, Rich Harris tarafından geliştirilen, web uygulamaları oluşturmak için kullanılan radikal derecede farklı bir yaklaşıma sahip bir JavaScript framework’üdür. Geleneksel framework’lerin çoğu (React, Vue, Angular gibi), tarayıcıda çalışan bir çalışma zamanı (runtime) kodu içerir. Bu runtime, uygulamanın durumunu yönetir, bileşenleri günceller ve DOM manipülasyonlarını gerçekleştirir. Bu durum, uygulamanın tarayıcıya gönderilen nihai boyutunu artırır ve çalışma zamanında ek bir performans yükü oluşturur.

Svelte ise bu paradigmaya meydan okur. Kendini “kaybolan framework” olarak tanımlar çünkü geliştirme zamanında yazdığınız Svelte bileşenlerini, üretim ortamı için derlenmiş, Vanilla JavaScript koduna dönüştürür. Bu, uygulamanız tarayıcıya ulaştığında, Svelte’in kendisinden eser kalmadığı anlamına gelir. Tarayıcıya yalnızca uygulamanızın kendisi için gereken kod gönderilir.

Bu derleyici yaklaşımının birkaç önemli avantajı vardır:

* Küçük Bundle Boyutu: Uygulamanıza dahil edilen bir runtime framework’ü olmadığı için, Svelte ile oluşturulan uygulamaların nihai bundle boyutları genellikle diğer framework’lere göre çok daha küçüktür. Bu, özellikle mobil cihazlarda veya yavaş internet bağlantılarında daha hızlı yükleme süreleri sağlar.
* Yüksek Performans: Svelte, Virtual DOM kullanmaz. Bunun yerine, uygulamanızın durumu değiştiğinde, doğrudan ve cerrahi bir hassasiyetle yalnızca ilgili DOM düğümlerini güncelleyen optimize edilmiş JavaScript kodu üretir. Bu, Virtual DOM diffing (fark bulma) algoritmalarının getirdiği ek yükü ortadan kaldırarak daha hızlı ve verimli güncellemeler sağlar.
* Gerçek Reaktivite: Svelte, değişken atamalarını doğrudan reaktif hale getirir. Diğer framework’lerde setState çağırmak veya ref kullanmak gibi özel yöntemlere ihtiyaç duyarken, Svelte’de bir değişkenin değerini değiştirmek, otomatik olarak bu değişkeni kullanan arayüzün güncellenmesini tetikler. Bu, daha sezgisel ve daha az boilerplate kodla reaktif uygulamalar yazmayı mümkün kılar.
* Öğrenme Kolaylığı: Svelte’in sözdizimi, HTML, CSS ve JavaScript’e oldukça yakındır. Karmaşık API’ler veya soyut kavramlar yerine, web standartlarına dayalı basit bir yaklaşıma sahiptir. Bu, özellikle yeni başlayanlar veya diğer framework’lerden geçiş yapan geliştiriciler için öğrenme eğrisini önemli ölçüde azaltır.

Özetle, Svelte, web geliştirme sürecini basitleştirmeyi, uygulamaların performansını artırmayı ve geliştirici deneyimini iyileştirmeyi hedefleyen yenilikçi bir araçtır. Bir framework’ten ziyade bir derleyici olması, onu modern web geliştirme araçları arasında benzersiz bir konuma yerleştirir.

Svelte 3’ün Temel Özellikleri ve Avantajları

Svelte 3, geliştirici verimliliğini ve uygulama performansını ön planda tutan bir dizi güçlü özellikle birlikte gelir. Bu özellikler, Svelte’i diğer modern framework’lerden ayıran temel unsurlardır.

Reaktivite (Reactivity)

Svelte’in en çarpıcı özelliklerinden biri, reaktiviteyi ele alış biçimidir. Diğer framework’lerde reaktiviteyi sağlamak için genellikle özel fonksiyonlar (useState veya data() gibi) veya nesne gözlemleyicileri gerekirken, Svelte’de reaktivite, basit değişken atamalarıyla elde edilir. Bir değişkenin değeri değiştiğinde, Svelte derleyicisi bu değişikliği izler ve DOM’da ilgili yerleri otomatik olarak günceller.

Örnek:



Ayrıca, Svelte reaktif ifadeler için özel bir etiket ($:) sunar. Bu etiket, bir değişkenin başka bir değişkene bağımlı olduğu durumlarda kullanılır ve bağımlı değişken değiştiğinde otomatik olarak yeniden hesaplanır.

Örnek:



Tam Ad: {fullName}

Bileşen Tabanlı Mimari (Component-Based Architecture)

Svelte de diğer modern framework’ler gibi bileşen tabanlı bir mimariyi benimser. Uygulamalar, küçük, bağımsız ve yeniden kullanılabilir bileşenlerden oluşur. Her Svelte bileşeni, .svelte uzantılı tek bir dosyada HTML, CSS ve JavaScript’i bir araya getirir. Bu, kodun okunabilirliğini ve yönetilebilirliğini artırır.

Bir .svelte dosyası genellikle üç ana bloktan oluşur:
*

Animasyonlar ve Geçişler (Animations & Transitions)

Svelte, kullanıcı arayüzüne akıcılık katmak için güçlü ve kullanımı kolay animasyon ve geçiş API'leri sunar. Bir elemanın DOM'a giriş veya çıkışında uygulanan geçişler (transition:fade, transition:slide, transition:fly, transition:scale, transition:draw, transition:crossfade) veya elemanlar arasındaki konum değişikliklerini canlandıran animasyonlar (animate:flip) ile zengin kullanıcı deneyimleri oluşturulabilir. Bu özellikler, doğrudan HTML elemanlarına direktif olarak eklenir ve oldukça sezgiseldir.

Örnek:





{#if visible}
  

Merhaba Dünya!

{/if}

Eylem Yöneticileri (Actions)

Svelte'deki eylem yöneticileri (actions), HTML elemanlarına özel davranışlar eklemek için kullanılan güçlü bir mekanizmadır. use:actionName sözdizimiyle bir elemana bağlanır ve elemanın yaşam döngüsü boyunca (oluşturulduğunda, güncellendiğinde, yok edildiğinde) belirli kodların çalıştırılmasını sağlar. Bu, yeniden kullanılabilir etkileşimler veya üçüncü taraf kütüphaneleri entegre etmek için idealdir.

Örnek:



alert('Dışarı tıklandı!')}> Bu kutuya tıklayın, dışına tıklayın.

Modülerlik ve Yeniden Kullanılabilirlik

Svelte, bileşenleri ve JavaScript modüllerini kolayca içe ve dışa aktarma yeteneği sayesinde doğal olarak modülerliği teşvik eder. Bu, kodun düzenli kalmasını, bakımının kolay olmasını ve farklı projelerde yeniden kullanılabilir olmasını sağlar.

Geliştirici Deneyimi (Developer Experience - DX)

Svelte'in en büyük avantajlarından biri, sunduğu mükemmel geliştirici deneyimidir.
* Basit Sözdizimi: Web standartlarına yakın sözdizimi, Svelte'i öğrenmesi ve okuması kolay hale getirir.
* Az Boilerplate Kodu: Reaktivite ve bileşen yapısı, diğer framework'lere kıyasla çok daha az "boilerplate" kodu yazmayı gerektirir. Bu, daha hızlı geliştirme ve daha az hata anlamına gelir.
* Hızlı Geri Bildirim Döngüsü: Derleyici tabanlı yapısı sayesinde, değişiklikler anında derlenir ve tarayıcıda yansır, bu da hızlı bir geliştirme döngüsü sağlar.

Bu özellikler bir araya geldiğinde, Svelte 3'ü hem performans odaklı hem de geliştirici dostu modern web uygulamaları oluşturmak için oldukça çekici bir seçenek haline getirir.

Svelte 3 ile İlk Adımlar

Svelte ile bir web uygulaması geliştirmeye başlamak oldukça basittir. İşte adım adım bir Svelte projesi oluşturma ve temel bileşenleri kullanma kılavuzu.

Geliştirme Ortamını Kurma

Svelte projesi oluşturmak için öncelikle Node.js'in sisteminizde kurulu olması gerekir. Node.js ile birlikte npm (Node Package Manager) veya yarn gelir.

1. Node.js Kurulumu: Eğer Node.js yüklü değilse, resmi web sitesinden (nodejs.org) indirip kurun. Kurulumdan sonra terminalinizde node -v ve npm -v komutlarını çalıştırarak kurulumu doğrulayabilirsiniz.

2. Yeni Svelte Projesi Oluşturma: Svelte ekibi, projeleri hızlıca başlatmak için degit adlı hafif bir araç kullanmanızı önerir.
Terminalinizde aşağıdaki komutu çalıştırın:

npx degit sveltejs/template my-svelte-app
    cd my-svelte-app
    npm install
    npm run dev

* npx degit sveltejs/template my-svelte-app: Bu komut, Svelte'in resmi şablonunu my-svelte-app adında yeni bir dizine klonlar.
* cd my-svelte-app: Oluşturulan proje dizinine geçiş yapar.
* npm install: Proje bağımlılıklarını yükler.
* npm run dev: Geliştirme sunucusunu başlatır. Uygulamanız genellikle http://localhost:5000 adresinde çalışmaya başlar ve kodunuzda yaptığınız değişiklikler anında tarayıcıya yansır (hot-reloading).

3. Proje Yapısı: Yeni oluşturulan Svelte projesinin temel yapısı şöyledir:
* public/: Derlenmiş HTML, CSS ve JS dosyalarının bulunduğu dizin. Uygulamanızın tarayıcıya sunulan kısmıdır.
* src/: Svelte bileşenlerinizin ve uygulamanızın kaynak kodunun bulunduğu dizin.
* App.svelte: Ana bileşeniniz.
* main.js: Svelte uygulamanızı başlatan ve App.svelte bileşenini DOM'a bağlayan JavaScript dosyası.
* package.json: Projenizin meta verilerini ve bağımlılıklarını içerir.

Temel Bir Svelte Bileşeni Oluşturma

App.svelte dosyasını açarak temel bir Svelte bileşeninin nasıl göründüğünü inceleyelim:




Svelte'e hoş geldiniz.

Bu örnekte:
*

Girdiğiniz Metin: {text}

Koşullu Render Etme (Conditional Rendering)

Belirli koşullara bağlı olarak arayüzün farklı kısımlarını göstermek için {#if} bloklarını kullanırız.

Örnek:





{#if loggedIn}
  

Hoş geldiniz, kullanıcı!

{:else}

Giriş yapmalısınız.

{/if}

Döngüler (Loops)

Bir dizi veya koleksiyon üzerindeki elemanları listelemek için {#each} bloklarını kullanırız.

Örnek:



    {#each items as item, index (item)}
  • {index + 1}: {item}
  • {/each}

key kullanımı (örnekte (item)), Svelte'in liste elemanlarını daha verimli bir şekilde izlemesine ve güncellemesine olanak tanır. Genellikle, listenizdeki her öğe için benzersiz bir kimlik (ID) kullanılması önerilir.

Olay Yönetimi (Event Handling)

HTML elemanlarındaki olayları dinlemek için on:eventname sözdizimini kullanırız.

Örnek:




Svelte, olay değiştiriciler (event modifiers) de sunar: on:click|once, on:keydown|enter, on:submit|preventDefault gibi.

Prop'lar ile Bileşenler Arası İletişim

Üst bileşenlerden alt bileşenlere veri aktarmak için "prop"ları kullanırız. Alt bileşende, export let kullanarak bir prop tanımlanır.

Örnek:




Merhaba, {name}!




 

Slot'lar ile İçerik Dağıtımı

Slot'lar, bir bileşenin çocuk elemanlarını veya içeriğini nasıl render edeceğini belirtmek için kullanılır. Bu, yeniden kullanılabilir bileşenlerin daha esnek olmasını sağlar.

Örnek:


Varsayılan Başlık
Varsayılan İçerik




  

Özel Kart Başlığı

Bu, kartın ana içeriğidir.

İkinci kartın sadece varsayılan içeriği.

Bu temel adımlar ve örnekler, Svelte ile uygulama geliştirmeye başlamak için sağlam bir temel sunar. Svelte'in basitliği ve doğrudanlığı sayesinde, bu kavramları hızla kavrayarak daha karmaşık uygulamalar oluşturmaya başlayabilirsiniz.

İleri Svelte Konuları ve En İyi Uygulamalar

Svelte'in temel özelliklerini anladıktan sonra, daha büyük ve daha karmaşık uygulamalar geliştirmek için bilmeniz gereken bazı ileri konular ve en iyi uygulamalar bulunmaktadır.

SvelteKit

SvelteKit, Svelte için geliştirilmiş, tam teşekküllü bir web framework'üdür. Svelte'in temel gücünü altyapı olarak kullanır ve üzerine yönlendirme (routing), sunucu tarafı render (SSR), statik site oluşturma (SSG), API endpointleri, veri yükleme ve daha fazlasını ekler. Geliştirme sürecini büyük ölçüde basitleştirir ve performansı optimize eder.

* Server-Side Rendering (SSR): Uygulamanın sunucuda render edilerek tarayıcıya gönderilmesini sağlar. Bu, ilk yükleme hızını artırır ve SEO için faydalıdır.
* Static Site Generation (SSG): Uygulamanın derleme zamanında statik HTML, CSS ve JavaScript dosyalarına dönüştürülmesini sağlar. Bu dosyalar CDN'lerden servis edilebilir, bu da inanılmaz hızlı yükleme süreleri ve düşük sunucu maliyetleri anlamına gelir.
* API Endpointleri: Kendi API'lerinizi doğrudan SvelteKit projenizin içinde oluşturmanıza olanak tanır, bu da tam yığın (full-stack) uygulamalar geliştirmeyi kolaylaştırır.
* Yönlendirme: Dosya tabanlı yönlendirme sistemi sayesinde, yeni sayfalar oluşturmak için sadece src/routes dizininde bir .svelte dosyası oluşturmanız yeterlidir.

SvelteKit, modern web uygulamalarının tüm gereksinimlerini karşılamak üzere tasarlanmıştır ve Svelte ile ciddi projeler geliştirmek isteyen herkes için varsayılan seçenektir.

Durum Yönetimi İçin Mağazaların Detaylı Kullanımı

Svelte'in dahili mağazaları (stores), basit durum yönetimi için mükemmeldir. Ancak, daha karmaşık senaryolarda özel mağazalar (custom stores) oluşturarak daha fazla kontrol sağlayabilirsiniz. Özel mağazalar, writable veya readable mağazaları saran ve belirli iş mantığını içeren fonksiyonlardır.

Örnek bir özel mağaza:

// stopwatch.js
import { writable } from 'svelte/store';

export function createStopwatch() {
  const { subscribe, set, update } = writable(0);
  let interval;

  function start() {
    interval = setInterval(() => {
      update(n => n + 1);
    }, 1000);
  }

  function stop() {
    clearInterval(interval);
  }

  function reset() {
    stop();
    set(0);
  }

  return {
    subscribe,
    start,
    stop,
    reset
  };
}

Bu mağaza, bir kronometre işlevselliği sunar ve bileşenler bu mağazayı içe aktarıp $stopwatch ile değerine erişebilir, start(), stop(), reset() metodlarını çağırabilir.

Erişilebilirlik (Accessibility - A11y)

Svelte, varsayılan olarak erişilebilirlik dostu uygulamalar oluşturmaya yardımcı olur. Ancak, geliştiricinin de bu konuda dikkatli olması gerekir.
* Semantik HTML: Doğru HTML etiketlerini kullanmak (örn.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.