一句话
WebAssembly(WASM)是一种低级二进制指令格式,是 C/C++/Rust 等语言的编译目标,让这些代码以接近原生的性能在浏览器里运行。
它的核心意义不是「让 JS 更快」,而是重新定义了 Web 平台的能力边界。
它解决了五个根本问题
- 性能——静态类型 + 提前编译,执行路径可预测,不受 GC 停顿和 JIT 去优化干扰。典型场景:音视频编解码、图像实时滤镜、3D 渲染、大文件解析(PDF / CAD / Office)。
- 生态——把几十年积累的 C/C++/Rust 库几乎无损搬上 Web。AutoCAD、Figma 插件、Photoshop Web 都是这么做的。
- 可移植——一次编译,浏览器、服务端、边缘节点、IoT 到处跑。WASI 标准化了系统接口,让 WASM 脱离浏览器也能安全运行。
- 安全——默认跑在线性内存沙箱里,天然适合执行不可信代码:插件系统、用户上传的逻辑、多租户云函数。
- 合规——敏感数据不出浏览器,本地算完只上传结果。GDPR、PIPL 时代的「数据不出域」需求,恰好是 WASM 的强项。
什么时候不该用
WASM 不是万能药,判断标准很简单:
- ✅ 计算耗时 > 16ms 且是 CPU 密集型,或需要复用非 JS 生态库 → 考虑 WASM
- ❌ 只是 UI 交互、DOM 操作、表单校验 → 坚持用 JS/TS,别给自己加复杂度
正确姿势:分工,不是替代
JS 负责 DOM、交互、事件;WASM 负责重计算、算法核心、内存管理。两者协作,而不是谁取代谁。
注意边界调用有开销:批量传数据、用 TypedArray 零拷贝视图、大块数据走 SharedArrayBuffer。
未来
- Component Model:不同语言编译的 WASM 模块像乐高一样互相导入导出
- WASM GC 标准化:Kotlin / Java / Dart 直接编译,JS ↔ WASM 互操作成本大幅下降
- 端侧 AI:WebGPU + SIMD,Stable Diffusion、LLM 推理在浏览器实时运行
对前端工程师
未来的全栈画像:左手 JS/TS 做交互,右手 Rust + WASM 做核心逻辑。核心竞争力不再是「会几个框架」,而是「能用 WASM 解决别人解决不了的问题」。