基于lis3dh的简易倾角仪c源码_基于GO的Web前端开发实践

4bbad8f343ca36853b5339e4d46ab4e2.png

最近发布的Golang 1.11版本,新增了两个非常值得关注的内容:Go Modules 和 WebAssembly。我也是非常后知后觉的了解到此事,立刻去下载了新版尝试了一下。

作为一个偏向后端的语言,大家普遍更关心 Go Modules 的使用方法。不过本人倒是更在意WebAssembly,拿到新版后第一时间对该模块进行了尝试,编写了一个简易的页面3D展示功能。

d2cfacd6fbe3004321b2663cb75b77be.png

这是基于Go所编译的wasm代码运行效果截图。

测试地址为

Golang​liuqi0826.xicp.net:8888

开发目标:

1.诸如暴露几个接口给JS调用之类的无聊轮子就不想再造了,既然尝试就做些大胆点的尝试,选择一个GO不擅长的领域,譬如3D。

2.WASM不能直接调用API,所以开发中肯定会融入JS代码,尽可能少用JS,看看GO能做到什么样的地步。

开发准备:

1.首先获取最新版的GO,本人使用Windows进行开发。

建议编写bat文件方便编译

        SET GOOS=js
        SET GOARCH=wasm
        go build -o xxxxx.wasm xxxxxxxxxxx.go ......

2.查看官方文档,主要是syscall/js包的使用,建议结合源码查看。另外拷贝官方页面模板备用。

golang/go​github.com
51d3351293decebe8f8c3cae0aa36990.png
https://godoc.org/syscall/js​godoc.org

3.查看官方示例,以及两个教学视频。

stdiopt/gowasm-experiments​github.com
84bf6c6d5b121f8a732fcb05d0b9935d.png
https://www.youtube.com/watch?v=4kBvvk2Bzis&feature=youtu.be​www.youtube.com https://www.youtube.com/watch?v=iTrx0BbUXI4​www.youtube.com

4.准备一个足够简单的模型用于展示,这里使用了一个《崩坏3》的杂兵模型。

5.准备一个Web服务器,可能需要为wasm新增MIME类型,也可以用GO自行编写,编写方式参考官方WIKI。

开发过程:

1.细节掠过,该项目代码量不算大,大致文件如图。

3edcdbe384f02678572c56396c20c50f.png

2.因为是初次尝试,为避免不必要的复杂度增加,所有代码都归于main包。

3.GO对于web汇编的支持比预想中好,预想网络加载资源需要单开JS函数回调,后来发现可以直接使用HTTP包。

4.对于WebGL的调用还是略显蛋疼,本人最后没忍住,对API包了一层,算是个简单的binding,可以方便日后使用。

5.各种调试,查错,最终模型成功展示出来。

发开总结:

1.GO对于WebAssembly的支持远比我想象中好很多,本以为开发过程会与Flash的炼金术一样痛苦,结果开发过程竟然挺愉悦。

2.最终除了官方页面模板的JS代码外,没有额外编写一行JS,基本上可以在GO内完成整个项目。

3.现阶段开发工具对这类项目支持不算好,syscall/js包引用会报错,调试也很麻烦。

4.GO编译的wasm本体体积(即不包含其他代码,仅含有GO的运行时)大概接近2M,可以说具备一定竞争力。开发难度低于C/C++/Rust,可以适用于前端开发的节奏。但是完败于TS,毕竟人家是专攻这个领域的语言。另外C#以及JAVA等语言估计短期都难以看到在此领域的成果(C#应该根本就不会出,毕竟TS才是干这件事的),毕竟打包虚拟机后体积可能很惊人。

关于GO WebAssembly相关内容,本人也在学习中,如有写错也请多包涵,谢谢。

本文首发于知乎,转载请注明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值