V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
daya0576
V2EX  ›  Python

用纯 Python 打造你的第一个 Web 应用

  •  
  •   daya0576 · 4 天前 · 3329 次点击

    最近使用纯 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 程序员,应该会是一个不错的选择 :)

    19 条回复    2025-02-17 14:41:35 +08:00
    mayli
        1
    mayli  
       4 天前
    Nicegui 性能不大行
    稍微大的表,分页也会把数据都传过去
    crocoBaby
        2
    crocoBaby  
       4 天前
    看过,感觉不好用
    3085570450tt
        3
    3085570450tt  
       4 天前
    用过跟 nicegui 类似的 https://github.com/reflex-dev/reflex
    iorilu
        4
    iorilu  
       4 天前
    以前可能还可以试试

    现在 ai 开发前端没有任何问题的

    后端直接 fastapi 搞 api 完事
    vishun
        5
    vishun  
       4 天前
    看描述怎么感觉和微软的 blazor 中的一种模式比较像,blazor 还有种模式是可以编译成 WebAssembly 运行。
    ferock
        6
    ferock  
       4 天前   ❤️ 2
    啥玩意儿
    tonytonychopper
        7
    tonytonychopper  
       4 天前
    点进去看了下,体验好难受🤯
    iorilu
        8
    iorilu  
       4 天前
    @tonytonychopper 这东西任何操作都要发到服务器处理, 就算本地部署都不会很流畅, 基本不可能上正式环境给别人用

    只能自己玩玩

    但 web 应用不流畅太难受了, 所以是没法用
    CynicalRose
        9
    CynicalRose  
       4 天前
    streamlit 也可以自动部署,这个上手更简单。
    SenLief
        10
    SenLief  
       4 天前
    还不如自己画个手稿,然后喂给 ai 写前端。
    mumbler
        11
    mumbler  
       4 天前
    学这干嘛,直接让 cursor 写,我看他代码学就好了
    MossFox
        12
    MossFox  
       4 天前   ❤️ 1
    这个好玩,直接做到跟后端数据绑定了。

    前几层别搁那说什么 AI 给你糊前端了,这里的这个应用特色不是糊弄出一个模板页面,是做到了让 UI 跟后端整个代码上下文直接关联了起来。你前端按的按钮或者输入的内容,直接 call 的就是后端的函数(而不用你再去包装一堆 HTTP API 了);前端显示的也可以是后端某个数据对象的内容、且后端数据改了前端会自动同步上去。

    这个给我的感觉是弱化了相当多前端入门时要踩的坑,假如就是想给自己的 Python 脚本整一个快速的可视化界面,这个本地用的开发体验肯定比整一套前后端然后搓接口要舒爽。要数据绑定也天然支持,要快速地整个数据可视化也有一堆开箱即用的组件,全程不用碰 js 就能整完。
    MossFox
        13
    MossFox  
       4 天前
    @MossFox #12 补充一下框架的链接, https://nicegui.io/
    yoiteshaw
        14
    yoiteshaw  
       4 天前
    @MossFox 类似 ttk plotly 这样的 py 库是吗 其实我感觉还是缺少点灵活性,不如 js 前端方便
    DOLLOR
        15
    DOLLOR  
       4 天前
    把后端都搬到用户电脑上不就好了嘛。
    没错,说的就是 electron 。
    让 NiceGUI 跑在 electron 里,也许是不错的选择🤣
    Linho1219
        16
    Linho1219  
       3 天前 via Android
    让 SSR 再次伟大是吧
    daya0576
        17
    daya0576  
    OP
       3 天前
    > 把后端都搬到用户电脑上不就好了嘛。

    👍👍 所以让用户自部署或者公司内部应用,倒是不错的选择。
    bronyakaka
        18
    bronyakaka  
       3 天前
    python 我只建议用 flet ,是 flutter 的包装,全程纯 python 编写。界面做出来很漂亮,性能也不错。
    shic
        19
    shic  
       2 天前
    用过几种框架性能都一般般,后来 cursor 出来后用 fastapi+react 很方便,前端全是 cursor 生成的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1199 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:15 · PVG 07:15 · LAX 15:15 · JFK 18:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.