什么是WebAssembly(Wasm)模块?

时间:2018-10-05 20:28:48

标签: assembly browser low-level webassembly

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

  

WebAssembly.Module对象包含无状态的WebAssembly代码,该代码   已被浏览器编译并可以有效共享   与Workers一起实例化多次。实例化   模块,调用WebAssembly.instantiate()的次级重载。

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

什么是Web程序集?

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

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

它如何工作?

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

WebAssembly使您能够执行的工作是获取C,C ++或Rust代码之类的东西,并将其编译为WebAssembly模块。您可以将其加载到Web应用程序中,然后从JavaScript调用它。

Wasm程序分两个阶段部署。

  1. Wasm模块是从源代码(JavaScript以外的其他任何语言)中生成的
  2. 一旦构建了Wasm模块,即可使用几行JavaScript胶水在任何地方运行它:

它不能替代JavaScript,可以与JavaScript一起使用。

Here是一篇很棒的文章,其中有更多详细信息。