İçeriğe geç
Dokümanlar

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.