很快,JavaScript 就不会成为网络的通用语言。由于谷歌、微软、Mozilla、苹果等一些大公司与 W3C 联手创建了一个名为 WebAssembly 的全新标准。好东西,它将被所有浏览器支持。
那么, WebAssembly代表什么?
正式地说,WebAssembly 或 wasm 是一种新的可移植、大小和加载时间高效的格式,适合编译到网络。它是一种新的网络二进制格式。它为 Web 和 JavaScript 以外的语言编写应用程序。它包含一种类似于程序集的低级语言,可以用文本表示,然后转换为可在所有现代浏览器上运行的二进制格式,但是您不会直接编写此代码,而是将其用作编写程序的编译目标其他语言。
为什么需要 WebAssembly?
JavaScript 是健壮和有用的。与任何其他语言一样,它并不适合解决所有问题。
多年来,许多公司试图通过扩展它的方式以自己的方式弥补 JavaScript 的缺点,例如 asm.js(Mozilla)、typescript(微软)、NACL(谷歌)。现在,这些项目和公司与 W3C 一起提供了一个名为 WebAssembly 的解决方案。使用 Emscripten,其他语言可以编译或转化为 JavaScript,但 JavaScript 仍然是这些语言的主要目标,而不是 VM。使用 WebAssembly,无需转译为 JavaScript,但会降低系统的低级别,相当于字节码。
想象一个世界,您可以使用 C++、Rust、 Python、Go 甚至 COBOL 构建软件,在 Web 浏览器中将该软件交付给最终用户,无需任何安装和接近本机的性能,这个世界在 2019 年 12 月成为现实当 Web Assembly 成为正式的 W3C 标准时。
您可以使用 Unity 和 C# 构建游戏,然后将其编译为 Web 程序集,然后可以在浏览器中交付。现在,重要的是要注意,它并不打算取代 JavaScript,实际上两者并排工作得很好,例如 Figma 使用 React.js 作为其外部 UI,而不是在内部,您拥有一个高性能的 C++ 设计工具,感觉与本机软件一样快。
Web 开发本身就是一个具有挑战性的部分,其中事物正在迅速发展,而 WebAssembly 将是一个新的补充。有了这个,我们可能会看到许多新应用程序中使用的网络,这在今天的场景中是不可能的。 WebAssembly 将摆脱当今网络的束缚,从而打开更多的大门。
WebAssembly 使用起来非常灵活,并支持以下语言:.Net、Astro、Astro、Brainfuck、C、C#、C++、Clean、Co、COBOL、D、Eel、Elixir、F#、Faust、Forth、Go、Grain、 Haskell、 Java、JavaScript、Julia、Idris、Kotlin/Native、Kou、Lobster、Lua、Lys、Never、Nim、Ocaml、Perl、 PHP、Plorth、Poetry、 Python、Prolog、Ruby、Rust、Scheme、Scopes、Swift、 TypeScript、Wah、Walt、Wam 和 Zig。
WebAssembly 相对于 JavaScript 的优势——
- 使用其他语言(如 c/c++)编写性能关键代码。
- WebAssembly 的本地解码速度比解析 JavaScript 快得多。
- 它在移动设备上的加载速度明显加快。
- 在应用程序之间共享代码。
这是 JavaScript 的终结吗?
一个大不! JavaScript 有足够的惯性来推动未来几十年的网络发展。虽然 WebAssembly 将允许将更多语言编译到 Web 中,但 JavaScript 将继续存在。 WebAssembly 将通过补充 JavaScript 来提升 JavaScript,用 WebAssembly 编写的应用程序也将能够与 JavaScript 集成。 JavaScript 正在与 Node.js 建立的后端语言进行足够的竞争,这一事实证明 JavaScript 仍然很强大,并将继续下去。同时,最好继续使用 JavaScript 并了解其新功能。 JavaScript 还在管道中获得了新的令人兴奋的功能,如 pthreads、simd。
WebAssembly 仍处于起步阶段。只有时间可以告诉我们它将如何发展。有一段时间 wasm 和 asm.js 将保持等价于通过 JS 支持 wasm 的 polyfilling。在那之后 wasm 和 JS 可能会发生分歧。将新标准引入网络既困难又令人兴奋。但好处是我们现在有一个开放的、供应商中立的、跨浏览器的、基于经验的标准、承诺和参与网络上的主要开源实施。
参考:
我的博文