广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang语言中wasm 环境搭建的过程是怎样的
  • 453
分享到

golang语言中wasm 环境搭建的过程是怎样的

2023-06-25 13:06:16 453人浏览 八月长安
摘要

本篇文章为大家展示了golang语言中wasm 环境搭建的过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Golang 安装通过官方地址 下载。MacOS 也可通过 brew 快速安装:$

本篇文章为大家展示了golang语言中wasm 环境搭建的过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Golang 安装

通过官方地址 下载。MacOS 也可通过 brew 快速安装:

$ brew install golang$ go versiongo version go1.17.2 darwin/arm64

golang 环境测试

新建文件 main.go ,写入:

package mainimport "fmt"func main() {  fmt.Println("Hello World!")}

执行 go run main.go ,将输出:

$ go run main.go
Hello World!

如果启用了 GO MODULES ,则需要使用 go mode init 初始化模块,或设置 GO111MODULE=auto 。

将 golang 打包为 WASM

通常有两种打包方式,一种是 golang 自带的,另外是使用 tinygo 。推荐使用 tinygo ,因为编译出的 wasm 模块更小。

  • 使用 golang 原生编译

在编译 wasm 模块前,需要设置 golang 交叉编译参数,目标系统 GOOS=js 和目标架构 GOARCH=wasm ,编译 wasm 模块:

// macos$ GOOS=js GOARCH=wasm go build -o main.wasm// windows 临时设置 golang 环境参数(仅作用于当前CMD)$ set GOOS=js $ set GOARCH=wasm$ go build -o main.wasm
  • 使用 tinygo 编译

直接按照官方文档安装即可,MacOS 如下:

$ brew tap tinygo-org/tools$ brew install tinygo$ tinygo versiontinygo version 0.20.0 darwin/amd64 (using go version go1.17.2 and LLVM version 11.0.0)

使用以下命令对 main.go 再次进行打包:

$ tinygo build -o main-tiny.wasm

  • 打包文件大小对比

$ du -sh ./*.wasm228K    ./main-tiny.wasm1.9M    ./main.wasm

在浏览器中跑起来

要想在浏览器中跑 main.wasm ,首先需要 JS 胶水代码,golang 已经为我们提供了,直接复制过来。需要注意的是,使用 tinygo 和 原生编译的胶水代码是有差异的,根据具体情况拷贝对应的:

// 原生编译$ cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .// tinygo编译$ cp "$(tinygo env TINYGOROOT)/targets/wasm_exec.js" ./wasm_exec_tiny.js

其次,需要一个 html 入口文件,创建 index.html 文件,并写入以下代码:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta Http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title>  <script src="./wasm_exec_tiny.js"></script></head><body>  <script>    const go = new Go(); // wasm_exec.js 中的定义    WEBAssembly.instantiateStreaming(fetch('./main-tiny.wasm'), go.importObject)      .then(res => {        go.run(res.instance); // 执行 go main 方法      });  </script></body></html>

最后,起一个 http server 让它跑起来吧~

// pythonpython3 -m http.server$ Python2 -m Simplehttpserver// node$ npm i -g http-server$ hs// gp$ go get -u GitHub.com/shurcooL/goexec$ goexec 'http.ListenAndServe(`:8080`, http.FileServer(http.Dir(`.`)))'

异常记录

  • 通过 node 的 http-server 起的服务,加载会报错:

> TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.

原因是 wasm 文件响应头的 content-type 为 application/wasm; charset=utf-8 ,应该为 application/wasm 。已知的解决方法为修改 HTML 中 wasm 的初始化方式为:

fetch('./main-tiny.wasm')  .then(res => res.arrayBuffer())  .then(buffer => {    WebAssembly.instantiate(buffer, go.importObject)      .then(res => {        go.run(res.instance);      })  })

上述内容就是golang语言中wasm 环境搭建的过程是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: golang语言中wasm 环境搭建的过程是怎样的

本文链接: https://www.lsjlt.com/news/305220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang语言中wasm 环境搭建的过程是怎样的
    本篇文章为大家展示了golang语言中wasm 环境搭建的过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。golang 安装通过官方地址 下载。MacOS 也可通过 brew 快速安装:$...
    99+
    2023-06-25
  • golang语言中wasm 环境搭建的过程详解
    golang 安装 通过官方地址 下载。MacOS 也可通过 brew 快速安装: $ brew install golang $ go version go version ...
    99+
    2022-11-12
  • Vscode搭建远程c开发环境的过程是怎样的
    这期内容当中小编将会给大家带来有关Vscode搭建远程c开发环境的过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基础环境目标机:ubuntu20开发机:win10、mac 安装远程开发套件本机...
    99+
    2023-06-21
  • 集成Visual Studio 2010F#语言的开发环境是怎样搭建
    本篇文章给大家分享的是有关集成Visual Studio 2010F#语言的开发环境是怎样搭建,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Visual Studio 2010...
    99+
    2023-06-17
  • Python语言中的Selenium环境搭建
    目录1.selenium 介绍1.1 selenium历史1.Selenium 1.02.Selenium 2.03.Selenium 3.02. selenium的环境配置步骤2....
    99+
    2022-11-11
  • windows下在vim中搭建c语言开发环境的详细过程
    目录1 代码格式化1.1 clang-format初体验1.2 在vim中格式化c代码2 代码自动补全3 编译运行源程序1 代码格式化 C语言代码的格式化需要使用clang-form...
    99+
    2022-11-12
  • windows下使用vscode搭建golang环境并调试的过程
    目录安装环境变量配置运行helloword设置代理vscode编辑器调试golang一种语言会老吗? 我觉得会的,Objective-C语言变老了,就出现了 Swift语言。头号的语...
    99+
    2022-11-11
  • Couchbase中环境搭建与Java的测试是怎样的
    这篇文章给大家介绍Couchbase中环境搭建与Java的测试是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Couchbase Server (前身是 Membase) 是一个分布式的面向文档的 No...
    99+
    2023-06-17
  • java语言开发的集成环境怎么搭建
    要搭建Java语言开发的集成环境,可以按照以下步骤进行操作:1. 安装JDK(Java Development Kit):首先,需要...
    99+
    2023-09-25
    java
  • jumpserver搭建过程是怎样的
    jumpserver搭建过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。     jumpserv...
    99+
    2022-10-18
  • Docker中搭建配置Git环境的过程
    Docker中配置Git环境 工作中遇到了需要在Docker环境中操作GitLab仓库的场景,需要事先在Docker中搭好Git环境。 由于在Docker中对Git仓库操作是全自动化...
    99+
    2022-11-12
  • 教你在docker 中搭建 PHP8 + Apache 环境的过程
    目录镜像介绍具体操作步骤PHP 安装扩展以安装 pdo-mysql 扩展为例搭建 PHP 站点镜像介绍 PHP8 + Apache 的官方仓库: https://hub.docker...
    99+
    2022-11-13
  • ubuntu里面搭建虚拟环境过程中遇到的
    今天开始学习Django,发现要搭建虚拟环境。就按照百度上面的方法在ubuntu中输入终端命名进行配置。发现自己是按照步骤来的。却总是在最后一步启动 1 source .bashrc 的时候出现''command命令找不到。后来自己尝...
    99+
    2023-01-31
    过程中 环境 ubuntu
  • Linux开发环境搭建工具vagrant的安装是怎样的
    小编今天带大家了解Linux开发环境搭建工具vagrant的安装是怎样的,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux开发...
    99+
    2023-06-28
  • mysql linux环境编译存储过程是怎样的
    mysql linux环境编译存储过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。   &...
    99+
    2022-10-19
  • R语言基于Keras的MLP神经网络及环境怎么搭建
    这篇文章主要为大家分析了R语言基于Keras的MLP神经网络及环境怎么搭建的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“R语言基于Keras的MLP神经网络...
    99+
    2023-06-26
  • MySQL 5.5 主主复制搭建过程是怎样的
    MySQL 5.5 主主复制搭建过程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 --节点1 IP 19...
    99+
    2022-10-19
  • 为Linux系统配置多语言环境的基本方法是怎样的
    为Linux系统配置多语言环境的基本方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。修改 /etc/sysconfig/i18n 文件,如LANG=&...
    99+
    2023-06-12
  • sublimetext3搭建配置c语言编译环境的详细图解教程(小白级)
    目录使用sublime text3编译c语言部分准备工作配置环境变量新建sublime text3的c语言编译环境举例软件下载可以在官网下载,均为免费软件有问题可以联系我邮箱求助:s...
    99+
    2023-01-16
    sublime text3配置c语言编译环境 sublime text3搭建c语言环境
  • Python语言中计数方法的演变过程是怎么样的
    Python语言中计数方法的演变过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。有时候,利用Python语言简洁、优雅地解决问题的方法,会随着时间变化。随着Pyth...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作