网易首页 > 网易号 > 正文 申请入驻

WebAssembly 介绍 | Linux 中国

0
分享至

导读:WebAssembly,也叫 Wasm,是一种为 Web 优化的代码格式和 API(应用编程接口),它可以大大提高网站的性能和能力。

本文字数:2566,阅读时长大约: 3分钟

https://linux.cn/article-13197-1.html
作者:Marco Fioretti
译者:geekpi

到底什么是 WebAssembly?

,也叫 Wasm,是一种为 Web 优化的代码格式和 API(应用编程接口),它可以大大提高网站的性能和能力。WebAssembly 的 1.0 版本于 2017 年发布,并于 2019 年成为 W3C 官方标准。

该标准得到了所有主流浏览器供应商的积极支持,原因显而易见:官方列出的 中提到了,其中包括视频编辑、3D 游戏、虚拟和增强现实、p2p 服务和科学模拟。除了让浏览器的功能比JavaScript 强大得多,该标准甚至可以延长网站的寿命:例如,正是 WebAssembly 为 提供了持续的支持。

不过,WebAssembly 并不只用于浏览器,目前它还被用于移动和基于边缘环境的 Cloudflare Workers 等产品中。

WebAssembly 如何工作?

.wasm 格式的文件包含低级二进制指令(字节码),可由使用通用栈的虚拟机以“接近 CPU 原生速度”执行。这些代码被打包成模块(可以被浏览器直接执行的对象),每个模块可以被一个网页多次实例化。模块内部定义的函数被列在一个专用数组中,或称为表(Table),相应的数据被包含在另一个结构中,称为 缓存数组(arraybuffer)。开发者可以通过 Javascript WebAssembly.memory() 的调用,为 .wasm 代码显式分配内存。

.wasm 格式也有纯文本版本,它可以大大简化学习和调试。然而,WebAssembly 并不是真的要供人直接使用。从技术上讲,.wasm 只是一个与浏览器兼容的编译目标:一种用高级编程语言编写的软件编译器可以自动翻译的代码格式。

这种选择正是使开发人员能够使用数十亿人熟悉的语言(C/C++、Python、Go、Rust 等)直接为用户界面进行编程的方式,但以前浏览器无法对其进行有效利用。更妙的是,至少在理论上程序员可以利用它们,无需直接查看 WebAssembly 代码,也无需担心物理 CPU 实际运行他们的代码(因为目标是一个虚拟机)。

但是我们已经有了 JavaScript,我们真的需要 WebAssembly 吗?

是的,有几个原因。首先,作为二进制指令,.wasm 文件比同等功能的 JavaScript 文件小得多,下载速度也快得多。最重要的是,Javascript 文件必须在浏览器将其转换为其内部虚拟机可用的字节码之前进行完全解析和验证。

而 .wasm 文件则可以一次性验证和编译,从而使“流式编译”成为可能:浏览器在开始下载它们的那一刻就可以开始编译和执行它们,就像串流电影一样。

这就是说,并不是所有可以想到的 WebAssembly 应用都肯定会比由专业程序员手动优化的等效 JavaScript 应用更快或更小。例如,如果一些 .wasm 需要包含 JavaScript 不需要的库,这种情况可能会发生。

WebAssembly 是否会让 JavaScript 过时?

一句话:不会。暂时不会,至少在浏览器内不会。WebAssembly 模块仍然需要 JavaScript,因为在设计上它们不能访问文档对象模型 (DOM)—— 。此外,.wasm 代码不能进行系统调用或读取浏览器的内存。WebAssembly 只能在沙箱中运行,一般来说,它能与外界的交互甚至比 JavaScript 更少,而且只能通过 JavaScript 接口进行。

因此,至少在不久的将来 .wasm 模块将只是通过 JavaScript 提供那些如果用 JavaScript 语言编写会消耗更多带宽、内存或 CPU 时间的部分。

Web 浏览器如何运行 WebAssembly?

一般来说,浏览器至少需要两块来处理动态应用:运行应用代码的虚拟机(VM),以及可以同时修改浏览器行为和网页显示的 API。

现代浏览器内部的虚拟机通过以下方式同时支持 JavaScript 和 WebAssembly:

1. 浏览器下载一个用 HTML 标记语言编写的网页,然后进行渲染

2. 如果该 HTML 调用 JavaScript 代码,浏览器的虚拟机就会执行该代码。但是...

3. 如果 JavaScript 代码中包含了 WebAssembly 模块的实例,那么就按照上面的描述获取该实例,然后根据需要通过 JavaScript 的 WebAssembly API 来使用该实例

4. 当 WebAssembly 代码产生的东西将修改 DOM(即“宿主”网页)的结构,JavaScript 代码就会接收到,并继续进行实际的修改。

我如何才能创建可用的 WebAssembly 代码?

越来越多的编程语言社区支持直接编译到 Wasm,我们建议从 的 开始,这取决于你使用什么语言。请注意,并不是所有的编程语言都有相同水平的 Wasm 支持,因此你的工作量可能会有所不同。

我们计划在未来几个月内发布一系列文章,提供更多关于 WebAssembly 的信息。要自己开始使用它,你可以报名参加 Linux 基金会的免费 在线培训课程。

这篇首次发布在 。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

欢迎遵照 CC-BY-NC-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
网传某地事业编欠薪10个月,社保断缴已闹上百姓呼声!

网传某地事业编欠薪10个月,社保断缴已闹上百姓呼声!

灯锦年
2026-05-13 19:39:30
2026年“端午放假通知”:4个好消息,2个坏消息,1个要注意

2026年“端午放假通知”:4个好消息,2个坏消息,1个要注意

小谈食刻美食
2026-05-14 07:51:29
湖人内部矛盾加剧,传詹东互相厌恶,詹姆斯立雕像基本无望

湖人内部矛盾加剧,传詹东互相厌恶,詹姆斯立雕像基本无望

艺兔体坛
2026-05-14 16:25:13
人民大会堂中式美学圈粉,美国国务卿鲁比奥频赞

人民大会堂中式美学圈粉,美国国务卿鲁比奥频赞

澎湃新闻
2026-05-14 14:11:15
王少杰正式离队广东队,驱车离开基地无人送行暗示不再回归

王少杰正式离队广东队,驱车离开基地无人送行暗示不再回归

七七自驾游
2026-05-14 13:39:35
30分8板6助,哈登表现征服众人,米切尔盛赞哈登,活塞主帅发火

30分8板6助,哈登表现征服众人,米切尔盛赞哈登,活塞主帅发火

老梁体育漫谈
2026-05-14 12:14:41
打破纪录!上海东站完成7.4万平方米钢结构屋盖整体提升,明年7月具备开通运营条件

打破纪录!上海东站完成7.4万平方米钢结构屋盖整体提升,明年7月具备开通运营条件

纵相新闻
2026-05-14 15:58:14
不少女网约车司机宣布退出女性友好计划,直言不想接女乘客

不少女网约车司机宣布退出女性友好计划,直言不想接女乘客

映射生活的身影
2026-05-12 20:56:00
全网刷屏的“摩洛哥新娘”事件,并没有表面那么简单……

全网刷屏的“摩洛哥新娘”事件,并没有表面那么简单……

桌子的生活观
2026-05-14 12:36:43
致1死5伤(其中1人伤势较重),警方:常某朋(男,40岁)涉嫌醉驾

致1死5伤(其中1人伤势较重),警方:常某朋(男,40岁)涉嫌醉驾

山西晚报
2026-05-14 10:04:48
糯米立大功!医生发现:坚持吃糯米一段时间,身体或迎来5个变化

糯米立大功!医生发现:坚持吃糯米一段时间,身体或迎来5个变化

橘子约定
2026-05-13 21:25:24
兄妹勇救4名落水者后遭拉黑,被告知“被救者身份不便公开”;哥哥系盐城公交车司机,大气发声:救人是自愿的;官方:不影响见义勇为认定

兄妹勇救4名落水者后遭拉黑,被告知“被救者身份不便公开”;哥哥系盐城公交车司机,大气发声:救人是自愿的;官方:不影响见义勇为认定

扬子晚报
2026-05-14 12:13:49
“这真不是AI?”中南大学高考祝福视频火了,出镜男生太帅被质疑

“这真不是AI?”中南大学高考祝福视频火了,出镜男生太帅被质疑

妍妍教育日记
2026-05-14 09:56:16
14号收评:沪指失守4200点,所有人都注意了,大盘后市开始这样看

14号收评:沪指失守4200点,所有人都注意了,大盘后市开始这样看

春江财富
2026-05-14 15:27:52
“摸奶子”惹争议!OPPO的流量反噬来了?莫奈:我背锅?!

“摸奶子”惹争议!OPPO的流量反噬来了?莫奈:我背锅?!

品牌新
2026-05-13 17:03:19
“降噪耳机受害者出现”,冲上热搜

“降噪耳机受害者出现”,冲上热搜

观察者网
2026-05-13 09:31:15
随着骑士3-2领先活塞,马刺3-2森林狼,NBA季后赛最终4强基本出炉

随着骑士3-2领先活塞,马刺3-2森林狼,NBA季后赛最终4强基本出炉

球场没跑道
2026-05-14 11:16:03
《亢奋》28岁女星自曝:打了87次肉毒后,额头肌肉萎缩抬不起眉

《亢奋》28岁女星自曝:打了87次肉毒后,额头肌肉萎缩抬不起眉

热搜摘要官
2026-05-13 15:32:11
三个月前还敢强收中企港口的巴拿马,如今竟秒变“软骨头”了!

三个月前还敢强收中企港口的巴拿马,如今竟秒变“软骨头”了!

阿七说史
2026-05-13 15:41:10
女孩退礼服事件后续!演出团受牵连,已暂停演出,女孩求和解被拒

女孩退礼服事件后续!演出团受牵连,已暂停演出,女孩求和解被拒

天天热点见闻
2026-05-13 06:56:38
2026-05-14 16:52:49
Linux
Linux
Linux 中国开源社区
8018文章数 73112关注度
往期回顾 全部

科技要闻

马斯克说会谈很顺利 黄仁勋点赞 库克比耶

头条要闻

重庆一栋百年古建筑以399万公开拍卖 仅限中国人竞买

头条要闻

重庆一栋百年古建筑以399万公开拍卖 仅限中国人竞买

体育要闻

登海报!哈登30+8+6创多项纪录 第8次赢天王山

娱乐要闻

何九华官宣当爸!全程不提孩子妈

财经要闻

习近平同美国总统特朗普会谈

汽车要闻

新时代传统豪华是什么样? 上汽奥迪E7X给出了自己的答案

态度原创

时尚
手机
艺术
教育
数码

T恤+低腰阔腿裤、衬衫+低腰半裙,今年夏天最时髦的搭配,谁穿谁好看!

手机要闻

小米17 Max挑战极限!影像旗舰硬生生塞进8000mAh电池 机圈罕见

艺术要闻

充满光感的花卉油画 | 亚历山大·沙巴德伊

教育要闻

华罗庚竞赛题,解法太巧妙了,学霸想不到

数码要闻

内存容量突破天花板!全何科技推出256GB单条RDIMM内存 全面适配英特尔至强6平台

无障碍浏览 进入关怀版