只熟悉 Python,一写前端就头疼?面对后端、数据库、缓存等一大堆技术栈不知所措?那么,不妨了解一下 Flet 这个框架,它或许能为你打开一扇新的大门。
什么是 Flet?
简单来说,Flet 是一个能让你用熟悉的 Python 语言快速构建实时 Web、移动和桌面应用的框架。你只需要编写一个“单体状态应用”,无需额外学习 React、Vue 或 TypeScript,就能实现从前端到后端的完整开发闭环。它内置了 Web 服务器和静态资源托管功能,还能轻松将应用打包成桌面原生应用或 PWA(渐进式 Web 应用),极大地简化了开发和部署流程。

Flet 解决了哪些开发痛点?
- 前后端分离复杂:传统模式下,你需要分别维护 API 和后端逻辑,以及另一套前端代码。
- 前端技术门槛高:如果对 JavaScript、CSS 不熟悉,开发完整的应用界面会非常困难。
- 部署环境繁琐:配置 Nginx、Docker 以及 CI/CD 流水线往往耗时耗力,且容易遇到环境问题。
- 跨平台开发体验差:Electron 应用体积臃肿,而 React Native 等框架的配置又较为复杂。

使用 Flet,你只需三个步骤:
- 用 Python 编写应用逻辑。
- 运行
pip install flet 安装。
- 执行
python app.py 启动。
无论是打开原生应用窗口,还是在浏览器中运行 SPA(单页应用)都只需一行命令切换,团队成员上手成本几乎为零。
代码示例:一个简单的计数器 Demo
下面我们通过一个“计数器”示例来直观感受 Flet 的开发方式。短短几十行 Python 代码,即可实现一个能在原生 App 和 Web App 间随意切换的交互应用。
import flet as ft
def main(page: ft.Page):
page.title = “Flet 计数器示例”
page.vertical_alignment = ft.MainAxisAlignment.CENTER
txt = ft.TextField(value=“0”, text_align=ft.TextAlign.RIGHT, width=100)
def dec(e):
txt.value = str(int(txt.value) - 1)
page.update()
def inc(e):
txt.value = str(int(txt.value) + 1)
page.update()
page.add(
ft.Row([
ft.IconButton(ft.icons.REMOVE, on_click=dec),
txt,
ft.IconButton(ft.icons.ADD, on_click=inc),
], alignment=ft.MainAxisAlignment.CENTER)
)
# 运行成原生窗口
# ft.app(target=main)
# 运行成 Web 应用
ft.app(target=main, view=ft.AppView.WEB_BROWSER)
通过这段代码,你可以看到:
page 对象负责管理整个页面的状态和布局。
- 各种“控件”(如
TextField、IconButton、Row)就像搭积木一样组合使用,构建界面非常直观。
- 调用
page.update() 即可刷新视图,逻辑清晰简单。
Flet 的优缺点分析
优点
- 零前端经验门槛:完全使用 Python 即可构建用户界面和处理交互逻辑,对后端或数据开发者极为友好。
- 内置实时多用户支持:框架自带状态管理和同步机制,开发的应用天然支持多用户实时协作访问。
- 真正的跨平台:一套代码可以编译运行在浏览器(Web)、Windows、macOS、Linux 以及 PWA 环境中。
- 基于 Flutter 渲染:底层使用 Flutter 引擎,保证了 UI 的美观性和在不同平台上的高性能与稳定性。
缺点
- 生态相对年轻:目前官方主要支持 Python,虽然计划支持 Go、C# 等其他语言,但仍在发展中。
- 控件库仍在完善:对于一些高级动画、复杂图表等特定场景,可能需要开发者自行封装或寻找第三方解决方案。
- 社区规模较小:作为一个较新的框架,遇到深度问题时,可能需要查阅源码或在 GitHub 上提交 Issue 来寻求解决。
总结
总而言之,Flet 像一个高度集成化的跨平台应用开发工具。它特别适合那些需要快速构建实时协作工具、内部管理系统、数据可视化大屏或产品原型的开发者。它将传统前端开发的复杂工作流,简化成了直观的 Python 脚本,让你能更专注于核心业务逻辑的实现。
如果你也希望摆脱繁琐的前端配置,同时又想打造出体验良好的现代化界面,不妨尝试一下 Flet。在 云栈社区 的 Python 或 Android/iOS 板块,你或许能找到更多关于 Flutter 和跨平台开发的灵感与讨论。一分钟即可开始,快速看到成果!
项目地址:https://github.com/flet-dev/flet
|