React Academy · Pelajaran

Rust kepada WASM dengan wasm-pack dan React

Susun kod Rust kepada WebAssembly dengan wasm-pack dan gunakan pengikatan JS yang dijana dalam aplikasi React.

Pelajaran 3 daripada 413 langkah

Rust kepada WASM dengan wasm-pack dan React ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Rantai Alat Rust untuk WASM

Aliran kerja standard Rust kepada WASM menggunakan dua alat: wasm-pack menyelaraskan binaan (mengkompilkan Rust kepada WASM, menjalankan wasm-bindgen dan menjana pakej npm), manakala wasm-bindgen menjana pengikatan JavaScript yang menjadikan fungsi Rust boleh dipanggil seperti fungsi JavaScript biasa dengan pengendalian jenis yang betul.

Atribut wasm-bindgen

Atribut #[wasm_bindgen] menandakan fungsi, struktur dan kaedah Rust untuk dieksport kepada JavaScript. Tanpanya, fungsi tersebut dikompilkan kepada WASM tetapi tidak boleh diakses daripada JavaScript. Apabila anda menganotasi fungsi dengan #[wasm_bindgen], wasm-bindgen menjana kod penghubung JavaScript yang mengendalikan penukaran argumen dan nilai pulangan.

Fungsi Rust Ringkas

Fungsi Rust yang dieksport secara minimum: use wasm_bindgen::prelude::*; #[wasm_bindgen] pub fn add(a: u32, b: u32) -> u32 { a + b }. Fungsi ini menerima dua integer tidak bertanda 32-bit dan mengembalikan satu nilai. wasm-bindgen menjana JavaScript yang memanggil fungsi ini dengan argumen nombor dan mengembalikan hasil nombor.

Membina dengan wasm-pack

Jalankan wasm-pack build --target web dalam direktori pakej Rust. Proses ini mengkompilkan kod Rust kepada WASM, menjalankan wasm-bindgen untuk menjana pengikatan JavaScript dan menghasilkan direktori pkg/ yang mengandungi binari .wasm, modul penghubung JavaScript dan definisi jenis TypeScript.

Mengimport dalam React

Import modul yang dijana dalam komponen React anda: import init, { add } from '../pkg/my_lib'. Fungsi init memuatkan dan menghasilkan instans binari WASM (panggilnya sekali dalam useEffect). Selepas pemulaan, panggil fungsi yang dieksport secara langsung: const result = add(2, 3).

Menghantar Data Kompleks: js_sys dan JsValue

Untuk data kompleks yang melangkaui nombor primitif, wasm-bindgen menyediakan js_sys::Array (Array JavaScript), js_sys::Object (Object JavaScript) dan wasm_bindgen::JsValue (sebarang nilai JavaScript). Jenis ini membolehkan fungsi Rust menerima dan mengembalikan tatasusunan serta objek JavaScript, walaupun dengan overhed pensirilan yang lebih tinggi berbanding jenis primitif.

Meminimumkan Overhed Pemindahan Data

Prinsip prestasi utama ialah mengekalkan data dalam memori WASM dan melakukan semua pengiraan di situ. Hantar data sekali, lakukan pengiraan, kemudian pulangkan hanya hasil akhir. Elakkan corak yang memindahkan data berulang kali merentasi sempadan WASM bagi setiap langkah. Overhed bagi setiap lintasan sempadan adalah kecil, tetapi terkumpul dalam gelung yang ketat.

serde-wasm-bindgen untuk Struktur

Pakej serde-wasm-bindgen membolehkan struktur Rust disiri dan dinyiri daripada objek JavaScript menggunakan Serde. Anotasikan struktur dengan #[derive(Serialize, Deserialize)] dan gunakan serde_wasm_bindgen::to_value() serta from_value(). Inilah pendekatan piawai untuk menghantar data berstruktur yang kompleks.

Menjalankan WASM dalam Pekerja Web

Pengiraan WASM yang berjalan lama akan menyekat bebenang tempatnya dijalankan. Letakkan WASM dalam Pekerja Web supaya bebenang utama React kekal bebas. Cipta fail Worker yang memulakan modul WASM dan mengendalikan mesej. Hantar data kepada Worker melalui postMessage, terima hasil melalui peristiwa message, kemudian kemas kini keadaan React dengan hasil tersebut.

Jenis TypeScript daripada wasm-pack

wasm-pack menjana fail pengisytiharan TypeScript (.d.ts) secara automatik untuk semua fungsi dan jenis yang dieksport. Ini memberikan projek React TypeScript Anda keselamatan jenis sepenuhnya apabila memanggil fungsi Rust. Jenis yang dijana mencerminkan tandatangan fungsi Rust — add(a: number, b: number): number — lalu pelengkapan automatik IDE berfungsi dengan betul.

Pertimbangan Pengeluaran

Binari WASM biasanya bersaiz 100kb-2MB selepas pengoptimuman. Aktifkan wasm-opt dalam binaan wasm-pack dengan menetapkan opt-level = "z" dalam profil keluaran Cargo.toml untuk pengoptimuman saiz yang agresif. Hidangkan fail WASM dengan Content-Type: application/wasm dan aktifkan HTTP/2 supaya pelayar menstrim binari dengan cekap.

Atribut wasm-bindgen

Apakah tujuan atribut #[wasm_bindgen] dalam kod Rust?

Rumusan Pelajaran

wasm-pack build --target web menyusun Rust kepada WASM dan menjana pengikatan JavaScript melalui wasm-bindgen. Anotasikan fungsi yang dieksport dengan #[wasm_bindgen]. Import init dan fungsi yang dieksport dalam React, panggil init() dalam useEffect, kemudian panggil fungsi tersebut seperti JavaScript biasa. Gunakan serde-wasm-bindgen untuk penyirian struktur yang kompleks. Jalankan WASM dalam Pekerja Web untuk pengiraan yang lama supaya bebenang utama React kekal bebas.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Rust kepada WASM dengan wasm-pack dan React” percuma?

Ya — teks penuh “Rust kepada WASM dengan wasm-pack dan React” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Rust kepada WASM dengan wasm-pack dan React”?

Susun kod Rust kepada WebAssembly dengan wasm-pack dan gunakan pengikatan JS yang dijana dalam aplikasi React. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Rust kepada WASM dengan wasm-pack dan React” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Apakah WebAssembly dan Peranan React
  2. Memuatkan Modul WASM dalam React
  3. Rust kepada WASM dengan wasm-pack dan React
  4. Kes Penggunaan WASM: Pemprosesan Imej dan Pengiraan
← Kembali ke React Academy