听闻WebAssembly已经有些年了,不过一直没有跑个例子尝试下。主要是使用Rust来编译生成WebAssembly的目标文件,虽然可以使用C/C++,但想想我的Rust学习一直进展不大,不知道用在哪里,刚好Rust对WebAssembly支持也是比较详细。
Rust问题
安装wasm-pack时提示没有安装rustup,虽然我已经哟给Brew安装了rust,最后安装rustup后就好了。
执行cargo install cargo-generate时,加载Crates非常慢,最后使用国内的镜像后顺利完成,这是国内镜像的配置。
1 | [source.crates-io] |
总结
我在iOS的Safari试了下,也可以。虽然之前也有其他语言编译为JS的做法,所以主要解决的是如何构建大型web应用的工程问题,现在ES6的普及,好像这类方案渐渐的也不怎么提了。其他语言编译成WebAssembly的做法,主要是为解决性能的问题,把一些跟性能有关系使用WebAssembly,另外WebAssembly可以解决原来JS的老是暴露的问题。理论上其他语言都可以编译WebAssembly,但是主流的还是C/C++、Go、Rust之类的编译为WebAssembly的方式了,不过Web开发我不是全职的那种,有需要了就写写。感觉一般Web开发者也不大会用到,有性能要求的应用可能会用到,但估计写WebAssembly估计也是领域专业的人员。
参考资料
Rust 🦀 and WebAssembly 🕸 ,例子主要按这个来跑的。
WebAssembly Mozilla开发者网站关于WebAssembly的介绍,比较详细。