TurboModules
- React Native kursu
- Uzman
- Ders 4/47
- 5 dk
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
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
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
const Module = TurboModuleRegistry.____('MyModule');
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.