打算一个卡片记忆软件,全平台架构如何选型?

简介: 打算一个卡片记忆软件,全平台架构如何选型?

折腾来折腾去,我打算做一个卡片记忆软件,用来记忆面试题、知识点等。很多东西看了就忘了,我想做一个软件来帮助我记忆。这个软件的功能就是每天给我推送一些卡片,我看了就可以记住,然后就可以刷题了。

当然,业内已经有很多成熟的软件了。这几年我体验过好几款,如闪卡、惊叹笔记、氢刻等,感觉都蛮好的。但是我还是想自己做一个,原因如下:

  1. 老早就想做软件了,一个全平台的软件,不管这个成不成功,我想做出一个成品,这也能在面试中加分。
  2. 我觉得这种记忆软件是可以轻松结合AI的,这部分还在构思中,功能上有很多我自己的想法。作为资深用户,我觉得我可以做出一个更好的软件。

产品期望

  1. 支持全平台,包括Windows、Mac、Linux、Android、iOS、Web和鸿蒙。
  2. 提供网页端,可在网页端管理和查看卡片。
  3. 结合AI,智能生成卡片甚至卡片册,其他功能还在规划中。
  4. 界面设计简洁美观。
  5. 卡片支持图片、视频、音频、代码、Markdown、LaTeX、公式、表格、链接等。
  6. 应用艾宾浩斯记忆法,自动推送卡片并调整复习时间。
  7. 集成微信公众号,可将卡片推送至微信公众号,并在公众号上查看。
  8. 提供详尽的统计功能,包括学习进度、学习时间和学习效率。

个人能力

我是一名普通的Java程序员,擅长后端技术。前端一般般,会一些简单的语言,比如python,scala(之前搞大数据的时候学的),spark,vue等等

在实际项目中,我主要使用uni-app。昨晚花了几个小时学习了electron,觉得开发还挺简单的。不过可惜的是,官方文档写的是桌面端全家桶,虽然网上有移动端的解决方案,但性能可能会受影响。

最后,我选择了使用Flutter进行开发,全平台支持确实很棒。

技术选型

网上看了很多全平台的技术方案,主要就这么几个:

  1. flutter
  2. react native
  3. electron
  4. uni-app
  5. qt
  6. tauri
  7. nw.js

先简单总结下各个框架优缺点

技术 支持平台 性能对比 使用语言 社区对比 开发文档对比 上手难度 开发公司 活跃度 包大小 内存占用 兼容性 缺点 稳定性 官网地址
Flutter Android, iOS, 桌面 优秀 Dart Google支持 丰富 中等 Google 中等 中等 部分三方库不够成熟,打包体积较大,启动速度慢 Flutter
React Native Android, iOS JavaScript Facebook支持 丰富 中等 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

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

Flutter的优点包括:

  1. 跨平台支持:Flutter可以在Android、iOS和桌面平台上运行,极大地简化了跨平台应用程序的开发流程。
  2. 优秀的性能:Flutter通过自带的渲染引擎Skia实现了高性能的渲染,能够提供流畅的用户体验。
  3. 丰富的UI组件:Flutter提供了丰富的现代化UI组件,开发者可以轻松构建精美的用户界面。
  4. 强大的开发工具:Flutter提供了丰富的开发工具和调试支持,使开发者能够高效地进行应用程序开发和调试。
  5. 快速开发:Flutter具有热重载功能,可以快速查看代码更改的效果,加快了开发迭代的速度。

Flutter的缺点包括:

  1. 初始启动时间较长:由于Flutter应用需要加载Dart运行时和Flutter框架,因此初始启动时间可能会比较长。
  2. 包大小较大:由于Flutter应用需要打包Dart运行时和Flutter框架,导致应用的安装包大小较大。
  3. 三方库的成熟度:部分三方库可能不够成熟,导致一些功能可能不够稳定或者缺乏完善的支持。

总的来说,Flutter在跨平台开发和性能方面表现出色,但在初始启动时间和包大小方面存在一些缺点。

react native

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的优点包括:

  1. 跨平台支持:React Native允许开发者使用相同的代码库构建Android和iOS平台上的原生应用,从而节省开发成本和时间。
  2. 性能接近原生应用:由于React Native的架构允许使用原生组件,因此它的性能接近于原生应用,能够提供流畅的用户体验。
  3. 热重载功能:React Native具有热重载功能,可以实时查看代码更改的效果,加快了开发迭代的速度。
  4. 社区支持和丰富的组件库:React Native拥有庞大的开发者社区和丰富的组件库,开发者可以快速找到所需的组件和解决方案。
  5. Facebook支持:作为由Facebook开发和维护的开源项目,React Native得到了强大的支持和持续的更新。

React Native的缺点包括:

  1. 集成原生模块复杂:在某些情况下,需要使用原生模块来实现特定的功能,这可能需要开发者具备一定的原生开发技能。
  2. 性能受限于JavaScript:由于React Native使用JavaScript进行逻辑处理,一些性能密集型的任务可能受到限制。
  3. 包体积大,内存占用高:由于需要打包JavaScript引擎和React Native框架,导致应用的安装包大小较大,且内存占用较高。

总的来说,React Native在跨平台开发和性能接近原生应用方面表现出色,但在集成原生模块和性能方面存在一些挑战。

electron

Electron 是由 GitHub 开发的跨平台桌面应用框架,它使用 HTML、CSS 和 JavaScript 技术栈,并基于 Chromium 和 Node.js。这意味着开发者可以使用熟悉的前端技术来构建桌面应用程序。Electron 支持 Windows、macOS 和 Linux 平台,使开发者能够轻松地为多个操作系统构建应用程序。

Electron 的优点包括:

  1. 跨平台支持:开发者可以使用相同的代码库构建适用于多个操作系统的桌面应用程序,从而节省开发时间和成本。
  2. 使用现有技术栈:Electron 使用 HTML、CSS 和 JavaScript 技术栈,这意味着前端开发者可以直接应用他们的技能来构建桌面应用程序,无需学习新的语言或工具。
  3. 强大的社区支持:Electron 拥有庞大的开发者社区和丰富的第三方库,开发者可以快速找到所需的组件和解决方案。
  4. 可扩展性:Electron 提供了丰富的 API 和插件系统,使开发者能够轻松地扩展应用程序的功能。

然而,Electron 也存在一些缺点,包括:

  1. 包大小较大:由于需要打包 Chromium 和 Node.js,导致应用的安装包大小较大。
  2. 内存占用较高:Electron 应用程序通常会占用较多的内存,这可能会影响应用程序的性能和资源消耗。

总的来说,Electron 是一个强大的跨平台桌面应用框架,能够帮助开发者使用现有的前端技术来构建功能丰富的桌面应用程序。

uni-app

Uni-app 是一个基于 Vue.js 的跨平台应用框架,可以用于快速开发多端应用,包括H5、小程序、Android、iOS等。Uni-app 提供了丰富的组件和开发工具,使开发者能够使用统一的代码库构建多端应用,从而节省开发时间和成本。

Uni-app 的优点包括:

  1. 跨平台支持:开发者可以使用相同的代码库构建适用于多个平台的应用程序,包括H5、小程序、Android、iOS等。
  2. Vue.js 技术栈:Uni-app 基于 Vue.js,这意味着前端开发者可以直接应用他们的 Vue.js 技能来构建多端应用程序,无需学习新的语言或工具。
  3. 丰富的组件和工具:Uni-app 提供了丰富的组件和开发工具,使开发者能够快速构建功能丰富的应用程序。
  4. 社区支持:Uni-app 拥有庞大的开发者社区和丰富的第三方库,开发者可以快速找到所需的组件和解决方案。

然而,Uni-app 也存在一些挑战,包括:

  1. 部分三方库不够成熟:由于 Uni-app 是相对较新的框架,一些三方库可能不够成熟,导致一些功能可能不够稳定或者缺乏完善的支持。
  2. 打包体积较大:由于需要同时支持多个平台,Uni-app 应用程序的打包体积可能较大。

总的来说,Uni-app 是一个强大的跨平台应用框架,能够帮助开发者使用 Vue.js 技术栈来快速构建多端应用程序。

qt

Qt 是一个跨平台的 C++ 应用程序开发框架,它提供了丰富的 GUI 组件和工具,可以用于开发桌面、移动、嵌入式等多种类型的应用程序。Qt 具有以下优点:

  1. 跨平台支持:Qt 可以在 Windows、macOS、Linux 等多个操作系统上运行,开发者可以使用相同的代码库构建跨平台的应用程序。
  2. 高性能:由于 Qt 使用 C++ 语言进行开发,因此它能够提供高性能的应用程序体验。
  3. 丰富的 GUI 组件和工具:Qt 提供了丰富的现代化 GUI 组件和开发工具,使开发者能够轻松构建功能丰富的用户界面。
  4. 强大的社区支持:Qt 拥有庞大的开发者社区和丰富的第三方库,开发者可以快速找到所需的组件和解决方案。
  5. 可扩展性:Qt 提供了丰富的 API 和插件系统,使开发者能够轻松地扩展应用程序的功能。

然而,Qt 也存在一些挑战,包括:

  1. 学习曲线陡峭:由于 Qt 使用 C++ 语言进行开发,因此对于一些开发者来说,学习曲线可能会比较陡峭。
  2. 包体积较大:由于需要打包 Qt 库和应用程序代码,Qt 应用程序的安装包大小可能较大。

总的来说,Qt 是一个强大的跨平台应用框架,能够帮助开发者使用 C++ 语言来构建功能丰富的应用程序,并且在跨平台支持和性能方面表现出色。

tauri

Tauri 是一个使用 Rust 编写的跨平台应用框架,它结合了 Web 技术和原生 UI 组件,可以用于构建高性能的桌面应用。Tauri 具有以下特点:

  1. 跨平台支持:Tauri 可以在 Windows、macOS 和 Linux 等多个操作系统上运行,开发者可以使用相同的代码库构建跨平台的桌面应用程序。
  2. 高性能:由于 Tauri 使用 Rust 语言进行开发,因此它能够提供高性能的应用程序体验。
  3. 社区支持:Tauri 拥有一个积极的开发者社区,提供丰富的文档和示例,使开发者能够快速上手并解决问题。
  4. 包大小:相比其他框架,Tauri 应用程序的包大小相对较小,这有助于减少应用程序的安装包大小。

然而,Tauri 也存在一些挑战,包括:

  1. 生态相对不够成熟:由于 Tauri 是相对较新的框架,一些功能可能不够稳定或者缺乏完善的支持。
  2. 学习曲线:对于一些开发者来说,学习 Rust 语言和 Tauri 框架可能需要一定的时间和精力。

总的来说,Tauri 是一个有潜力的跨平台桌面应用框架,能够帮助开发者使用 Rust 语言和 Web 技术来构建高性能的桌面应用程序。

nw.js

NW.js(以前称为Node-Webkit)是一个基于Chromium和Node.js的框架,用于构建跨平台的桌面应用程序。它允许开发者使用HTML、CSS和JavaScript等前端技术来构建桌面应用,并且支持Windows、macOS和Linux等多个操作系统。NW.js具有以下特点:

  1. 跨平台支持:NW.js可以在多个操作系统上运行,使开发者能够使用相同的代码库构建跨平台的桌面应用程序。
  2. 前端技术栈:开发者可以使用熟悉的前端技术,如HTML、CSS和JavaScript,来构建桌面应用程序,无需学习新的语言或工具。
  3. Node.js集成:NW.js集成了Node.js环境,使得开发者可以使用JavaScript进行后端逻辑处理,同时能够访问操作系统的底层功能。
  4. 社区支持:NW.js拥有一个积极的开发者社区,提供丰富的文档和示例,使开发者能够快速上手并解决问题。

然而,NW.js也存在一些挑战,包括:

  1. 性能相对其他框架较低:由于NW.js同时运行Chromium和Node.js,可能导致一些性能方面的挑战,例如初始启动时间较长和内存占用较高。
  2. 生态相对不够成熟:相比一些其他框架,NW.js的生态系统可能相对不够成熟,一些功能可能不够稳定或者缺乏完善的支持。

总的来说,NW.js是一个强大的跨平台桌面应用框架,能够帮助开发者使用前端技术来构建功能丰富的桌面应用程序。


相关文章
|
1月前
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
1月前
|
运维 监控 安全
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
1月前
|
运维 监控 负载均衡
动态服务管理平台:驱动微服务架构的高效引擎
动态服务管理平台:驱动微服务架构的高效引擎
28 0
|
10天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
109 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
1月前
|
运维 负载均衡 Shell
控制员工上网软件:高可用架构的构建方法
本文介绍了构建控制员工上网软件的高可用架构的方法,包括负载均衡、数据备份与恢复、故障检测与自动切换等关键机制,以确保企业网络管理系统的稳定运行。通过具体代码示例,展示了如何实现这些机制。
124 63
|
1月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
115 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
8天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
37 3
|
1月前
|
监控 Nacos 数据安全/隐私保护
动态服务管理平台在微服务架构中的实践与探索
动态服务管理平台在微服务架构中的实践与探索
|
1月前
|
运维 监控 Nacos
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
1月前
|
Kubernetes 前端开发 分布式数据库
工作中常见的软件系统部署架构
在实际应用中,会根据项目的具体需求、规模、性能要求等因素选择合适的部署架构,或者综合使用多种架构模式来构建稳定、高效、可扩展的系统。
210 2

热门文章

最新文章