--- title: WebAssembly slug: WebAssembly tags: - WebAssembly - wasm translation_of: WebAssembly ---
WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。
对于网络平台而言,WebAssembly具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。在这种情况下,以前无法以此方式运行的客户端软件都将可以运行在Web中。
WebAssembly被设计为可以和JavaScript一起协同工作——通过使用WebAssembly的JavaScript API,你可以把WebAssembly模块加载到一个JavaScript应用中并且在两者之间共享功能。这允许你在同一个应用中利用WebAssembly的性能和威力以及JavaScript的表达力和灵活性,即使你可能并不知道如何编写WebAssembly代码。
而且,更棒的是,这是通过W3C WebAssembly Community Group开发的一项网络标准,并得到了来自各大主要浏览器厂商的积极参与。
WebAssembly.Module
对象包括了无状态的WebAssembly代码。该代码已经被浏览器编译并且能够通过Workers高效地共享,缓存到IndexedDB中以及多次实例化。WebAssembly.Instance
对象是一个有状态的、可执行的模块的实例。实例对象包含所有的能够从JavaScript调用到WebAssembly代码的导出的WebAssembly函数。WebAssembly.instantiate()
函数是编译和实例化WebAssembly代码的主要的API,它返回一个Module
及其第一个实例。WebAssembly.Memory
对象是一个可变长的{{jsxref("Global_objects/ArrayBuffer", "ArrayBuffer")}}。它拥有能够被实例存取的原始字节内存。WebAssembly.Table
对象是一个可变长类型数组。它存储诸如函数引用之类的不透明值并且能够被实例存取。CompileError
对象。LinkError
对象。RuntimeError
对象。Specification | Status | Comment |
---|---|---|
{{SpecName('WebAssembly JS')}} | {{Spec2('WebAssembly JS')}} | Initial draft definition of the JavaScript API. |
{{Compat("javascript.builtins.WebAssembly")}}