WebAssembly入门课
于航
PayPal 高级软件工程师
新⼈⾸单¥9.9
1242 人已学习
课程目录
已更新 14 讲 / 共 22 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 我们为什么要了解 WebAssembly?
免费
01 | 基础篇:学习此课程你需要了解哪些基础知识?
02 | 历史篇:为什么会有 WebAssembly 这样一门技术?
核心原理篇 (6讲)
03 | WebAssembly 是一门新的编程语言吗?
04 | WebAssembly 模块的基本组成结构到底有多简单?
05 | 二进制编码:WebAssembly 微观世界的基本数据规则是什么?
06 | WAT:如何让一个 WebAssembly 二进制模块的内容易于解读?
07 | WASI:你听说过 WebAssembly 操作系统接口吗?
08 | API:在 WebAssembly MVP 标准下你能做到哪些事?
应用篇 (5讲)
09 | WebAssembly 能够为 Web 前端框架赋能吗?
10 | 有哪些已经投入生产的 WebAssembly 真实案例?
11 | WebAssembly 在物联网、多媒体与云技术方面有哪些创新实践?
12 | 有哪些优秀的 WebAssembly 编译器与运行时?
13 | LLVM:如何将自定义的语言编译到 WebAssembly?
WebAssembly入门课
15
15
1.0x
00:00/00:00
登录|注册

08 | API:在 WebAssembly MVP 标准下你能做到哪些事?

于航 2020-09-21
你好,我是于航。
在目前与 Wasm 相关的一系列标准中,我们可以将这些标准主要分为两个部分:“Wasm 核心标准(Core Interfaces)”以及“嵌入接口标准(Embedding interfaces)”。
其中,“Wasm 核心标准”主要定义了与 “Wasm 字节码”、“Wasm 模块结构”、“WAT 可读文本格式”以及模块验证与指令执行细节等相关的内容。关于这部分标准中的内容,我在前面几节课中,已经有选择性地为你挑选了部分重点进行解读。
而另一个标准“嵌入接口标准”,则定义了有关 Wasm 在 Web 平台上,在与浏览器进行交互时所需要使用的相关 Web 接口以及 JavaScript 接口。在本节课里,我们将讨论有关于这些 API 接口的内容。相信在学完本节课后你便会知道,在当前的 MVP 标准下,我们能够使用 Wasm 在 Web 平台上做些什么?哪些又是 Wasm 暂时无法做到的?

Wasm 浏览器加载流程

那在开始真正讲解这些 API 之前,我们先来看一看,一个 Wasm 二进制模块需要经过怎样的流程,才能够最终在 Web 浏览器中被使用。你可以参考一下我画的这张图,这些流程可以被粗略地划分为以下四个阶段。
首先是 “Fetch” 阶段。作为一个客户端 Web 应用,在这个阶段中,我们需要将被使用到的 Wasm 二进制模块,从网络上的某个位置通过 HTTP 请求的方式,加载到浏览器中。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《WebAssembly入门课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥9.9
立即订阅
登录 后留言

精选留言(5)

  • 空间
    目前局限性(不是很确定):
    1. 不能脱离JS环境
    2. 和JS的相互调用又不好用,麻烦
    3. 虚拟机没有像JS一样访问浏览器功能的诸多接口如DOM, webgl, 定位,传感器,语音... 这些可以作为虚拟机在浏览器上提供的基础库,如果是其他环境(如作为云服务网格的插件)也可以提供不同的基础库
    2020-10-01
  • 猴哥
    wasm和video若能更好的结合,解决播放H265的视频就好了
    2020-09-27
  • 一步
    在 nodejs 的环境中进行测试 ,也是有上面那些 WebAssembly 的构造函数和方法的, 那么可以直接在 nodejs 的生产环境中使用吗? 兼容程度是怎么样的?

    作者回复: 关于兼容性可以在 MDN 上对应各个 Wasm API 最下面的兼容性列表中查看哈。目前来看,在最新版的 Nodejs 中,除了 Streaming 相关的 API,其他的应该都有支持的,因此是可以直接使用的。而关于对 WASI 的兼容性,可以参考这里:https://nodejs.org/api/wasi.html

    2020-09-24
  • 大土豆
    获取完之后,没有全部编译成平台相关的机器码吧?还有一部分字节码,解释执行

    作者回复: 嗯嗯,我这里讲的可能不太严谨,其实应该是平台相关的代码,比如V8,那就是V8内部用于表示WebAssembly.Module 这个对象的代码组织形式。一般来说会先解释执行字节码来快速启动,然后再由JIT编译成机器码。当然具体实现可能有所不同。

    2020-09-21
  • 青史成灰
    从第一课到现在,都是文本。。。多搞点代码,是不是更好些。毕竟程序员,代码比文本更加直观

    作者回复: 代码会放到实战篇哈。

    2020-09-21
收起评论
5
返回
顶部