Perché WebAssembly è il futuro dello sviluppo web?
Cos’è WebAssembly e come funziona?
I vantaggi principali di WebAssembly
- Velocità: Grazie alla compilazione preventiva, Wasm è molto più veloce di JavaScript per calcoli intensivi.
- Portabilità: Funziona su qualsiasi piattaforma che supporti un browser moderno.
- Sicurezza: Esegue codice in un ambiente sandbox, garantendo protezione contro exploit.
Ma come si integra con il web? Semplice: WebAssembly lavora fianco a fianco con JavaScript, permettendoti di usare Wasm per le parti critiche delle prestazioni e JS per la logica generale.
Tutorial pratico: Creare una funzione con WebAssembly e Rust
Per capire davvero WebAssembly, mettiamoci al lavoro con un esempio concreto. Creeremo una semplice funzione in Rust che somma due numeri, la compileremo in WebAssembly e la integreremo in una pagina HTML.
Prerequisiti
-
Installa Rust: visita questa la guida al link e segui le istruzioni.
-
Installa wasm-pack: esegui cargo install wasm-pack nel terminale.
-
Un editor di codice (es. VS Code) e Node.js per il server locale.
Passo 1 – Configura il progetto
-
Crea una nuova directory: mkdir wasm-demo && cd wasm-demo .
-
Inizializza un progetto Rust: cargo new --lib wasm-lib && cd wasm-lib .
-
Aggiorna il file Cargo.toml per aggiungere il supporto a WebAssembly:
[package]
name = "wasm-lib"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
Passo 2 – Scrivi il codice Rust
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
Questo codice definisce una funzione add che somma due numeri interi e la rende accessibile a JavaScript tramite wasm_bindgen.
Passo 3 – Compila in WebAssembly
wasm-pack build --target web
Questo genera i file WebAssembly nella directory pkg.
Passo 4 – Integra nel HTML
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebAssembly Demo 2025</title>
</head>
<body>
<h1>Calcolatrice WebAssembly</h1>
<p>Risultato: <span id="result"></span></p>
<script type="module">
import init, { add } from './wasm-lib/pkg/wasm_lib.js';
async function run() {
await init();
const result = add(5, 3);
document.getElementById('result').innerText = result;
}
run();
</script>
</body>
</html>
Risultato: Passo 5 – Testa il risultato
Applicazioni reali di WebAssembly nel 2025
-
Giochi nel browser: Piattaforme come Unity stanno usando Wasm per portare giochi 3D complessi sul web.
-
Editing multimediale: Adobe ha integrato WebAssembly in strumenti come Photoshop per il web.
-
Machine Learning: Framework come TensorFlow.js sfruttano Wasm per accelerare i calcoli ML nel browser.
Vantaggi e limiti di WebAssembly
Pro
-
Prestazioni quasi native per calcoli intensivi.
-
Compatibilità con linguaggi diversi da JavaScript.
-
Facilità di integrazione con il codice esistente.
Contro
-
Curva di apprendimento per chi non conosce linguaggi compilati.
-
Dimensioni dei file Wasm più grandi rispetto a JS per piccoli script.
-
Debugging ancora meno intuitivo rispetto a JavaScript.
Lascia un commento