WebAssembly (Wasm) 是一种新的代码格式,可以在现代 Web 浏览器中以接近原生的性能运行。
什么是 WebAssembly?
- 二进制指令格式
- 可移植、体积小、加载快
- 与 JavaScript 协同工作
- 支持 C/C++/Rust 等语言编译
基础使用
加载和运行
// 加载 WASM 模块async function loadWasm() { const response = await fetch('module.wasm') const bytes = await response.arrayBuffer() const module = await WebAssembly.compile(bytes) const instance = await WebAssembly.instantiate(module, { env: { memory: new WebAssembly.Memory({ initial: 256 }), abort: () => console.log('Abort!') } })
// 调用 WASM 函数 const result = instance.exports.add(1, 2) console.log(result) // 3}使用 AssemblyScript
// 编写 TypeScript 风格的代码export function add(a: i32, b: i32): i32 { return a + b}
export function fib(n: i32): i32 { if (n <= 1) return n return fib(n - 1) + fib(n - 2)}应用场景
- 图像/视频处理
- 游戏引擎
- 加密运算
- 科学计算
- 音频处理
性能对比
// JavaScriptfunction fibJS(n) { if (n <= 1) return n return fibJS(n - 1) + fibJS(n - 2)}
// WebAssembly (快 10-20 倍)const result = wasm.exports.fib(40)总结
WebAssembly 不是取代 JavaScript,而是与之互补,在需要高性能的场景发挥作用。
