一、 开发者的 GUI 困境终于有人破局了做相关事项的人都知晓一种尴尬情形, 那就是写算法很在行, 爬数据也很在行, 处理表格同样很在行, 然而一旦去做界面就会感到头疼。界面太难看, PyQt又显得太笨重, 要去做Web相关的又得重新开始学习HTML、CSS等, 想要让一套代码能够同时在桌面、手机以及浏览器上运行, 难度简直如同登天一般。这个名为 flet-dev/flet 的开源项目, 在 6 月 14 日推送了 v0.27.0 大版本更新, 直接把痛点解决了, 它依托渲染引擎, 却只需写代码, 一套逻辑能同时生成桌面、移动端和 Web 应用, 连前端经验都无需, 目前该项目已有 11.3k 星, 在 GUI 圈子里热度急剧上升。这究竟是不是具有革命性的效率工具, 还是说只是又一个那种“看上去挺美”的玩具? 它真的能够让开发者完全告别前端学习成本吗? 继续往下看, 答案或许会比你所想象的更加复杂。二、有着11.3k星数量的框架, 其核心拆解是怎样的, 底层逻辑又是什么, 它是做壳子, 再去写逻辑的。关于 Flet, 其核心思路极为巧妙, 它并非自行打造渲染引擎, 反而直接复用了用于作为底层 UI 渲染层的部分, 从而确保了界面美观度以及跨平台一致性。况且开发者既无需书写 Dart, 同时也不必理解像某些有关所谓状态管理跟布局约束之类的复杂概念, 自始至终仅仅借助它, 便能够达成所有开发工作。较为简要地来讲就是: 承担着“外貌姣好、具备行动能力”的职责, 担当着“业务逻辑如何编制”的重任, 此二者借助通信来进行交互连通。对于开发者而言, 好似是全无征兆地獲得了一整套完备完善的现代 UI 组件库, 其学习所需付出的成本几乎等同于零。核心能力一览三分钟上手实操第一步安装打开命令行一行命令完成安装pip install flet第二步写一个计数器应用创建一个新的文件, 将以下代码进行拷贝, 如此一来便能够获取到一个带有加减按钮的计数器界面。import flet as ft def main(page: ft.Page): page.title 我的第一个Flet应用 page.vertical_alignment ft.MainAxisAlignment.CENTER txt_number ft.TextField(value0, text_alignft.TextAlign.RIGHT, width100) def minus_click(e): txt_number.value str(int(txt_number.value) - 1) page.update() def plus_click(e): txt_number.value str(int(txt_number.value) 1) page.update() page.add( ft.Row( [ ft.IconButton(ft.icons.REMOVE, on_clickminus_click), txt_number, ft.IconButton(ft.icons.ADD, on_clickplus_click), ], alignmentft.MainAxisAlignment.CENTER, ) ) ft.app(targetmain)第三步运行运行脚本, 系统会弹出桌面窗口。要是想于浏览器中看效果, 只需将最后一行改成。ft.app(targetmain, viewft.WEB_BROWSER)整个过程用时不超过五分钟, 哪怕是丝毫没有任何前端知识的情况下同样也能够跑通。这便是Flet最为“爽”的所在之处啦: 开发者凭借自己所熟悉的语法, 就可以打造出能够媲美原生的现代界面。三、得辩证着去分析, 效率神器的背后, 存在着这样几个坑, 是非得要看清才行的, 其优势的确是很明显的, 然而其边界也是十分清晰的。不用Flet开发跨平台GUI时, 开发门槛高得很, 大量开发者得学一门新技术才能给脚本加个界面, 可要是用Flet, 那情况就大不一样了, 它只要开发者多写几行代码就能做到给脚本加界面, 而且在内部工具、数据仪表盘、自动化控制面板这类场景中, Flet开发效率特别高, 所得效果也远远超过传统GUI库。与此同时, 必须清晰地认识到, 它绝非那种能解决所有问题的神奇妙法。源于Flet的架构安排, 特定层的职责仅仅是发出指令, 真实的渲染工作是在前端得以完成的 而已。一旦处于复杂的交互场景之中, 通信方面所产生的开销将会演变成阻碍前行的瓶颈。要是针对大型商业软件, 或深度沉浸的游戏 , 又或是具备高频动画性质的各类应用予以考虑的话, 选用原生途径或是专业性质的前端处置方案, 始终仍可谓是较为稳健妥当的抉择呢。生态成熟度还有差距在与 PyQt 这类老牌库进行对比时可以发现, Flet 的社区积累相对较为浅薄, 当碰到偏门问题时, 能够搜索到的解决方案数量不多, 并且其第三方控件生态也远远比不上原生丰富程度, v0.27.0 版本尽管更新了很多功能, 不过整体依旧处于快速迭代阶段, 出现 API 偶尔变动的情况, 对于长期维护的大型项目而言存在一定的不确定性。换个角度去思考, 这恰恰是那些早期就进入其中的人的某种机会, 当下把这个框架完全掌握透彻, 等到生态全面彻底地爆发开来的时候, 你已然成为了第一批能够熟练运用它的人了。四、现实意义在于: 哪一类人是最应当使用上这个工具的呢? 第一类即为: 从事算法与跟数据相关工作的人员。要是平常主要从事数据处理、机器学习、自动化脚本方面的工作, 偶尔有必要做个可视化界面用于给同事或者客户进行演示, 那么Flet差不多就是最优的解决办法。无需去折腾Web框架, 也不用找人来帮忙做前端部分, 自行在半小时以内就能搭建出一个有模有样的工具, 交付时的体验能够直接提升一个层次。第二类人中小企业与个人开发者对于那些资源有限的团队而言, 借助 Flet 去快速地验证产品原型, 并且制作内部管理系统, 如此一来能够省下数量众多的前端开发成本。仅需一个开发者便能够完成全端工作, 无需专门去配备前端人力, 项目启动速度较为快速之状态, 试错成本处于较低的情况。第三类人编程入门学习者新手求学时, 要是始终对着那黑框框去撰写代码, 极易变得枯燥乏味。借助 Flet , 能够迅速制作出带有图形界面的小工具、小游戏, 这种正向反馈更为强烈, 学习兴趣也更易保持住。假如, 你所期望达成的为专业前端工程师, 又或者是要去开发针对海量用户面向的商业级的产品情形下, 老实巴交地深入钻研原生技术栈那可是比其他的更具靠谱性。对于工具有着不存在可以绝对去判定其好或者坏的情况, 仅仅存在适用是与情况相适合还是不相适合的区别情况。五、互动话题将这篇介绍看完之后, 你认为Flet这套“”的方式能够前行多远? 你平常在撰写脚本之际, 是否会考虑给它增添一个图形界面? 你所使用过的最为好用的GUI库是哪一个?于评论区域之中展开交流, 去谈论一下你所拥有的使用感受, 也可以阐述一番你最为想要借助Flet去开发一款什么样的工具。