Skip to content

liangyuqi/go-wasm

Repository files navigation

1.项目介绍

go + webassembly demo 项目

2.学习结论

1、编译结果文件大小

webassembly 卖点之一,是使用二进制文件,有效减少体积和增强安全性。 但编译结果1.5Mb,远大于源代码大小,这是因为go运行时被打包进去的缘故,go是有垃圾回收的,而webassembly没有,所以编译时必须带上全套的go虚拟机,1.5Mb已经很苗条了,而且不会因为项目代码的增大而增大。我想webassembly没有首先支持java这样流行的语言的原因就是这个,必须自己实现一个jvm。这要是标准jvm的话一两兆估计就搞不定了…简化版的也许有戏。

2、API与性能

我们看到例子里面go调用js还是很麻烦的,另外看网上说这样互相调用的性能也很低(我觉得应该是这样,有空自己试试…)这样的话语言带来的性能提升甚至还不能抵上调用的消耗,就没有意义了。网上查了不少文章,看到官网上目前还只是说支持和JS互动。而直接调用DOM甚至webgl的接口是将来计划中的事。网上有人提出了一个目前的解决方案:js和webassembly共享一块内存,通过一个byte array来交换数据。我觉得这事应该靠谱,过去游戏引擎也会这么做,把变化的图像内容写进缓冲区,然后定时取来刷洗界面。有时间得尝试一下。

3、加载

目前看起来加载还是挺麻烦的,得有相应的js帮助文件,还得用js加载。但看webassembly自己的roadmap, 对于直接用script标签加载的支持也在计划中了

3.部分学习资料

1、 Go参考手册

2、 Go语言教程

1、 再谈 Go 语言在前端的应用前景 --许式伟

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published