Golang WebAssembly 入门

Golang 在1.11版本中引入了 WebAssembly 支持,意味着以后可以用 go编写可以在浏览器中运行的程序,当然这个肯定也是要受浏览器沙盒环境约束的.

1. 浏览器中运行 Go

1.1 code

package main
func main() {println("Hello, WebAssembly!")
}

1.2 编译

必须是 go1.11才行

GOARCH=wasm GOOS=js go build -o test.wasm main.go

1.3 运行

单独的 wasm 文件是无法直接运行的,必须载入浏览器中.

mkdir test
cp test.wasm test
cp $GOROOT/misc/wasm/wasm_exec.{html,js} .

1.3.1 一个测试 http 服务器

chrome 是不支持本地文件中运行 wasm 的,所以必须有一个 http 服务器

//http.go
package mainimport ("flag""log""net/http""strings"
)var (listen = flag.String("listen", ":8080", "listen address")dir    = flag.String("dir", ".", "directory to serve")
)func main() {flag.Parse()log.Printf("listening on %q...", *listen)log.Fatal(http.ListenAndServe(*listen, http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {if strings.HasSuffix(req.URL.Path, ".wasm") {resp.Header().Set("content-type", "application/wasm")}http.FileServer(http.Dir(*dir)).ServeHTTP(resp, req)})))
}

1.3.2 http.go

mv http.go test
cd test
go run http.go 

1.4 效果

在浏览器中打开http://localhost:8080/wasm_exec.html,点击 run 按钮,可以在控制台看到 Hello, WebAssembly!字符串

2. node中运行 wasm

这个更直接

node wasm_exec.js test.wasm

就可以在控制台看到Hello, WebAssembly!字符串了.

3. 其他例子

在example中可以看到更多例子

3.1 bouncy

3.2 ranbow-mouse

会跟着鼠标画出彩虹图案,挺好看的

3.3 bumpy

可以画一些自定义的形状,形状不同,落地效果不同.球就会反弹,三角形就不会.不过都摔不坏,不会变形,这点不够真实

用 go 写 WebAssembly入门相关推荐

  1. [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码

    title: [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码 date: 2018-4-23 22:55:00 categories: WebAssembly, 笔记 ...

  2. html语言教程.chn,Go WebAssembly 入门(一)

    有关WebAssembly的介绍可以参考 几张图让你看懂WebAssembly 简单来说WebAssembly就是将其他语言C/Go/Rust等语言编译成wasm可执行二进制文件,浏览器来执行wasm ...

  3. WebAssembly入门-未来可能发生的巨变

    引言 先看下 官网 给的定义. WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virt ...

  4. python编程在哪里写-python入门该从哪里开始?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...

  5. 可能是世界上最简单的用 Go 来写 WebAssembly 的教程

    原标题:The world's easiest introduction to WebAssembly???? 原文链接:The world's easiest introduction to Web ...

  6. springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...

    SpringBoot入门建站全系列(九)文件上传功能与下载方式 Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍. 文件的下载 ...

  7. MASM32+Visual studio 2010写汇编程序入门(图文)

    因为很多强大的外挂是用汇编写的,所以需要一个开发环境来调试和运行他们的示例代码,我选择了MASM32 + VS 2010 用Visual Studio 2010写汇编程序并不难,这儿总结一下,方便入门 ...

  8. WebAssembly 入门教程

    文章目录 简介 入门示例 总结 简介 什么是 WebAssembly?在其主页上:https://webassembly.org/ 有如下描述: WebAssembly(缩写为 Wasm)是一种用于基 ...

  9. 磨刀不误砍柴工 —— 自己动手写操作系统 入门导引

    磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog <自己动手写操作系统>其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西.于 ...

最新文章

  1. element ui分页怎么做_elementUI实现分页
  2. qt与python互联_PYQT5 vscode联合操作qtdesigner的方法
  3. alpine安装启动mysql_在php5-fpm-alpine docker容器中安装php-gd依赖于alpine linux
  4. Ubuntu下利用JDK的Keytool配置Tomcat7.0的SSL协议(单向认证简易版)
  5. 计算机频率、内存相关杂谈
  6. Java扑克牌(多线程)
  7. 【Java 排序】重写Compare方法,实现自己定义排序
  8. javascript运动系列第七篇——鼠标跟随运动
  9. 运筹学与计算机知识,计算机、数学、运筹学等领域的36个重要算法
  10. 服务器打微软补丁后无法启动,关于打了最新微软补丁后,针式打印机突然不好打印的处理方法。...
  11. TMS570-3-RTI中断
  12. CSS学习11:区块背景样式(布局图片)和用户交互图片
  13. OSChina 周五乱弹 —— 埃塞俄比亚的远房大表姐
  14. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-21期...
  15. 记一个openwrt reboot异步信号处理死锁问题
  16. UNIX操作系统学习(一)
  17. Ubuntu、stm32下的C程序各变量的分配地址分析
  18. 快速傅里叶变换的原理及实现
  19. vue的组件和es6模板引擎 组件
  20. 【 安信可模组TG-12F/TG-01M②】搭建Linux开发环境,二次开发直连阿里飞燕/天猫精灵平台,实现天猫精灵语音控制

热门文章

  1. Java随笔--分布式
  2. RHEL7恢复root密码
  3. 约瑟夫问题(优化优化再优化)
  4. struts.xml向页面传参
  5. 设计阶段如何画用例视图(Use-Case View)
  6. 全球只有4个人通关的游戏!不过如此
  7. XSLT教程 [转]
  8. Bloglines手机伴侣支持走cmwap代理了
  9. 初始化列表的使用(十五)
  10. [BTCC] 要“工程师”“工程师”“工程师”