折腾来折腾去,我打算做一个卡片记忆软件,用来记忆面试题、知识点等。很多东西看了就忘了,我想做一个软件来帮助我记忆。这个软件的功能就是每天给我推送一些卡片,我看了就可以记住,然后就可以刷题了。
当然,业内已经有很多成熟的软件了。这几年我体验过好几款,如闪卡、惊叹笔记、氢刻等,感觉都蛮好的。但是我还是想自己做一个,原因如下:
我是一名普通的Java程序员,擅长后端技术。前端一般般,会一些简单的语言,比如python,scala(之前搞大数据的时候学的),spark,vue等等
在实际项目中,我主要使用uni-app。昨晚花了几个小时学习了electron,觉得开发还挺简单的。不过可惜的是,官方文档写的是桌面端全家桶,虽然网上有移动端的解决方案,但性能可能会受影响。
最后,我选择了使用Flutter进行开发,全平台支持确实很棒。
网上看了很多全平台的技术方案,主要就这么几个:
先简单总结下各个框架优缺点
技术 | 支持平台 | 性能对比 | 使用语言 | 社区对比 | 开发文档对比 | 上手难度 | 开发公司 | 活跃度 | 包大小 | 内存占用 | 兼容性 | 缺点 | 稳定性 | 官网地址 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Flutter | Android, iOS, 桌面 | 优秀 | Dart | Google支持 | 丰富 | 中等 | 高 | 中等 | 中等 | 高 | 部分三方库不够成熟,打包体积较大,启动速度慢 | 高 | Flutter | |
React Native | Android, iOS | 高 | JavaScript | Facebook支持 | 丰富 | 中等 | 高 | 中等 | 中等 | 高 | 集成原生模块复杂,性能受限于JavaScript | 中等 | React Native | |
Electron | Windows, macOS, Linux | 中等 | HTML, CSS, JavaScript | GitHub支持 | 丰富 | 中等 | GitHub | 高 | 较大 | 较大 | 高 | 包体积大,内存占用高,启动速度慢 | 中等 | Electron |
Uni-app | Android, iOS, H5, 小程序, App | 中等 | Vue.js | DCloud支持 | 一般 | 低 | DCloud | 中等 | 中等 | 中等 | 高 | 性能相对其他框架较低,灵活性不足 | 中等 | Uni-app |
Qt | 桌面, 移动, 嵌入式 | 高 | C++ | Qt公司支持 | 丰富 | 高 | Qt公司 | 高 | 较大 | 较大 | 高 | 学习曲线陡峭,包体积较大 | 高 | Qt |
Tauri | Windows, macOS, Linux | 高 | Rust | 社区支持 | 一般 | 中等 | Tauri社区 | 中等 | 较小 | 低 | 高 | 生态相对不够成熟,文档相对不足 | 中等 | Tauri |
NW.js | Windows, macOS, Linux | 中等 | HTML, CSS, JavaScript | 社区支持 | 一般 | 中等 | NW.js社区 | 中等 | 较大 | 较大 | 高 | 性能相对其他框架较低,内存占用高 | 中等 | NW.js |

Flutter是一个由Google开发的跨平台移动应用框架,使用Dart语言。它具有优秀的性能和丰富的UI组件,支持Android、iOS和桌面平台,并且可以通过Flutter Desktop扩展支持桌面应用。Flutter的社区支持非常强大,拥有丰富的开发文档和活跃的开发者社区。然而,部分三方库可能不够成熟,导致一些功能可能不够稳定。Flutter的缺点包括打包体积较大和启动速度较慢。总体来说,Flutter在稳定性方面表现良好,官网地址为Flutter。
Flutter的优点包括:
Flutter的缺点包括:
总的来说,Flutter在跨平台开发和性能方面表现出色,但在初始启动时间和包大小方面存在一些缺点。

React Native是由Facebook开发的跨平台移动应用框架,使用JavaScript和React构建。它允许开发者使用相同的代码库来构建Android和iOS平台上的原生应用,同时保持高性能和良好的用户体验。React Native的核心理念是“learn once, write anywhere”,即只需学习一次,就能在多个平台上进行开发。
React Native的优势在于其能够实现接近原生应用的性能,因为它允许开发者使用原生组件来构建用户界面。此外,React Native还具有热重载功能,能够实时查看代码更改的效果,加快了开发迭代的速度。它还拥有庞大的开发者社区和丰富的组件库,开发者可以快速找到所需的组件和解决方案。
然而,React Native也存在一些挑战,比如在某些情况下需要使用原生模块来实现特定的功能,这可能需要开发者具备一定的原生开发技能。另外,由于需要打包JavaScript引擎和React Native框架,导致应用的安装包大小较大,且内存占用较高。
总的来说,React Native是一个强大的跨平台移动应用框架,能够帮助开发者高效地构建原生级别的移动应用。
React Native的优点包括:
React Native的缺点包括:
总的来说,React Native在跨平台开发和性能接近原生应用方面表现出色,但在集成原生模块和性能方面存在一些挑战。

Electron 是由 GitHub 开发的跨平台桌面应用框架,它使用 HTML、CSS 和 JavaScript 技术栈,并基于 Chromium 和 Node.js。这意味着开发者可以使用熟悉的前端技术来构建桌面应用程序。Electron 支持 Windows、macOS 和 Linux 平台,使开发者能够轻松地为多个操作系统构建应用程序。
Electron 的优点包括:
然而,Electron 也存在一些缺点,包括:
总的来说,Electron 是一个强大的跨平台桌面应用框架,能够帮助开发者使用现有的前端技术来构建功能丰富的桌面应用程序。

Uni-app 是一个基于 Vue.js 的跨平台应用框架,可以用于快速开发多端应用,包括H5、小程序、Android、iOS等。Uni-app 提供了丰富的组件和开发工具,使开发者能够使用统一的代码库构建多端应用,从而节省开发时间和成本。
Uni-app 的优点包括:
然而,Uni-app 也存在一些挑战,包括:
总的来说,Uni-app 是一个强大的跨平台应用框架,能够帮助开发者使用 Vue.js 技术栈来快速构建多端应用程序。

Qt 是一个跨平台的 C++ 应用程序开发框架,它提供了丰富的 GUI 组件和工具,可以用于开发桌面、移动、嵌入式等多种类型的应用程序。Qt 具有以下优点:
然而,Qt 也存在一些挑战,包括:
总的来说,Qt 是一个强大的跨平台应用框架,能够帮助开发者使用 C++ 语言来构建功能丰富的应用程序,并且在跨平台支持和性能方面表现出色。

Tauri 是一个使用 Rust 编写的跨平台应用框架,它结合了 Web 技术和原生 UI 组件,可以用于构建高性能的桌面应用。Tauri 具有以下特点:
然而,Tauri 也存在一些挑战,包括:
总的来说,Tauri 是一个有潜力的跨平台桌面应用框架,能够帮助开发者使用 Rust 语言和 Web 技术来构建高性能的桌面应用程序。
NW.js(以前称为Node-Webkit)是一个基于Chromium和Node.js的框架,用于构建跨平台的桌面应用程序。它允许开发者使用HTML、CSS和JavaScript等前端技术来构建桌面应用,并且支持Windows、macOS和Linux等多个操作系统。NW.js具有以下特点:
然而,NW.js也存在一些挑战,包括:
总的来说,NW.js是一个强大的跨平台桌面应用框架,能够帮助开发者使用前端技术来构建功能丰富的桌面应用程序。
本文由 mdnice 多平台发布