WebAssembly (WASM) 在过去几年一直是一个流行词 。这是一项引起广泛关注但在实践中应用较少的技术 。我一直很好奇它的现状 , 所以我调查并总结了我的发现 。其中一些可能会让您大吃一惊 。
背景
在 WebAssembly 标准问世之前 , JAVAscript 是 Web 浏览器唯一支持的编程语言 。然而 , WASM 从未被创建为 JavaScript 的替代品 , 而且它不能因为语言太低级了 。相反 , 它专门用于补充 Javascript 并解决其在执行计算和内存密集型任务(视频编辑、游戏、CAD 等)时的性能问题 。
文章插图
但是 , 随着它的发展 , 还会启用一些有趣且意想不到的副作用场景 , 正如您将在本文中看到的那样 。
在我们继续之前的一些快速说明:
您不直接编写 WASM 。相反 , 您可以使用 C++ 或 Rust 等高级语言并编译为 WASM 。
它以紧凑的二进制格式存储(如机器代码) 。
它在安全、隔离的沙箱中执行 。
就其本身而言 , 除了快速处理大量数字外 , 它并没有做太多事情 。没有网络 , 没有文件系统 , 也没有 DOM 访问 。
人们使用 WebAssembly 构建的内容可以分为两类:在浏览器中和在服务器中 。
在浏览器上
人们在浏览器中使用 WebAssembly 主要出于三个原因:
优化计算和资源密集型任务的性能 。
将遗留的本机应用程序迁移到 Web 应用程序 。
允许 Javascript 以外的语言在浏览器中运行 。
让我们探索这些用例的一些成功的 。
Figma
文章插图
如果您是 UI/UX 设计师或时不时搞砸您的设计的开发人员 , 那么在过去的一年里您不可能错过 Figma 。这是一款出色的产品 , 展示了当今网络应用程序可以拥有的最先进性能 。
WebAssembly 是 Figma 成功的秘诀之一 。令许多人惊讶的是 , 虽然是一个网络应用程序 , 但 Figma 的编辑器是用 C++ 编写的 , 甚至在 WebAssembly 出现之前 。鉴于浏览器仅执行 Javascript , 这怎么可能? 答案很简单; C++ 代码在交付到 Web 之前被转换为 Javascript 。
但为什么不从一开始就使用 Javascript 呢? 关键的区别在于 C++ 代码是如何转换为 JS 的 。Javascript 是一种非常动态的语言 。为了让它运行得更快 , 浏览器引擎做了很多魔术来动态优化它 。然而 , 结果仍然是次优且不可预测的 。有一种方法可以使用 Javascript 获得更好的性能 - 编写代码更像您使用静态语言的方式 , 以便引擎更容易处理 。Figma 最初使用“asm.js”来实现目标——它本质上是一个以高性能方式将 C++ 代码转换为 Javascript 代码的转译器 。
不过归根结底还是Javascript代码 , 通过网络加载并不紧凑 , 浏览器还需要解析它的文本 。这就是 WebAssembly 胜过之前方法的地方 。WASM 是一种面向机器的代码 。它比 Javascript 更紧凑 , 浏览器的处理成本也更低 。通过从 asm.js 迁移到 WebAssebmly , Figma 获得了 3 倍的性能提升 。
文章插图
AutoCAD
文章插图
作为 1982 年创建的产品 , AutoCad 比 Web 还早 , 而且规模庞大——它有高达 1500 万行的 C++ 代码 。很长一段时间以来 , 它一直想转移到网络上 , 但是用 Javascript 重写所有东西是不切实际的:大量的工作和更慢的结果产品 。最后 , WebAssembly 作为救世主来了 。
在许多方面 , AutoCAD 对 WebAssembly 的使用类似于 Figma , 只是它有一个额外的问题 , 即对 windows 操作系统的紧密依赖需要解决 。然而 , 看到 WebAssembly 作为一项相对较新的技术能够支持如此庞大而复杂的应用程序并使其在现代焕然一新 , 仍然令人惊叹 。
推荐阅读
- 女性如何丰胸(如何丰胸乳房)
- 粉圆怎么煮
- 低糖的水果有哪些(低糖低脂低热量的水果有哪些)
- 10个腰果的热量
- 10万元如何理财(目前有10万元怎么理财)
- 做一个app要多少钱(app制作费用)
- 车贷利率是多少(车贷提前还款是大忌)
- 新鲜豌豆煮多久才能熟
- 网贷多久会停止轰炸(网贷一般多久停止催收)
- 携程退款多久到账(携程酒店退款技巧)