1. WebAssembly 简介

WebAssembly 是一种新的编码方式,可以在现代的 Web 浏览器中运行——它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C++、C# 和 Rust 等语言提供编译目标,以便它们可以在 Web 上运行。它也被设计为可以与 JavaScript 共存,允许两者一起工作。

2. 如何使用.wasm中的方法

(1)创建js文件引入wasm文件

const go = new Go(); // Defined in wasm_exec.js
const WASM_URL = '/wasm/login/main.wasm'; // wasm 文件地址
var wasm;
if ('instantiateStreaming' in WebAssembly) {
    WebAssembly.instantiateStreaming(fetch(WASM_URL), go.importObject).then(function (obj) {
        wasm = obj.instance;
        go.run(wasm);
    })
} else {
    fetch(WASM_URL).then(resp =>
        resp.arrayBuffer()
    ).then(bytes =>
        WebAssembly.instantiate(bytes, go.importObject).then(function (obj) {
            wasm = obj.instance;
            go.run(wasm);
        })
    )
}

// 注册导出函数
function encrypt(plaintext, publicKeyBase64) {
    return window.wasmEncrypt(plaintext, publicKeyBase64);
}

// 注册导出函数
function decrypt(cryptoText, key) {
    return window.wasmDecrypt(cryptoText, key);
}

(2)项目html中引入js文件,就可以直接使用注册导出的函数了

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link id="systemLink" rel="icon" href="" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>*********</title>
    <script src="/wasm/login/wasm_exec.js"></script>
    <script src="/wasm/login/index.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐