{}const=>[]async()letfn</>var
EntwicklungWeb

Rust für Web: Das Wachstum von WASM und die Zukunft von Browseranwendungen

Der Artikel enthält eine einfache Erklärung von WASM für Anfänger, praktische Code-Beispiele, einen Geschwindigkeitsvergleich mit JavaScript und eine Schritt-für-Schritt-Erstellung des ersten Projekts. Wir analysieren, warum Figma, Google Earth und 1Password diese Technologie gewählt haben und wie Sie sie noch heute verwenden können.

К

Kodik

Autor

5 Min. Lesezeit

Wenn Sie gerade erst mit der Programmierung beginnen, haben Sie wahrscheinlich gehört, dass Webanwendungen mit JavaScript ausgeführt werden. Und das ist wahr - aber nicht alles. Heute sprechen wir über eine Technologie, die die Spielregeln ändert: WebAssembly (WASM) und Sprache Rust, das zu ihrem Hauptinstrument wird.

Stellen Sie sich vor: Sie können Code schreiben, der in einem Browser funktioniert fast so schnell wie normale Programme auf Ihrem Computer. Klingt nach Magie? Es ist Realität, und sie ist jetzt verfügbar.

Was ist WebAssembly?

WebAssembly ist kein Ersatz für JavaScript, sondern eine leistungsstarke Ergänzung. In einfachen Worten:

JavaScript — ist wie ein Allrounder, der von allem ein bisschen kann
WebAssembly - ist ein Spezialist, der bestimmte Aufgaben viel schneller erledigt

Warum ist das wichtig?

Normales JavaScript:

  • Geschwindigkeit: 🚗

  • Geeignet für: UI, Anwendungslogik

  • Einschränkungen: langsame Berechnungen

WebAssembly + Rust:

  • Geschwindigkeit: 🚀

  • Geeignet für: Datenverarbeitung, Spiele, Grafik

  • Funktionen: fast wie native Programme

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

Warum gerade Rust?

Rust ist eine Programmiersprache, die für Sicherheit und Leistung. Hier sind seine Hauptvorteile für die Webentwicklung:

1. Geschwindigkeit ohne Kompromisse

Rust-Code wird in WebAssembly kompiliert, das mit nahezu nativer Geschwindigkeit ausgeführt wird.

2. Standardsicherheit

Rust lässt Sie keine kritischen Speicherfehler machen – der Compiler fängt sie noch vor dem Start des Programms ab.

3. Moderne Werkzeuge

Rust hat ein ausgezeichnetes Ökosystem für die Arbeit mit WASM:

  • wasm-pack — für die Zusammenstellung von Projekten

  • wasm-bindgen — für die Kommunikation mit JavaScript

  • web-sys und js-sys — für die Arbeit mit der Web-API

Praktisches Beispiel: die erste Anwendung

Erstellen wir eine einfache Anwendung, die die Leistungsfähigkeit von Rust + WASM zeigt.

Schritt 1: Werkzeuge einrichten

# Installation von Rust (falls noch nicht installiert)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Hinzufügen von WebAssembly-Unterstützung
rustup target add wasm32-unknown-unknown

# Installation von wasm-pack
cargo install wasm-pack

Schritt 2: Erstellen eines Projekts

cargo new --lib rust-wasm-demo
cd rust-wasm-demo

Schritt 3: Cargo.toml einrichten

[package]
name = "rust-wasm-demo"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2"

[dependencies.web-sys]
version = "0.3"
features = ["console"]

Schritt 4: Schreiben Sie Code in Rust (src/lib.rs)

use wasm_bindgen::prelude::*;

// Funktion zur Berechnung von Fibonacci-Zahlen
#[wasm_bindgen]
pub fn fibonacci(n: u32) -> u32 {
    match n {
        0 => 0,
        1 => 1,
        _ => fibonacci(n - 1) + fibonacci(n - 2),
    }
}

// Funktion zur Verarbeitung eines Arrays
#[wasm_bindgen]
pub fn sum_array(numbers: &[i32]) -> i32 {
    numbers.iter().sum()
}

// Begrüßung mit Web-API
#[wasm_bindgen]
pub fn greet(name: &str) -> String {
    web_sys::console::log_1(&"Function called from Rust!".into());
    format!("Hi, {}! This is a message from Rust 🦀", name)
}

Schritt 5: Zusammenbau

wasm-pack build --target web

Schritt 6: Verwendung im Browser (index.html)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Rust + WASM Demo</title>
</head>
<body>
    <h1>Rust WebAssembly в действии</h1>
    
    <div>
        <button onclick="testFibonacci()">Вычислить Фибоначчи(10)</button>
        <button onclick="testArray()">Сумма массива</button>
        <button onclick="testGreet()">Приветствие</button>
    </div>
    
    <div id="result"></div>

    <script type="module">
        import init, { fibonacci, sum_array, greet } from './pkg/rust_wasm_demo.js';

        await init();

        window.testFibonacci = () => {
            const result = fibonacci(10);
            document.getElementById('result').innerHTML = 
                `Fibonacci(10) = ${result}`;
        };

        window.testArray = () => {
            const numbers = [1, 2, 3, 4, 5];
            const result = sum_array(numbers);
            document.getElementById('result').innerHTML = 
                `Sum [1,2,3,4,5] = ${result}`;
        };

        window.testGreet = () => {
            const result = greet("developer");
            document.getElementById('result').innerHTML = result;
        };
    </script>
</body>
</html>

Echte Anwendungsbeispiele

1. Bildverarbeitung

Anwendungen wie Figma verwenden WASM für die schnelle Grafikverarbeitung:

#[wasm_bindgen]
pub fn apply_grayscale(pixels: &mut [u8]) {
    for chunk in pixels.chunks_mut(4) {
        let gray = (chunk[0] as f32 * 0.299 
                  + chunk[1] as f32 * 0.587 
                  + chunk[2] as f32 * 0.114) as u8;
        chunk[0] = gray;
        chunk[1] = gray;
        chunk[2] = gray;
    }
}

2. Spiele im Browser

Game Engines wie Unity und Unreal Engine verwenden WASM, um Spiele auszuführen:

#[wasm_bindgen]
pub struct GameState {
    score: u32,
    player_x: f64,
    player_y: f64,
}

#[wasm_bindgen]
impl GameState {
    pub fn new() -> GameState {
        GameState {
            score: 0,
            player_x: 0.0,
            player_y: 0.0,
        }
    }

    pub fn update(&mut self, delta_time: f64) {
        // Schnelle Berechnungen der Physik
        self.player_x += delta_time * 10.0;
        self.player_y += delta_time * 5.0;
    }
}

3. Kryptographie und Verschlüsselung

Sichere Datenoperationen direkt im Browser:

use sha2::{Sha256, Digest};

#[wasm_bindgen]
pub fn hash_password(password: &str) -> String {
    let mut hasher = Sha256::new();
    hasher.update(password.as_bytes());
    format!("{:x}", hasher.finalize())
}

Leistungsvergleich

Schauen wir uns den tatsächlichen Geschwindigkeitsunterschied an:

Aufgabe: die Summe von 1 Million Zahlen berechnen

JavaScript:

// JavaScript
console.time('JS');
let sum = 0;
for (let i = 0; i < 1000000; i++) {
    sum += i * 2;
}
console.timeEnd('JS');
// Ergebnis: ~3-5ms

Rust + WASM:

// Rust + WASM
#[wasm_bindgen]
pub fn calculate_sum(n: u32) -> u64 {
    (0..n).map(|i| i as u64 * 2).sum()
}
// Ergebnis: ~1-2ms

WASM ist 2-3 mal schneller!

Und für komplexere Berechnungen kann der Unterschied das 10- bis 20-fache betragen.

Moderne Frameworks in Rust

Yew — React auf Rust

use yew::prelude::*;

#[function_component(App)]
fn app() -> Html {
    let counter = use_state(|| 0);
    
    let increment = {
        let counter = counter.clone();
        Callback::from(move |_| counter.set(*counter + 1))
    };

    html! {
        <div>
            <h1>{ "Counter in Rust!" }</h1>
            <p>{ format!("Value: {}", *counter) }</p>
            <button onclick={increment}>{ "Enlarge" }</button>
        </div>
    }
}

Leptos — modern und schnell

use leptos::*;

#[component]
fn Counter() -> impl IntoView {
    let (count, set_count) = create_signal(0);

    view! {
        <div>
            <button on:click=move |_| set_count.update(|n| *n += 1)>
                "Clicks: " {count}
            </button>
        </div>
    }
}

Befund

Rust und WebAssembly sind nicht nur Hype, sondern die Zukunft der Webentwicklung. Dies sind die Werkzeuge, mit denen Sie schnell, sicher und leistungsstark direkt im Browser.

Sie müssen kein Experte sein, um loszulegen. Das Wichtigste ist, den ersten Schritt zu machen: Installieren Sie die Tools, schreiben Sie die erste Funktion und sehen Sie, wie es funktioniert.

All dies und vieles mehr kann auf der Kodik-Plattform studiert werden!

Hier finden Sie:

📖 Detaillierte Kurse von den Grundlagen bis zu fortgeschrittenen Themen

💻 Praktische Aufgaben zur Materialfixierung

🎯 Echte Projekte für das Portfolio

🏆 Fortschrittssystem mit Erfahrung und Erfolgen

Wir werden jedes Thema im Detail analysieren, gemeinsam Code schreiben und alles in der Praxis festigen!

💬 Brauchst du Unterstützung?

Schließen Sie sich unserem aktiv Telegram-Kanal — bereits mehr als 2000 Gleichgesinnte helfen sich gegenseitig, teilen Erfahrungen und diskutieren die neuesten Entwicklungen in der Welt!

👉 Beginnen Sie jetzt Ihre Reise in die Welt der modernen Webentwicklung!

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte