SvelteKit Remote Functions: Bölüm 1

SvelteKit, verileri işlemek için yeni bir yöntem test ediyor. Buna Remote Functions deniyor. Bu özellik, istemci (client) ve sunucunun (server) birbirleriyle kolayca iletişim kurmasını sağlar.

Remote Functions Nedir?

Remote Functions, SvelteKit uygulamanızın herhangi bir yerinden sunucu tarafı mantığını (logic) çağırmanıza olanak tanır. Onları istemciden çağırsanız bile kod sunucuda çalışır. Bu, veritabanlarına veya özel ortam değişkenlerine (environment variables) güvenli bir şekilde erişebileceğiniz anlamına gelir.

Nasıl etkinleştirilir

svelte.config.js dosyanızda deneysel modu açmanız gerekir:

const config = {
    kit: {
        experimental: {
            remoteFunctions: true
        }
    },
    compilerOptions: {
        experimental: {
            async: true
        }
    }
};

export default config;

Sorgularla Çalışmak

.remote.js veya .remote.ts uzantılı dosyalar kullanarak uzaktan fonksiyonlar oluşturabilirsiniz. Dört tür vardır:

  • query (veri çekmek için kullanılır)
  • form
  • command
  • prerender

query fonksiyonu bir HTTP GET isteği gibi çalışır. Onu Svelte bileşenlerinize (components) içe aktarabilir ve verilerinizi almak için await kullanabilirsiniz.

Bir uzaktan sorgu örneği:

import { query } from '$app/server';
import * as db from '$lib/server/database';

export const getPosts = query(async () => {
    const posts = await db.sql`SELECT title, slug FROM post`;
    return posts;
});

Bileşeninizde şu şekilde kullanırsınız:

{#each await getPosts() as { title, slug }}
    <li>{title}</li>
{/each}

Durum Yönetimi

query fonksiyonu, kullanıcı arayüzünüzü (UI) yönetmek için üç yararlı özellik sunar:

  • loading: Veri çekilirken true olur.
  • error: İstek başarısız olursa true olur.
  • current: Başarılı veriyi tutar.

Akıllı Özellikler

  1. Doğrulama (Validation): Sorgunuza iletilen argümanları doğrulamak için Zod veya Valibot gibi kütüphaneler kullanabilirsiniz. Bu, sunucunuzu güvende tutar.

  2. Veri İşleme: SvelteKit, veri göndermek için devalue kullanır. Bu, standart JSON'un kolayca yapamadığı Date ve Map gibi karmaşık türleri destekler.

  3. Tekilleştirme (Deduplication): Aynı sorguyu aynı argümanlarla birden fazla kez çağırırsanız, SvelteKit bunu yalnızca bir kez çalıştırır. Bu, fazladan veritabanı yükünü önler.

  4. Yenileme (Refreshing): Sunucudan anında en güncel verileri çekmek için bir sorgu üzerinde .refresh() metodunu çağırabilirsiniz.

Not: Bu özellikler deneyseldir. Sözdizimi (syntax) gelecekteki güncellemelerde değişebilir.

Kaynak: https://dev.to/nnutnonn/sveltekit-kaarthamngaankab-remote-function-part-1-4hg4