WebAssembly (Wasm) 是一种新的代码格式,可以在现代 Web 浏览器中以接近原生的性能运行。

什么是 WebAssembly?

  • 二进制指令格式
  • 可移植、体积小、加载快
  • 与 JavaScript 协同工作
  • 支持 C/C++/Rust 等语言编译

基础使用

加载和运行

javascript
// 加载 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
// 编写 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)
}

应用场景

  • 图像/视频处理
  • 游戏引擎
  • 加密运算
  • 科学计算
  • 音频处理

性能对比

javascript
// JavaScript
function 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,而是与之互补,在需要高性能的场景发挥作用。

喜欢这篇文章?打赏一下作者吧

微信
支付宝
爱发电
搜索