使用 WebAssembly 的 Node.js

找出为什么 WebAssembly 是一个很棒的工具,并自己学习使用它。

目录

WebAssembly 是一个高性能的类汇编语言,可以从多种语言编译,包括 C/C++、Rust 和 AssemblyScript。 目前支持 Chrome、Firefox、Safari、Edge、Node.js!

WebAssembly 规范详细说明了两种文件格式,一种称为 WebAssembly 模块的二进制格式,扩展名为 .wasm,相应的文本表示称为 WebAssembly 文本格式,扩展名为 .wat

关键概念

  • 模块 - 已编译的 WebAssembly 二进制文件,即 .wasm 文件。
  • 内存 - 可调整大小的 ArrayBuffer。
  • 表 - 不存储在内存中的可调整大小的类型化引用数组。
  • 实例 - 模块及其内存、表和变量的实例化。

为了使用 WebAssembly,你需要一个 .wasm 二进制文件和一组 API 来与 WebAssembly 通信。 Node.js 通过全局 WebAssembly 对象提供必要的 API。

生成 WebAssembly 模块

有多种方法可用于生成 WebAssembly 二进制文件,包括:

  • 手写 WebAssembly(.wat)并使用 wabt 等工具转为二进制格式
  • emscripten 与 C/C++ 应用一起使用
  • wasm-pack 与 Rust 应用一起使用
  • 如果你更喜欢类似 TypeScript 的体验,请使用 AssemblyScript

其中一些工具不仅生成二进制文件,还生成 JavaScript "胶水" 代码和相应的 HTML 文件以在浏览器中运行。

如何使用

一旦你有了一个 WebAssembly 模块,你就可以使用 Node.js WebAssembly 对象来实例化它。

与操作系统交互

WebAssembly 模块本身不能直接访问操作系统功能。 第三方工具 Wasmtime 可用于访问此功能。 Wasmtime 利用 WASI API 访问操作系统功能。

资源

Node.js 中文网 - 粤ICP备13048890号