跳到主要内容

什么是WebAssembly?

WebAssembly(wasm)与您可能使用过的其他Web API不同。它是为Web上的客户端应用程序定义二进制可执行格式的标准,可以在浏览器中运行,同时利用机器代码的速度和低级硬件功能。虽然这是一个相对较新的标准,但现在才引起人们的关注,它已经在所有主流浏览器中得到支持,并且拥有一个新兴的工具生态系统。

这代表了网络的一个重大变化,其中JavaScript(或TypeScript的抽象,如TypeScript)是唯一可用于编码的语言。 WebAssembly的引入意味着现在有一个平台可以编写和编译C,C ++和其他代码以在浏览器中运行。

本质上,如果您编写一个wasm模块,则将其编译为字节码格式,该格式可以在任何支持WebAssembly的平台上执行。这类似于在JVM上运行的Java字节码。您通常不希望直接编写wasm代码。

WebAssembly的好处

有趣的原因有两个。首先,它支持使用JavaScript以外的语言进行编码。这对于许多具有其他语言风格偏好或经验的开发人员来说非常有吸引力。 WebAssembly最初设计用于专注于C和C ++开发,它支持这些语言的功能,例如低级内存管理。

有可用的支持,Mozilla开发的另一种语言。但是,预计还将提供各种语言和编译器,并且它将在某种程度上引入对垃圾收集语言(如Java)的支持。你会发现其他语言的实验编译器开始变得可用。

实验表明,WebAssembly代码的解析速度明显快于JavaScript

第二个好处是表现。实验表明,WebAssembly代码的解析速度明显快于JavaScript(多达20次)。这为开发更复杂的网络软件提供了机会 - 比如3D图形引擎,图像处理等等。

因此,WebAssembly的早期新兴实用案例之一是希望生产在浏览器中运行的高端游戏的游戏开发人员。 Epic Games已经展示了一个虚幻引擎版本,该版本在浏览器中作为wasm模块运行。

WebAssembly还旨在与现有的JavaScript引擎集成,这意味着两个平台的模块应该是可互操作的。可以将Wasm模块导入JavaScript代码,然后可以利用其功能。目前,WebAssembly无法直接访问DOM或Web API,但它可以使用JavaScript来实现。

此外,没有任何限制WebAssembly只能在浏览器中运行,并且预计它将被移植到其他平台。这可以使构建支持Web和本机环境的跨平台应用程序变得更加容易。

安全影响

您可能想知道WebAssembly的安全隐患,因为这是低级语言的一般问题。然而,wasm不是真正的本地机器代码,而是设计为在沙盒环境中执行,并且遵循与JavaScript在浏览器中相同的安全约束。

如果您想开始使用WebAssembly,Emscripten是一个支持C和C ++编译和现有应用程序转换的编译器。您将找不到太多使用它的生产应用程序,但它代表了弥合浏览器和本机软件之间差距的另一个步骤。这绝对是一个值得关注的问题,如果你不构建wasm模块,你很快就会消耗它们。

网页设计活动生成伦敦返回2018年9月19日至21日,提供行业领先的演讲者,一整天的研讨会和宝贵的交流机会 - 不要错过它。立即获取您的Generate门票

阅读更多:



翻译字数超限