Örnek sorular
Rn Native Bridge ModulesZorluk 1
Klasik ("eski") React Native mimarisinde "bridge" (köprü) nedir?
- aJS ve native kod arasında çağrıları taşımak için veriyi serileştiren asenkron bir mesajlaşma katmanı.✓
- bReact bileşenlerini doğrudan render eden bir native UI widget'ı.
- cAsyncStorage key-value çiftlerini diskte tutan bir önbellek.
- dJavaScript'i native ARM makine koduna derleyen bir build aracı.
Açıklama:Klasik bridge, asenkron ve mesaj tabanlı bir kanaldır: JS ve native taraf, ayrı thread'lerde işlenen, serileştirilmiş (JSON) mesajlar alışverişi yapar.
Rn Native Bridge ModulesZorluk 1
React Native'de JS thread'i hakkında hangi ifade doğrudur?
- aNative view'ları ekrana çizen işletim sistemi thread'i ile aynısıdır.
- bUygulamanın JavaScript mantığını çalıştırır ve native UI (main) thread'inden ayrıdır.✓
- cSadece debug build'lerde vardır, release build'lerde kaldırılır.
- dHerhangi bir JS engine olmadan doğrudan Java/Kotlin kodu çalıştırır.
Açıklama:React Native, uygulama JS'ini kendi thread'inde (geleneksel adıyla "JS thread") çalıştırır; bu, render ve dokunma girdisini yöneten native UI thread'inden ayrıdır.
Rn Native Bridge ModulesZorluk 1
React Native'de "native module" (native modül) nedir?
- aJavaScript'e açılan, platforma özgü (Java/Kotlin veya Objective-C/Swift) bir kod parçası.✓
- bSadece iOS'ta uygulanan CSS benzeri bir stil objesi.
- cHiç native kodu olmayan üçüncü parti bir npm paketi.
- dAna app bundle'ından ayrı paketlenmiş bir JavaScript dosyası.
Açıklama:Native modül, kamera, sensör, storage gibi platform SDK işlevselliğini Java/Kotlin veya Objective-C/Swift ile sarmalayıp JS'den çağrılabilir bir API olarak sunar.
Rn Native Bridge ModulesZorluk 1
Klasik bridge neden "asenkron" olarak tanımlanır?
- aÇünkü JS'ten native'e çağrılar kuyruğa alınıp toplu (batch) halde işlenir, çağıran taraf senkron bir dönüş değeri için bloklanmaz.✓
- bÇünkü sadece cihazın aktif internet bağlantısı varken çalışır.
- cÇünkü uzak bir debugging sunucusuyla WebSocket üzerinden konuşur.
- dÇünkü native modüller isteğe bağlıdır ve istenen zaman yüklenebilir.
Açıklama:Bridge çağrıları serileştirilmiş mesajlar olarak kuyruğa alınır ve toplu halde işlenir; çağıran taraf anlık senkron bir sonuç için beklemez.
Rn Native Bridge ModulesZorluk 2
Yeni React Native mimarisinde JSI ne anlama gelir?
- aJSON Serialization Index — bridge mesaj ID'leri için bir arama tablosu.
- bJavaScript Import — native bağımlılıklar için bir modül çözümleme sistemi.
- cJavaScript Interface — doğrudan JS-native nesne referansı sağlayan bir C++ katmanı.✓
- dJava Script Isolation — JS'in native kodu çağırmasını engelleyen bir sandbox.
Açıklama:JSI (JavaScript Interface), JS nesnelerinin C++ host nesnelerine/fonksiyonlarına doğrudan referans tutmasını sağlayan hafif bir C++ API'sidir; her çağrıda JSON serileştirme ihtiyacını ortadan kaldırır.
Rn Native Bridge ModulesZorluk 2
JSI tabanlı çağrılar, klasik bridge çağrılarının aksine neden senkron olabilir?
- aÇünkü JSI tüm native modülleri JS thread'inin kendisinde çalıştırmaya zorlar.
- bÇünkü JSI, JSON mesajlarını anında aktarılacak şekilde sıkıştırır.
- cÇünkü JS, native bir fonksiyon/nesneye doğrudan referans tutar ve mesaj serileştirmeden onu yerinde çağırabilir.✓
- dÇünkü JSI, çağrı sırasında event loop'u devre dışı bırakır.
Açıklama:JSI ile bir JS nesnesi, native (C++) bir fonksiyona canlı referans tutabilir ve onu doğrudan, senkron olarak çağırabilir; çünkü thread'ler arası mesaj kuyruğuna ya da JSON gidiş-dönüşüne gerek yoktur.