「GUI-FRAMEWORK」- 场景 | 方案

针对我们的诉求,当构建跨平台应用时,我们可能采用的技术

问题

我们具有如下诉求:
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 语言,我们能够极大减少核心逻辑的重构工作;