用 go 写 WebAssembly入门
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 main import ( "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
可以画一些自定义的形状,形状不同,落地效果不同.球就会反弹,三角形就不会.不过都摔不坏,不会变形,这点不够真实
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于wordpress 502的问题
Segmentation fault无法从环境的配置或者PHP程序下手去解决,它的根源在二进制程序上,也就是PHP解释器或者它的模块。 有些PHP程序比较容易出现Segmentation fault,但是这不能把责任定在PHP程序上,说PHP程序有问题。 不管是LNMP还是LNAMP,如果出现Segmentation fault,处理PHP的进程(apache或者php-fpm)会直接挂掉,然后Nginx直接返回一个502错误,会在apache或者php-fpm的日志中记录下Segmentation fault错误,如果在日志中确定了是这个错误,最简单的解决办法就是更换一下系统,CentOS比较容易出现这个错误,可以尝试下debian或者ubuntu。 PHP程序出现Segmentation fault需要几个条件组成在一起,比如这次502的问题想重现的话,centos 6.x 64bit系统+最新的WP安装程序+PHP5.2,其他的组合有可能出现,也用可能不出现。 另外的一些经验: 1)我遇到的PHP的Segmentation fault错误都是出现在CentOS系统。 2)安装DA...
- 下一篇
Django 搭建CMDB系统完整[10](网络设备、安全设备、存储设备)
cmdb/urls.py from cmdbapp import machinaroomviews,serverviews,networkdeviceviews,securitydeviceviews,storagedeviceviews urlpatterns = [ url(r'^static/(?P<path>.*)',machinaroomviews.main_page,name='main_page'), url(r'^base',machinaroomviews.base,name='base'), url(r'^search_machinaroom.html',machinaroomviews.add_machinaroom,name='add_machinaroom'), url(r'^edit_machinaroom.html',machinaroomviews.edit_machinaroom,name='edit_machinaroom'), url(r'^del_machinaroom.html',machinaroomviews.del_machi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程