小马正在支持一个H5小游戏的后端编写,对于前端加密这块使用WebAssembly的初步理解和整理。
WebAssembly能做什么?
将后端语言如C/C++编译成.wasm二进制文件,JS加载后可跑在web前端。
嵌入式:或者将wasm嵌入到其他语言,其他语言就可以使用wasm内的函数方法,对于C和RUST等语言的使用者是个福音。
所谓优点:
比JS性能好,编译后的源码安全性,后端逻辑跑在前端减少服务端负担。
(场景1:如果前端有做开发一款游戏,数据需要加密上报,加密算法显然不能暴露,所以可以编译成二进制文件来处理加密算法后传输加密后的数据。这样前端加密才有意义!!)
WebAssembly支持不断发展。目前,以下语言支持它:
C / C ++-通过EmScripten或其他基于LLVM的最小工具链提供了很好的支持(可用于生产环境)
Rust-WebAssembly是受官方支持的目标,周围有非常活跃的社区。
Go-现在已将WebAssembly作为正式但实验性的目标来支持
C#-通过Blazor具有实验支持,但是当前需要将.NET运行时嵌入Wasm。最近发布了预览版,Blazor被Microsoft正式用作实验技术。
D-D的“ betterC”子集可以通过LDC(LLVM编译器)编译为WebAssembly。
TypeScript-通过AssemblyScript,实验性强,但势头强劲。 插播一下: 关于TS的通俗易懂。 ts编译成JS(这个JS代码非完全可读性)。
Java-通过TeaVM或Bytecoder
Haxe-刚刚宣布支持
Kotlin-Kotlin / Native 0.4通过WebAssembly和TeaVM获得了实验支持
Python-Pyodide是WebAssembly的Python移植,其中包括科学Python堆栈的核心软件包(Numpy,Pandas,matplotlib)。
PHP-实验性的,但具有有效的原型
Perl-WebPerl是Perl二进制文件到WebAssembly的端口,允许您在Web上运行Perl脚本。
Scala-使用Emscripten编译器
Ruby-通过run.rb项目
Swift-使用SwiftWasm,目前正在开发中
网友评论