什么是WebAssembly(Wasm)模块?

8
我正在阅读有关Wasm的MDN文档。他们多次使用“WASM模块”这个术语。他们的定义如下:
WebAssembly.Module对象包含无状态WebAssembly代码,该代码已由浏览器编译,并可以有效地与工作者共享,并可以实例化多次。要实例化模块,请调用WebAssembly.instantiate()的辅助重载。
我无法完全理解其含义。Web Assembly模块只是一个Wasm文件,还是其他东西?

我不了解WASM,但是那个描述听起来像是内存中的一个对象,而不是一个文件。也就是说,它是对JIT编译的机器代码的引用,而不是wasm源文本。 - Peter Cordes
2个回答

8

什么是Web Assembly?

Web Assembly(Wasm)是一种通过在浏览器中运行编写在除JavaScript以外的其他编程语言的代码的方式。

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

它如何工作?

尽管它的名字为 WebAssembly,但它并不完全是汇编语言,因为它不适用于任何特定的机器。它是面向浏览器的,当您将要在浏览器中执行的代码传递给浏览器时,您不知道您的代码将在哪些类型的计算机上运行。

WebAssembly 可以让你采用像 C、C++ 或 Rust 这样的代码,并将其编译成所谓的 WebAssembly 模块。你可以将它加载到你的网络应用程序中,并从 JavaScript 调用它。

Wasm程序分为两个阶段部署。

  1. 从源代码(除JavaScript之外的任何语言)生成Wasm模块
  2. 构建Wasm模块后,只需几行JavaScript代码即可在任何地方运行:

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

这里 有一篇更详细的文章。


6

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接