Flutter 使用 Skia 构建,这是一个用 C++ 编写的 2D 图形库。 Flutter 的 Skia 引擎使其能够跨各种平台(包括 Web)创建可移植且高性能的应用程序。
大多数网络浏览器都理解 JavaScript 语言; 但是,Skia C++ API 可以通过 WebAssembly 在 Web 浏览器上运行。 WebAssembly 允许原生代码在浏览器中运行,方法是将其编译成浏览器可以理解的语言。
在本教程中,我们将介绍 WebAssembly 并了解它的好处。 我们还将了解 Flutter 代码如何与 WebAssembly 绑定进行交互。
什么是 WebAssembly?
我们为什么要使用 WebAssembly?
Dart 和 WebAssembly 的互操作性
在 Flutter Web 应用程序中使用 WebAssembly
使用 AssemblyScript 生成 WebAssembly 模块
在 Flutter 应用中使用 WebAssembly 模块
WebAssembly (Wasm) 是一种低级语言,以接近本机的性能运行。 它是一种具有紧凑二进制格式的虚拟堆栈机器,旨在成为高级语言的编译目标。
WebAssembly 使工程师能够使用 C、C++、Rust 和其他在浏览器中运行的高级语言编写代码。 Wasm 将用高级语言编写的代码编译为 WebAssembly 模块。 然后将它们加载到 Web 应用程序中并使用 JavaScript 调用。
浏览器可以快速将 WebAssembly 模块转换为任何机器的指令。
JavaScript 一直是浏览器理解的主要语言。 但是,在运行 3D 游戏等资源密集型应用程序时,JavaScript 往往会变得迟缓。 对于此类应用程序,需要接近原生的体验。 这就是 Wasm 的用武之地。
WebAssembly 与 JavaScript 一起工作,为我们的应用程序提供接近原生的速度。 由于模块体积小,Wasm 加载和执行速度更快,从而在 Web 上实现了高性能应用程序。
Wasm 使我们能够构建快速、高性能、可移植和内存安全的应用程序。 这是一个开放标准,旨在在其他平台上运行,而不仅仅是网络。 许多流行的语言至少对 WebAssembly 有一些支持。
超过 20 万开发人员使用 LogRocket 来创造更好的数字体验 了解更多 →
Dart Web 平台使 Dart 代码能够在 JavaScript 支持的平台上编译和运行。 我们还可以在 Dart 代码中调用现有的 JavaScript 代码,这可以通过 js包裹。
从 Dart 代码调用 JavaScript 代码和从 JavaScript 代码调用 Dart 代码的能力称为“Dart-JavaScript 互操作性”。
这 js包提供注释和函数,让我们指定 Dart 代码如何与