Modül yazmak
Modül, bir manifest taşıyan bir klasördür.
my-module/
module.json bu modülün neler eklediği
pages/ herkese açık sayfalar
pages/admin/ yönetim ekranları
api/ /api/v1/ altındaki endpoint'ler
components/ React bileşenleri
lib/ bu modülün kendi kodu
schema.prisma bu modülün kendi tabloları
migrations/ numaralı SQL, yalnızca ileri
seed.ts isteğe bağlı demo verisi
Buradaki hiçbir şey taranarak keşfedilmez. Manifest her sayfayı, her endpoint'i ve her ekranı adıyla bildirir; platformun bir operatöre kurmadan önce modülün tam olarak ne yapacağını söyleyebilmesinin sebebi budur.
Çekirdeğe ulaşmak
SDK üzerinden import et; SDK kodun nerede çalıştığına göre bölünmüştür:
| İçe aktarım | Ne için |
| --- | --- |
| @/core/sdk | İki tarafta da çalışan her şey |
| @/core/sdk/server | Veritabanı, dosya sistemi, istek başlıkları |
| @/core/sdk/ui | Bileşenler, hook'lar, sayfalayıcı, dialog'lar |
| @/core/sdk/auth | Oturum ve izinler |
| @/core/sdk/navigation | Dili koruyan bağlantılar ve yönlendirmeler |
| @/core/sdk/layout | Her açık sayfanın kurulduğu sayfa çerçevesi |
SDK'nın ötesine, çekirdeğin içine uzanmak üç kez birden reddedilir: modül doğrulayıcı, marketplace derlemesi ve linter tarafından. Platform yükseltmesinin bir modülü sessizce bozamamasının bütün sebebi budur - modülün dokunmasına izin verilen yüzey, sürüm numarası taşıyan yüzeydir.
Runtime'a göre bölünme de bürokrasi değil. @/core/sdk tarayıcı bundle'ından
import edilebilir kalmak zorunda; o yüzden veritabanına ya da bir Node
builtin'ine dokunan her şey /server altında yaşar, ve yanlışını import eden
bir client component, veritabanı istemcisini ziyaretçiye göndermek yerine
derlemeyi patlatır.
İlk commit'ten önce bilinmeye değer kurallar
Kullanıcının gördüğü her metin çevrilir. İstemcide useTranslations(),
sunucuda getTranslations(), ve metinlerin kendisi manifestin translations
bloğunda her dilde bildirilir.
Dışarıdan gelen her girdi doğrulanır. Bir query parametresi, bir istek gövdesi, bir webhook payload'ı. Platform Zod ile gelir ve her sınırda kullanır.
Büyüyebilen her liste sayfalanır. Endpoint'in ne döndürdüyse onu çizen bir modülde, tam olarak kısa bir liste gibi görünen bir hata vardır.
Hata fırlatan bir hook sayfayı düşüremez. Modül hook'ları bir hata sınırı içinde çalışır; sanki o sınır yokmuş gibi yaz, ama yine de seni yakalamasına izin ver.
Sürümler
coreVersion'ı bir aralık olarak bildir. Yayımladığında kendi sürümünü artır:
düzeltme için patch, ekleme için minor, bağımlı bir modülün güvendiği bir şeyin
şekli değiştiyse major.
Kontrol etmek
npm run validate:module -- my-module
npm run typecheck:modules
Birincisi manifesti, SDK sınırını, dosya referanslarını ve route bildirimlerini kontrol eder. İkincisi modülünü birleştirilmiş veritabanı istemcisine karşı tip kontrolünden geçirir; başka bir modülün sahibi olduğu bir tabloya yapılan sorguyu yakalamanın tek yolu budur.