跨平台技术的开发思考
跨平台技术的开发思考

跨平台技术的开发思考

本文章会思考对于跨平台开发的思考,为什么这么考虑?
主要是考虑自己一个人的队伍在进行技术选型的时候要考虑到低成本、快速、体积小、运行速度高。
相关的技术点:
  • React Native
  • Flutter
  • wasm
  • golang wails
  • rust tauri
 

Emscripten和TinyGo

Emscripten和TinyGo都是用来编译WASM的工具,但它们有一些区别:
  • Emscripten是一个基于LLVM的编译器,它可以将C/C++或其他语言编译成WASM或asm.js¹。Emscripten可以生成一个完整的HTML页面,包含了WASM模块和用来运行它的JavaScript代码¹。Emscripten也可以生成一个独立的WASM文件,不需要JavaScript运行时²。Emscripten的优点是它支持大多数C/C++特性和库,以及Web API和环境¹。Emscripten的缺点是它生成的WASM文件可能比较大,而且需要一些额外的配置和优化²。
  • TinyGo是一个基于LLVM的编译器,它可以将Go语言编译成WASM或其他目标平台³。TinyGo只生成一个独立的WASM文件,不需要JavaScript运行时³。TinyGo的优点是它生成的WASM文件比较小,而且可以在不同的环境中运行,如浏览器、服务器或嵌入式设备³。TinyGo的缺点是它不支持所有的Go特性和库,以及Web API和环境³。
总之,Emscripten和TinyGo都可以用来编译WASM,但它们有不同的目标、功能和限制。你可以根据你想要使用什么语言、实现什么功能、部署到什么平台等因素来选择最适合你项目需求和偏好的工具。
源: 与必应的对话, 2023/3/10(1) 编译 C/C++ 为 WebAssembly - WebAssembly | MDN. https://developer.mozilla.org/zh-CN/docs/WebAssembly/C_to_wasm 访问时间 2023/3/10. (2) 不止在 Web 平台:使用 Emscripten 生成独立的 Wasm 文件 .... https://zhuanlan.zhihu.com/p/337739927 访问时间 2023/3/10. (3) Wasm 原生时代已经来到 - 知乎. https://zhuanlan.zhihu.com/p/611965320 访问时间 2023/3/10.

wasm验证

要验证wasm文件是否有效和没有问题,可以采用以下两种方法:
  1. 使用官方验证器:WebAssembly团队提供了一个可在命令行中运行的WebAssembly验证器(Validator)。你可以使用该工具来验证wasm文件是否符合WebAssembly标准。命令如下:
wasm-validate file.wasm
其中,'file.wasm'是你要验证的wasm文件。
  1. 在浏览器中使用JavaScript API: WebAssembly提供了一些JavaScript API,通过这些API可以验证wasm文件的有效性。在浏览器中执行以下代码,如果没有抛出异常,则说明wasm文件有效:
fetch('path/to/wasm/file') .then(response => response.arrayBuffer()) .then(buffer => WebAssembly.validate(buffer)) .then(valid => { if (valid) { console.log('wasm file is valid'); } else { console.log('wasm file is invalid'); } });
其中,'path/to/wasm/file' 是你要验证的wasm文件的路径。
以上两种方法都可以验证wasm文件是否有效和没有问题。如果验证通过,则说明wasm文件有效,否则就需要重新编译wasm文件。