wasm-pack ve React ile Rust'tan WASM'a
Rust kodunu wasm-pack ile WebAssembly'ye derleyin ve oluşturulan JS bağlarını bir React uygulamasında kullanın.
wasm-pack ve React ile Rust'tan WASM'a, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Rust WASM Araç Zinciri
Standart Rust-WASM iş akışı iki araç kullanır: wasm-pack derlemeyi yönetir (Rust'ı WASM'e derler, wasm-bindgen'i çalıştırır ve npm paketini oluşturur); wasm-bindgen ise Rust işlevlerinin uygun tür işleme ile normal JavaScript işlevleri olarak çağrılmasını sağlayan JavaScript bağlantıları oluşturur.
wasm-bindgen Özniteliği
#[wasm_bindgen] özniteliği, Rust işlevlerini, yapılarını ve yöntemlerini JavaScript'e dışa aktarmak üzere işaretler. Bu öznitelik olmadan işlev WASM'e derlenir ancak JavaScript'ten erişilemez. Bir işlevi #[wasm_bindgen] ile belirttiğinizde wasm-bindgen, bağımsız değişken ve dönüş değeri dönüştürme işlemlerini yöneten JavaScript bağlantı kodunu oluşturur.
Basit Bir Rust İşlevi
En basit dışa aktarılan Rust işlevi: use wasm_bindgen::prelude::*; #[wasm_bindgen] pub fn add(a: u32, b: u32) -> u32 { a + b }. İşlev iki işaretsiz 32 bit tamsayı alır ve bir tane döndürür. wasm-bindgen, bu işlevi sayı türündeki bağımsız değişkenlerle çağıran ve sayı sonucu döndüren JavaScript kodu oluşturur.
wasm-pack ile Derleme
Rust paketinin dizininde wasm-pack build --target web komutunu çalıştırın. Bu komut Rust kodunu WASM'e derler, JavaScript bağlantılarını oluşturmak için wasm-bindgen'i çalıştırır ve pkg/ dizininde .wasm ikili dosyasını, bir JavaScript bağlantı modülünü ve TypeScript tür tanımlarını oluşturur.
React'te İçe Aktarma
Oluşturulan modülü React bileşeninizde içe aktarın: import init, { add } from '../pkg/my_lib'. init işlevi WASM ikili dosyasını yükleyip örnek oluşturur (bu işlevi bir useEffect içinde bir kez çağırın). Başlatmadan sonra dışa aktarılan işlevleri doğrudan çağırın: const result = add(2, 3).
Karmaşık Verileri Aktarma: js_sys ve JsValue
İlkel sayıların ötesindeki karmaşık veriler için wasm-bindgen, js_sys::Array (JavaScript dizisi), js_sys::Object (JavaScript nesnesi) ve wasm_bindgen::JsValue (herhangi bir JavaScript değeri) sağlar. Bu türler, Rust işlevlerinin JavaScript dizilerini ve nesnelerini kabul edip döndürmesine olanak tanır; ancak ilkel türlere kıyasla daha fazla serileştirme ek yükü oluşturur.
Veri Aktarımı Ek Yükünü Azaltma
Temel performans ilkesi şudur: verileri WASM belleğinde tutun ve tüm hesaplamaları orada gerçekleştirin. Veriyi bir kez aktarın, hesaplamayı yapın ve yalnızca nihai sonucu döndürün. Her adımda verileri WASM sınırının ötesine tekrar tekrar aktaran kalıplardan kaçının. Sınır geçişi başına düşen ek yük küçük olsa da sıkı döngülerde birikir.
Yapılar için serde-wasm-bindgen
serde-wasm-bindgen paketi, Serde kullanarak Rust yapılarını JavaScript nesnelerine ve JavaScript nesnelerinden serileştirmenizi sağlar. Yapıya #[derive(Serialize, Deserialize)] açıklamasını ekleyin ve serde_wasm_bindgen::to_value() ile from_value() işlevlerini kullanın. Karmaşık yapılandırılmış verileri aktarmak için standart yaklaşım budur.
WASM'ı Web Worker'da Çalıştırma
Uzun süren WASM hesaplamaları, çalıştıkları iş parçacığını engeller. React'in ana iş parçacığını boş tutmak için WASM'ı bir Web Worker'a yerleştirin. WASM modülünü başlatan ve mesajları işleyen bir Worker dosyası oluşturun. Verileri postMessage aracılığıyla Worker'a gönderin, sonuçları message olayı üzerinden alın ve ardından React durumunu sonuçla güncelleyin.
wasm-pack ile TypeScript Türleri
wasm-pack, dışa aktarılan tüm işlevler ve türler için TypeScript bildirim dosyalarını (.d.ts) otomatik olarak oluşturur. Böylece Rust işlevlerini çağırırken React TypeScript projenizde tam tür güvenliği sağlanır. Oluşturulan türler, Rust işlev imzalarını (örneğin add(a: number, b: number): number) yansıtır ve IDE otomatik tamamlamasının doğru çalışmasını sağlar.
Üretim Ortamında Dikkat Edilecekler
WASM ikili dosyaları, optimizasyondan sonra genellikle 100kb-2MB boyutundadır. Yoğun boyut optimizasyonu için Cargo.toml dosyasındaki yayın profilinde opt-level = "z" ayarını belirleyerek wasm-pack derlemesinde wasm-opt özelliğini etkinleştirin. WASM dosyalarını Content-Type: application/wasm ile sunun ve tarayıcının ikili dosyayı verimli bir şekilde akış olarak alabilmesi için HTTP/2'yi etkinleştirin.
wasm-bindgen Özniteliği
Rust kodundaki #[wasm_bindgen] özniteliğinin amacı nedir?
Ders Özeti
wasm-pack build --target web, Rust'ı WASM'a derler ve wasm-bindgen aracılığıyla JavaScript bağlamaları oluşturur. Dışa aktarılan işlevlere #[wasm_bindgen] açıklamasını ekleyin. React içinde init işlevini ve dışa aktarılan işlevleri içe aktarın, bir useEffect içinde init() işlevini çağırın ve ardından işlevleri normal JavaScript işlevleri gibi çağırın. Karmaşık yapı serileştirmesi için serde-wasm-bindgen kullanın. Uzun hesaplamalarda React'in ana iş parçacığını boş tutmak için WASM'ı Web Worker'larda çalıştırın.
Sıkça Sorulan Sorular
“wasm-pack ve React ile Rust'tan WASM'a” dersi ücretsiz mi?
Evet — “wasm-pack ve React ile Rust'tan WASM'a” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“wasm-pack ve React ile Rust'tan WASM'a” dersinde ne öğreneceğim?
Rust kodunu wasm-pack ile WebAssembly'ye derleyin ve oluşturulan JS bağlarını bir React uygulamasında kullanın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“wasm-pack ve React ile Rust'tan WASM'a” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- WebAssembly Nedir ve React Burada Nasıl Kullanılır
- React'te WASM Modüllerini Yükleme
- wasm-pack ve React ile Rust'tan WASM'a
- WASM Kullanım Alanları: Görüntü İşleme ve Hesaplama