WebAssembly

54 阅读1分钟

image.png

WebAssembly(简称 WASM)是一种在现代浏览器中运行的二进制格式,它允许代码以接近原生的速度在网页上执行。WebAssembly 被设计为一种可移植、高效和安全的编译目标,适合高性能应用场景,例如游戏、图像处理、加密计算等。

  • 高性能:WebAssembly 是一种低级字节码,可以被浏览器快速解析和执行,其执行速度接近本地代码。
  • 跨语言支持:多种编程语言(如 C/C++、Rust 等)都可以编译成 WebAssembly,使得开发者可以在浏览器中使用非 JavaScript 语言编写高性能代码。
  • 安全性:WebAssembly 在沙箱环境中运行,与 JavaScript 一样受到浏览器的安全限制,确保了执行过程中的安全性。
  • 与 JavaScript 互操作性:WebAssembly 可以调用 JavaScript 函数,反之亦然,这使得 WebAssembly 和 JavaScript 可以协同工作,发挥各自的优势

WebAssembly 并不是为了替代 JavaScript 而设计的,而是作为 JavaScript 的补充,解决其在某些场景下的性能瓶颈问题。

使用AssemblyScript编写wasm(www.assemblyscript.org/examples.ht…)

1、git clone github.com/AssemblyScr…

cd assemblyscript

npm install

npm link

2、安装assemblyscript包编译器

配置asconfig.json

{
  "targets": {
    "release": {
      "outFile": "src/demo/build/release.wasm",
      "textFile": "src/demo/build/release.wat",
      "sourceMap": true
    }
  },
  "options": {
    "buildings": "esm"
  }
}

package.json配置

"scripts": {
		"asbuild":"asc ./src/demo/assembly/index.ts --target release"
}

启动编译执行pnpm run asbuild,生成三个文件,可以在js中调用胶水代码暴露出的方法

image.png