我们使用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作为参数传递给它,然后将结果打印到控制台上。
网友回复
js如何流式输出ai的回答并折叠代码块,点击代码块右侧可预览代码?
ai大模型如何将文章转换成可视化一目了然的图片流程图图表?
大模型生成html版本的ui原型图和ppt演示文档的系统提示词怎么写?
rtsp视频直播流如何转换成websocket流在h5页面上观看?
为啥coze会开源工作流agent coze studio?
如何检测网页是通过收藏夹打开的?
python如何实现类似php的http动态脚本请求处理响应代码?
js如何实现类似php的http动态脚本请求处理响应代码?
trae与solo有啥区别不同?
vue如何让ai动态生成问卷调查多步骤表单式收集基础信息自动规划执行任务?