WebAssembly 是一种在 Web 上运行代码的新方法。它背后有大型科技公司,它有望彻底改变我们编写 Web 应用程序的方式,但也有其自身的怪癖和局限性。WASM 框架是像 React 这样的 JavaScript 库的可行竞争对手吗?
什么是 WebAssembly?
WebAssembly 或 WASM 是所有 Web 浏览器都可以理解和运行的第二种通用编程语言。但是,您不会自己在 WebAssembly 中编写脚本——它是一种低级汇编语言,旨在非常接近已编译的机器代码,并且非常接近本机性能。
WebAssembly 的魔力在于它足够低级,实际上是一个简单的 编译目标。任何相当快的语言都必须在某个时候通过编译器,即使是像 JavaScript 这样的 JIT 编译语言,通常这意味着编译成 x86 或 ARM 机器代码才能在现代处理器上运行。
但是,您也可以编译成不同的格式;通常这最终会成为更接近最终机器代码的“低级”语言。例如,Java 编译为发送到 JVM 运行时的 Java 字节码,而 C# 编译为发送到 .NET 运行时的 Microsoft 中间语言 (MSIL)。您甚至可以将语言从一种高级语言“转换”到另一种语言,最常见的扩展是 TypeScript 到 JavaScript,但也可以是您意想不到的更奇怪的扩展,例如 Python 到 JavaScript,尽管这通常是混乱和漏洞百出的。
WASM 只是一种易于编译的中间语言。事实上,它与 Java 字节码和 C# MSIL 的概念几乎完全相同——这两种格式都可以轻松地跨平台运行相同的代码,使用为每个平台制作的特定运行时上运行的相同格式。
这实际上意味着 JavaScript 不再是您可以在 Web 上运行的唯一语言。Web 浏览器现在可以运行任何语言,只要该语言具有 WebAssembly 编译器。
甚至像 C++ 和 Rust 这样的传统桌面语言也可以相对容易地编译成 WASM;AutoDesk 能够在几个月内