- WebAssembly 教程
- WebAssembly - 主页
- WebAssembly - 概述
- WebAssembly - 简介
- WebAssembly-WASM
- WebAssembly - 安装
- WebAssembly - 编译为 WASM 的工具
- WebAssembly - 程序结构
- WebAssembly - JavaScript
- WebAssembly - Javascript API
- WebAssembly - 在 Firefox 中调试 WASM
- WebAssembly - “你好世界”
- WebAssembly - 模块
- WebAssembly - 验证
- WebAssembly - 文本格式
- WebAssembly - 将 WAT 转换为 WASM
- WebAssembly - 动态链接
- WebAssembly - 安全
- WebAssembly - 使用 C
- WebAssembly - 使用 C++
- WebAssembly - 使用 Rust
- WebAssembly - 使用 Go
- WebAssembly - 使用 Nodejs
- WebAssembly - 示例
- WebAssembly 有用资源
- WebAssembly - 快速指南
- WebAssembly - 有用的资源
- WebAssembly - 讨论
WebAssembly - JavaScript
本章将列出 WebAssembly 和 Javascript 之间的比较。
Javascript 是一种我们在浏览器中经常使用的语言。现在,随着 WebAssembly 的发布,我们也可以在浏览器中使用 WebAssembly。
WebAssembly 出现的原因并不是要取代 javascript,而是为了处理某些 javascript 难以处理的事情。
例如
使用 javascript 很难完成图像识别、CAD 应用程序、实时视频增强、VR 和增强现实、音乐应用程序、科学可视化和模拟、游戏、图像/视频编辑等任务。
使用C/C++、Rust等高级语言,现在可以将其编译为WebAssembly,很容易完成上述任务。WebAssembly 生成易于在浏览器内执行的二进制代码。
这里是 Javascript 和 WebAssembly 之间的比较列表。
参数 | JavaScript | 网络组装 |
---|---|---|
编码 |
您可以轻松地用 Javascript 编写代码。编写的代码是人类可读的并保存为 .js。在浏览器内部使用时,您需要使用 <script> 标签。 |
代码可以在 WebAssembly 中以文本格式编写,并保存为 .wat。以.wat 格式编写代码很困难。最好从其他高级语言编译代码,而不是从头开始编写 .wat。 您无法在浏览器内执行 .wat 文件,必须使用可用的编译器或在线工具将其转换为 .wasm。 |
执行 |
用 javascript 编写的代码在浏览器中使用时必须进行下载、解析、编译和优化。 |
我们的 .wasm 中的 WebAssembly 代码已编译为二进制格式。 |
内存管理 |
JavaScript 在创建变量时分配内存,在不使用时释放内存并将其添加到垃圾回收中。 |
WebAssembly 中的内存是保存数据的数组缓冲区。您可以使用 Javascript API WebAssembly.memory() 分配内存。 WebAssembly 内存以数组格式存储,即易于理解和执行的平面内存模型。 WebAssembly 中内存模型的缺点是 -
|
加载时间和性能 |
对于 javascript,当在浏览器内部调用时,必须下载并解析 javascript 文件。随后,解析器将源代码转换为 JavaScript 引擎在浏览器中执行代码的字节码。 Javascript 引擎非常强大,因此,与 WebAssembly 相比,Javascript 的加载时间和性能都非常快。 |
WebAssembly 最重要的目标是比 JavaScript 更快。由高级语言生成的 Wasm 代码尺寸更小,因此加载时间更快。 但是,像 GO 这样的语言,当编译为 wasm 时,会为一小段代码生成一个大文件。 WebAssembly 的设计方式使其编译速度更快,并且可以在所有主要浏览器上运行。与 JavaScript 相比,WebAssembly 在性能方面仍然需要进行大量改进。 |
调试 |
JavaScript 是人类可读的并且可以轻松调试。在浏览器内向 JavaScript 代码添加断点可以让您轻松调试代码。 |
WebAssembly 提供文本格式的代码,可读,但仍然很难调试。Firefox 允许您在浏览器中查看 .wat 格式的 wasm 代码。 您无法在 .wat 中添加断点,这将在将来提供。 |
浏览器支持 |
JavaScript 在所有浏览器中都能正常运行。 |
所有主流 Web 浏览器都支持 WebAssembly。 |