【问题标题】:What is a WebAssembly (Wasm) module?什么是 WebAssembly (Wasm) 模块?
【发布时间】:2019-03-11 09:24:34
【问题描述】:

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

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

我不太明白这句话的意思。 Web 组装模块只是一个 Wasm 文件还是其他什么?

【问题讨论】:

  • 我不知道 WASM,但这个描述听起来像是内存中的一个对象,而不是一个文件。即对 JIT 编译的机器代码的引用,而不是 wasm 源文本。

标签: assembly browser low-level webassembly


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    什么是 Web 组装?

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

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

    它是如何工作的?

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

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

    Wasm 程序分两个阶段部署。

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

    它不是 JavaScript 的替代品,它与 JavaScript 一起工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多