最近使用纯 Python 开发了一个没有目标的习惯追踪应用 (支持自部署):
整体开发的体验非常丝滑,NiceGUI 框架提供了丰富的前端组件。
同时支持非常自然地将前端状态绑定至 python 的属性或变量:
demo = Demo()
ui.slider(min=1, max=3).bind_value(demo, 'number')
甚至直接绑定至用户一次 session:
ui.textarea('This note is kept between visits')
.classes('w-full').bind_value(app.storage.user, 'note')
优雅的背后是 tradeoff ,就如同 GIL 一刀切一般,在 NiceGUI 框架中所有的逻辑都在后端服务器处理(美名称之为 backend-first philosophy )。
举个例子,在前端界面点击菜单下拉框,也需要一来一回的 websocket 交互。如果网络状况一般,可能会严重影响用户体验,这也是为什么个人项目主打自部署~
总而言之,NiceGUI 对于没有丰富前端经验的 Python 程序员,应该会是一个不错的选择 :)
1
mayli 4 天前
Nicegui 性能不大行
稍微大的表,分页也会把数据都传过去 |
![]() |
2
crocoBaby 4 天前
看过,感觉不好用
|
3
3085570450tt 4 天前
用过跟 nicegui 类似的 https://github.com/reflex-dev/reflex
|
![]() |
4
iorilu 4 天前
以前可能还可以试试
现在 ai 开发前端没有任何问题的 后端直接 fastapi 搞 api 完事 |
![]() |
5
vishun 4 天前
看描述怎么感觉和微软的 blazor 中的一种模式比较像,blazor 还有种模式是可以编译成 WebAssembly 运行。
|
![]() |
6
ferock 4 天前 ![]() 啥玩意儿
|
![]() |
7
tonytonychopper 4 天前
点进去看了下,体验好难受🤯
|
![]() |
8
iorilu 4 天前
|
![]() |
9
CynicalRose 4 天前
streamlit 也可以自动部署,这个上手更简单。
|
![]() |
10
SenLief 4 天前
还不如自己画个手稿,然后喂给 ai 写前端。
|
11
mumbler 4 天前
学这干嘛,直接让 cursor 写,我看他代码学就好了
|
![]() |
12
MossFox 4 天前 ![]() 这个好玩,直接做到跟后端数据绑定了。
前几层别搁那说什么 AI 给你糊前端了,这里的这个应用特色不是糊弄出一个模板页面,是做到了让 UI 跟后端整个代码上下文直接关联了起来。你前端按的按钮或者输入的内容,直接 call 的就是后端的函数(而不用你再去包装一堆 HTTP API 了);前端显示的也可以是后端某个数据对象的内容、且后端数据改了前端会自动同步上去。 这个给我的感觉是弱化了相当多前端入门时要踩的坑,假如就是想给自己的 Python 脚本整一个快速的可视化界面,这个本地用的开发体验肯定比整一套前后端然后搓接口要舒爽。要数据绑定也天然支持,要快速地整个数据可视化也有一堆开箱即用的组件,全程不用碰 js 就能整完。 |
![]() |
13
MossFox 4 天前
@MossFox #12 补充一下框架的链接, https://nicegui.io/
|
![]() |
15
DOLLOR 4 天前
把后端都搬到用户电脑上不就好了嘛。
没错,说的就是 electron 。 让 NiceGUI 跑在 electron 里,也许是不错的选择🤣 |
![]() |
16
Linho1219 3 天前 via Android
让 SSR 再次伟大是吧
|
![]() |
17
daya0576 OP > 把后端都搬到用户电脑上不就好了嘛。
👍👍 所以让用户自部署或者公司内部应用,倒是不错的选择。 |
![]() |
18
bronyakaka 3 天前
python 我只建议用 flet ,是 flutter 的包装,全程纯 python 编写。界面做出来很漂亮,性能也不错。
|
19
shic 2 天前
用过几种框架性能都一般般,后来 cursor 出来后用 fastapi+react 很方便,前端全是 cursor 生成的
|