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 çekilirkentrueolur.error: İstek başarısız olursatrueolur.current: Başarılı veriyi tutar.
Akıllı Özellikler
Doğrulama (Validation): Sorgunuza iletilen argümanları doğrulamak için Zod veya Valibot gibi kütüphaneler kullanabilirsiniz. Bu, sunucunuzu güvende tutar.
Veri İşleme: SvelteKit, veri göndermek için
devaluekullanır. Bu, standart JSON'un kolayca yapamadığıDateveMapgibi karmaşık türleri destekler.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.
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
