GO语言篇之WebAssembly

GO语言篇之WebAssembly

WebAssembly是一种高效的二进制编码方式,可以在现代浏览器中以接近原生的性能运行

GO语言支持WebAssembly(简称Wasm)编译目标,通过使用GO语言编写Wasm,将GO程序转化为可以在现代浏览器中运行的Web应用程序

  1. 我使用的编辑器是vscode,需要在项目的根目录下新建.vscode/settings.json

.vscode/settings.json

json 复制代码
{
    "go.toolsEnvVars": {
        "GOARCH": "wasm",
        "GOOS": "js"
    },
    "go.testEnvVars": {
        "GOARCH": "wasm",
        "GOOS": "js"
    },
    "go.installDependenciesWhenBuilding": false
}
  1. 编写GO代码
go 复制代码
package main

import "syscall/js"

func main() {
    //获取全局对象
    global:=js.Global()
    //获取alert函数
    alert:=global.Get("alert")
    //调用alert函数
    alert.Invoke("Hello WebAssembly")
}
  1. 编译成wasm
sh 复制代码
GOOS=js GOARCH=wasm go build -o go.wasm
  1. 拷贝js胶水文件
sh 复制代码
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .
  1. 编写html文件
html 复制代码
<html>
    <script src="wasm_exec.js"></script>
    <script>
        const go = new Go();
        WebAssembly.instantiateStreaming(fetch("go.wasm"), go.importObject).then((result) => go.run(result.instance));
    </script>
</html>
  1. 启动web服务
sh 复制代码
# 安装全局的serve
npm i -g serve
# 启动web服务加载当前页面
serve
  1. 浏览器访问http://localhost:3000,不出意外,此时你的浏览器已经弹出Hello WebAssembly的提示了

总体来说,GO语言编写WebAssembly还是比较简单的

相关推荐
csbysj20201 分钟前
SQL UNION 操作符详解
开发语言
Volunteer Technology3 分钟前
Spring AI MCP案例
java·开发语言·数据库
郝学胜-神的一滴6 分钟前
干货版《算法导论》04:渐近复杂度与序列接口实战
java·开发语言·数据结构·c++·python·算法
zzzsde6 分钟前
【Linux】信号处理(3)信号处理&&valatile关键字
linux·运维·服务器·开发语言·算法
Dylan的码园11 分钟前
2026年免费远程控制软件哪个好?ToDesk向日葵UU远程免费版横评,不限次数不限时长
服务器·开发语言·php
_Rookie._14 分钟前
部署python后端,以及Dockerfile 的 RUN CMD ENTRYPOINT字段
开发语言·python
dog25016 分钟前
解析几何的力量(1)
服务器·开发语言·网络·php
99乘法口诀万物皆可变17 分钟前
BMS HIL 自动化测试框架方案(基于 CANoe + C# + Excel)
开发语言·c#·excel
AgentOPC25 分钟前
Cerebras WSE-3 vs Nvidia H100/H200/B200:详细技术对比——谁才是 AI 时代真正的“芯片之王“
开发语言·人工智能·nvidia
qq_25183645728 分钟前
基于java 汽车检修管理系统设计与实现 论文
java·开发语言·汽车