什么是 WebAssembly (Wasm) 模块?

Wil*_*een 8 browser assembly low-level webassembly

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

WebAssembly.Module 对象包含已由浏览器编译的无状态 WebAssembly 代码,可以与 Workers 高效共享,并多次实例化。要实例化模块,请调用 WebAssembly.instantiate() 的辅助重载。

我不太明白这句话的意思。Web 程序集模块只是一个 Wasm 文件还是其他文件?

Jac*_*der 8

什么是网络组装?

\n\n

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

\n\n

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

\n\n

它是如何工作的?

\n\n

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

\n\n

WebAssembly 使您能够将 \xc2\xa0C、C++ 或 Rust\xc2\xa0code 等内容编译成 \xc2\xa0WebAssembly 模块。您可以将其加载到您的 Web 应用程序中并从 JavaScript 调用它。

\n\n

Wasm 程序分两个阶段部署。

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

它\xe2\x80\x99s 不是 JavaScript 的替代品,它与 JavaScript 一起工作。

\n\n

是一篇很棒的文章,可以提供更多详细信息。

\n


Col*_*inE 6

WebAssembly 是一种可以在现代浏览器中执行的低级代码形式。为了执行这段代码,浏览器必须对其进行编译,尽管由于它是低级的,所以与 JavaScript 相比,这种编译相对快速且简单。

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