什么是 WebAssembly (Wasm) 模块?

What is a WebAssembly (Wasm) module?

正在阅读有关 Wasm 的 MDN 文档。他们多次使用术语 WASM 模块。他们的定义如下:

A WebAssembly.Module object contains stateless WebAssembly code that has already been compiled by the browser and can be efficiently shared with Workers, and instantiated multiple times. To instantiate the module, call the secondary overload of WebAssembly.instantiate().

我不太明白这句话的意思。 web assembly 模块只是一个 Wasm 文件还是其他东西?

WebAssembly 是一种可以在现代浏览器中执行的低级代码形式。为了执行这段代码,浏览器必须编译它,虽然因为它是低级的,与 JavaScript.

相比,这种编译相对快速和简单。

WebAssembly API 将编译步骤与实例化和执行步骤分开。因此,WebAssembly 模块是您的 WebAssembly 代码(即您引用的 wasm 文件)的编译版本,已准备好实例化和执行。

什么是 Web Assembly?

Web Assembly (Wasm) 是一种获取用 JavaScript 以外的编程语言编写的代码并 运行 在浏览器中编译该代码的方法。

它是由编译器生成的二进制格式,允许我们在浏览器上执行任何语言代码

它是如何工作的?

尽管它的名字叫 WebAssembly,但它并不完全是一种汇编语言,因为它并不适用于任何特定的机器。它适用于浏览器,当您交付要在浏览器中执行的代码时,您不知道您的代码将 运行 运行在哪种机器上。

WebAssembly 让您能够做的是将 C、C++ 或 Rust 代码编译成所谓的 WebAssembly 模块。您可以将其加载到您的 Web 应用程序中并从 JavaScript.

调用它

Wasm 程序分两个阶段部署。

  1. Wasm 模块是从源代码生成的(除 JavaScript 之外您选择的任何语言)
  2. 构建 Wasm 模块后,它可以 运行 任何地方,只需几行 JavaScript 胶水:

它不是 JavaScript 的替代品,它与 JavaScript 一起使用。

Here 是一篇很棒的文章,可以详细介绍。