我们使用Go语言编写WebAssembly模块,并在Node.js和浏览器中调用的示例。
首先,我们需要编写一个简单的Go程序,将两个数字相加。以下是我们的Go代码:package main import "fmt" func add(a, b int) int { return a + b } func main() { fmt.Println(add(2, 3)) }将上述代码保存为`example.go`文件。接下来,我们需要使用Go编译器将Go代码编译为WebAssembly二进制文件。请确保已安装Go编译器,并执行以下命令:GOARCH=wasm GOOS=js go build -o example.wasm example.go这将生成一个名为`example.wasm`的WebAssembly二进制文件。现在,我们可以在Node.js中加载和调用WebAssembly模块了。以下是完整的Node.js代码:
const fs = require('fs'); // 读取.wasm文件 const wasmCode = fs.readFileSync('example.wasm'); // 加载并实例化WebAssembly模块 WebAssembly.instantiate(wasmCode, {}) .then(result => { const wasmExports = result.instance.exports; // 调用WebAssembly模块中的函数 const sum = wasmExports.add(2, 3); console.log(sum); // 输出 5 });这将加载名为`example.wasm`的WebAssembly模块,并使用`WebAssembly.instantiate()`方法将其实例化为JavaScript对象。然后,我们可以使用JavaScript对象上的方法来与WebAssembly模块进行交互。在这个示例中,我们调用了`add()`函数,并将2和3作为参数传递给它,然后将结果打印到控制台上。接下来,让我们看看如何在浏览器中加载和调用WebAssembly模块。以下是完整的HTML和JavaScript代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>WebAssembly Example</title> </head> <body> <script> // 加载并实例化WebAssembly模块 WebAssembly.instantiateStreaming(fetch('example.wasm')) .then(result => { const wasmExports = result.instance.exports; // 调用WebAssembly模块中的函数 const sum = wasmExports.add(2, 3); console.log(sum); // 输出 5 }); </script> </body> </html>这将使用`fetch()`函数从服务器上加载名为`example.wasm`的WebAssembly模块,并使用`WebAssembly.instantiateStreaming()`方法将其实例化为JavaScript对象。然后,我们可以使用JavaScript对象上的方法来与WebAssembly模块进行交互。在这个示例中,我们调用了`add()`函数,并将2和3作为参数传递给它,然后将结果打印到控制台上。
网友回复