使用NiceGUI界面库的一点体会

2024年3月24日 169点热度 0人点赞 0条评论

最近在重构旧版的Python交易框架代码,前端准备换用NiceGUI这个最近比较火的前端框架,玩了一周左右,体会如下:

1、NiceGUI的前端实现基于对Quasar和Tailwind CSS这些框架的二次封装。尽管封装程度较高,但对使用NiceGUI开发前端界面而言,并不能完全避免js和相关前端技术栈。写界面python代码的时候还是需要打开Quasar和Tailwind CSS这些东西的官方文档参考。

2、NiceGUI的使用上,感觉和用Vue开发前端应用有些相似的感觉。从我个人的习惯上,页面路由函数下一般分2个部分,首先是页面回调和初始化的渲染数据处理,其次是页面Layout代码。Layout中充斥着大量的with上下文管理,可以理解为Vue中对应的组件标签。与Vue开发不同的是,不用把样式单独拿出来定义,在NiceGUI中,样式通过组件的classes,style,props和tailwind方法进行定义,不过这也是我一个想吐槽的地方。

3、老实讲我搞不清楚classes,style,props,tailwind这四个方法在样式定义上有什么严格的使用区分,很多css类你用在classes里也行,用在tailwind里也可以,而且你还可以通过style进一步自定义,对应界面开发不敏感的我来说,经常被搞的晕头转向。

4、开发效率上,使用NiceGUI确实提升巨大,对于简单应用,基本上告别了过去为UI发愁的烦恼。但应用结构相对复杂的时候暴露出一个问题,就是执行效率。相比于Vue+axios+fastapi这种前后端搭配,NiceGUI开发的应用似乎在执行效率上会慢一些,究其原因,我感觉可能是因为数据逻辑实现在python后端上,所以程序过于依赖前后端交互。相比之下,QThinker Plus实现的模块中,大部分是用ts在浏览器端直接运行的,只有涉及数据库的功能需要调后端接口,而同样的功能,如果用NiceGUI实现,效率上会降低不少。

5、总体而言,NiceGUI是一个非常有潜力的Python前端框架,一定程度上比flet更有前途。尽管性能开销大一些,但换来的是UI开发效率的巨大提升,还是非常值得学习的。

6、最后,我的系统重构已经接近尾声,这套代码现在可以跑在云端,通过浏览器在PC端、安卓端、ios端进行控制。相比于在自己家里电脑上跑,不存在断网断电的不稳定风险,整体结构和性能上相比之前的旧版也上了一个台阶。下周一二再搞一搞收尾工作,基本就能放在云上去跑了。

QThinker

前地产从业者,假装是个程序员,热爱编程与交易 自研QThinker量化交易框架

文章评论