针对我们的诉求,当构建跨平台应用时,我们可能采用的技术
问题
我们具有如下诉求:
1)需要跨平台(Android iOS Windows Linux macOS),即使我们无需支持某些平台,也要为以后做打算;
2)并且,官方能够直接支持多个平台,而非需要社区不同插件来支持多个平台(若社区放弃支持,我们便被动);
3)避免学习新的编程语言(例如,通过 Flat 我们直接使用 Python 进行编程,等等),以降低我们的学习成本;
分析
针对(1)(2)诉求,我们能够使用的框架有:
- 针对 Flutter 框架,通过 Dart 编码,我们需要学习 Dart 编程语言;
- 针对 Flet 框架,底层还是 Flutter 框架,将来我们可能需要接触 Dart 语言相关的内容;
- 针对 Tauri 框架,底层允许使用 Rust Swift Kotlin 来实现复杂功能;
- 针对其他框架,或我们未找到,或官方未直接支持所有平台(需要社区支持);
针对(3)诉求,并结合我们熟悉的编程语言,我们能够使用的框架:
- Flet,通过 Python 编码;
- Tauri,通过 HTML JS CSS 编码;
- 针对其他框架,我们需要学习其他的编程语言;
帮助我们筛选最终方案的其他考量维度:
- 针对新的项目,我们可以按需选择,Flet 或 Tauri 皆可。通常,我们会选择使用我们所熟悉语言的 GUI 框架。
- 针对项目重构,我们将选择所用语言与原项目所用语言相近的框架。原因是,应用还有除界面外的其他功能,选择相近的语言能够减少重构成本。
应用
针对 Zim 项目,我们需要对其重构,我们选择 Flet 框架:
- Flet 能够支持多个平台(依托 Flutter 本身);
- Flet 官方能够直接生成多个平台的应用(依托 Flutter 本身),而不需要社区提供额外的模块;
- Zim and Flet,两者使用 Python 语言,降低我们的学习成本;
- 同时,两者都使用 Python 语言,我们能够极大减少核心逻辑的重构工作;