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

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

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

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

  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月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
91 1
|
1月前
|
运维 负载均衡 安全
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
96 0
|
8天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
21天前
|
监控 API 调度
开放源代码平台Flynn的架构与实现原理
【10月更文挑战第21天】应用程序的生命周期涉及从开发到运行的复杂过程,包括源代码、构建、部署和运行阶段。
|
1月前
|
机器学习/深度学习 自然语言处理 搜索推荐
大厂 10Wqps智能客服平台,如何实现架构演进?
40岁老架构师尼恩,凭借深厚的架构功力,指导众多小伙伴成功转型大模型架构师,实现职业逆袭。尼恩的《LLM大模型学习圣经》系列PDF,从基础理论到实战应用,全面覆盖大模型技术,助力读者成为大模型领域的专家。该系列包括《从0到1吃透Transformer技术底座》《从0到1吃透大模型的基础实操》《从0到1吃透大模型的顶级架构》等,内容详实,适合不同水平的读者学习。此外,尼恩还分享了多个智能客服平台的实际案例,展示了大模型在不同场景中的应用,为读者提供了宝贵的实践经验。更多技术资料和指导,请关注尼恩的《技术自由圈》公众号。
大厂 10Wqps智能客服平台,如何实现架构演进?
|
1月前
|
消息中间件 缓存 Java
亿级流量电商平台微服务架构详解
【10月更文挑战第2天】构建一个能够处理亿级流量的电商平台微服务架构是一个庞大且复杂的任务,这通常涉及到多个微服务、数据库分库分表、缓存策略、消息队列、负载均衡、熔断降级、分布式事务等一系列高级技术和架构模式。
83 3
|
2月前
|
缓存 物联网 数据库
如何帮助我们改造升级原有架构——基于TDengine 平台
一、简介 TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台。 二、TDengine 功能与组件 TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括: SQL 写入、无模式写入和通过第三方工具写入 S标准 SQL 查
76 13
|
27天前
|
消息中间件 运维 NoSQL
基础架构组件选型及服务化
【10月更文挑战第15天】本文概述了分布式系统中常见的基础架构组件及其选型与服务化的重要性。
|
2月前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
92 6