CodeBlanks Logo Icon CodeBlanks

TurboModules

TurboModules ve JSI tabanlı modülleri öğrenirsin.

TurboModules nedir?

TurboModules, native modüllerin JS tarafına JSI üzerinden bağlanmasıdır. Eski NativeModules yerine geçer; modüller talep anında yüklenir (lazy). Bu, uygulama başlangıç süresini kısaltır.

Bir TurboModule bir TypeScript spec dosyası ile tanımlanır: TurboModuleRegistry.getEnforcing ile kaydedilir. Codegen, bu spec'ten C++/Java/Objective-C iskelet üretir. Böylece tip uyumsuzlukları derleme anında yakalanır.

Spec dosyası

TurboModule spec dosyası bir .ts dosyasıdır. TurboModule arayüzünden türeyen bir arayüz tanımlar; her metodun imzası yazılır. Codegen bu dosyayı okur ve native karşılığını üretir.

Dosya adı Native<Name>.ts biçiminde olmalı; örn. NativeMath.ts. Konumu genelde src/NativeMath.ts olur. Codegen bu yolu jsSrcsDir ayarından bulur.

Uygulama TurboModule spec yaz

NativeMath.ts adında bir TurboModule spec dosyası yaz. TurboModule arayüzünü genişleten Spec arayüzü tanımla; add(a: number, b: number): number metodu olsun. export ile dışa aktar.

Başlangıç kodu

App.js
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';

// Spec arayüzünü buraya tanımla

export default TurboModuleRegistry.getEnforcing<Spec>('Math');

Örnek çözüm

App.js
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
import { TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {
  add(a: number, b: number): number;
}

export default TurboModuleRegistry.getEnforcing<Spec>('Math');

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 TurboModule kayıt fonksiyonu

Soru
const Module = TurboModuleRegistry.____('MyModule');
Cevap
const Module = TurboModuleRegistry.getEnforcing('MyModule');

Açıklama: getEnforcing module'ü zorunlu olarak alır.

2 TurboModule parçalarını eşleştir

Kavram Anlamı
Spec dosyası TypeScript arayüz
getEnforcing Module alır
Codegen C++ iskelet üretir
NativeModules Eski sistem

3 TurboModules ne zaman yüklenir?

  • Talep anında (lazy)
  • Uygulama açılışında hepsi
  • Yalnızca release derlemede
  • Yalnızca iOS'ta Doğru cevap

Açıklama: TurboModules lazy olarak ilk çağrıda yüklenir.

Uzman bölümündeki tüm dersler