NiceGUI 已经 1.0+, 已移除 JustPy 依赖, 只基于 Vue 3 + Quasar 2 + Tailwind 3, 加载速度很快!

2023-06-11 11:29:16 +08:00
 akaHenry

🔥️ NiceGUI 介绍:

官网演示:

🔥️ 更新评价:

🚀️ 本人实测 demo:

Mac + Desktop App 预览效果:

目前存在的问题:

3447 次点击
所在节点    Python
22 条回复
akaHenry
2023-06-11 11:30:46 +08:00
## 其他补充:


### NiceGUI vs JustPy 对比:

- https://github.com/zauberzeug/nicegui/discussions/134#discussioncomment-5338495
- 作者解释 nicegui 1.0 之后, 完全移除了 JustPy 依赖. 赞!
- https://github.com/zauberzeug/nicegui/discussions/247
- NiceGUI is based on Vue 3, Quasar 2 and Tailwind 3.
- JustPy, in contrast, still uses Vue 2, Quasar 1 and Tailwind 2.


### 关于 Quasar 2(Vuejs UI 框架):


- ✅️ https://quasar.dev/vue-components/tabs
- ✅️ NiceGUI 暴露了 `Quasar 2` 的 props 和 slots, 使用 `Quasar 2` 非常简单.
- ✅️ NiceGUI 源码注释很贴心, 直接贴了 `Quasar 2` 文档链接.
- ✅️ 在这之前, 完全没用过 `Quasar 2`(有 vue3 经验). 参考注释, 使用 `Quasar 2` 没有障碍!

> 关于技术选型的思考, 多说一句:

- ✅️ 虽然我之前一直在使用 vue3 + element-plus, 短暂使用 [naive-ui]( https://www.naiveui.com/en-US/os-theme)(组件不全).
- element-plus 挺好用, 文档也完善.
- 但考虑到 `国人项目`, 老外几乎不用. (潜在问题, 国外新项目的技术组合, 就几乎不会基于 `国人项目`)
- `Quasar 2` 国内极少有人用, 之前看 v2 前端的评价(不高), 就没关注.
- 实际 `Quasar 2` 的体验, 挺好, 也并不复杂.(还是不能轻信他人评价)
- 想说的是: 如果同类竞品, 有国外项目, 个人建议尽量选国外项目.
- 不是崇洋媚外, 仅从未来生态丰富度 /现实意义思考.(复用更多开源成果)
roundgis
2023-06-11 20:07:32 +08:00
@akaHenry 最近用了 quasar 覺得挺好用的
SoulMelody
2023-06-12 05:53:14 +08:00
还有集成了 vuetify 的 trame https://github.com/Kitware/trame ,它支持数据双向绑定,语法比 nicegui 更贴近 vue 一些
akaHenry
2023-06-12 16:58:02 +08:00
@SoulMelody 可以.

这个看起来主要是绘图相关的?

nicegui 打包了 Quasar, 写页面的完备性, 高一些. 而且也集成了一堆图表库, 绘图也方便的.
akaHenry
2023-06-12 20:07:59 +08:00
更新了 UI 设计, 目前的这个 UI 配色, 已经可以拿去直接用了.
M4rs
2023-06-20 22:31:13 +08:00
写得很详细👍
lchynn
2023-09-22 13:27:37 +08:00
能不能加一个和 reflex ( reflex.dev )的对比呢? 这个 star 比 nicegui 多很多了。
( V2EX 有个介绍贴: https://www.v2ex.com/t/963602
akaHenry
2023-09-26 18:19:34 +08:00
@lchynn


粗略看了下 reflex 官方文档, 设计风格是偏 flutter 的. 我也写过 flutter.

不过感觉这个 reflex 没有 nicegui 简洁, nicegui 是很地道的 python 代码写法.

reflex 这种抄 flutter, 有点不伦不类.(很不 python)

nicegui 是 基于 vue.js + Quasar(UI 框架) 的. 也提供了 hack 入口, 即使 nicegui 一些 API 还未对齐, 也可以 hack 进 vue.js, 用纯前端的方式来实现一些功能.

so, nicegui 的完成度更高, 未来上限更高. 充分利用 vue.js 和 Quasar 的强大, 站在巨人肩膀上.

站在当前节点, 类前端(web)方案, 是开发效率最高的 GUI 方案. 非 web 方案, 不值得投入时间研究.
pythonwood
2023-10-09 21:11:12 +08:00
1 年前在等 vuetify3+vite ,现在发现 reflex/nicegui ,从而发现 Quasar 也很好。
这些年前端变化多端,希望能有个武林盟主,或者 2 、3 个带头大哥就可以了
azev
355 天前
搜到这了 问个问题
就是运行 nicegui 的时候 发现有些 css 没有载入( http:127.0.0.1:8080/_nicegui/1.2.24/static/***.css )
未加载,因为它的 MIME 类型 "application/x-css" 不是 "text/css"。 这个问题好像我之前做写 gin 程序也遇到过
好像 flask 也遇到过 需要改下代码就可以
但奇怪这个问题问的不是特别多,难道跟电脑和系统也有关吗?
回到 nicegui 该怎么弄呢?
cl80
334 天前
可以使用 自定义的 vue 组件吗
akaHenry
334 天前
@pythonwood 我目前认为 quasar 可能是最好的 vue.js UI 框架, 比国内的 element 等几个 UI 项目都要好用, 完成度和多平台一致性更好.

文档也更好.

缺点是中文社区用的人少, 有问题去官方 discord 搜. 还行.
akaHenry
334 天前
@azev 你这个问题, 完全没遇到过. 是不是你本地开了 VPN, 梯子代理干扰了?

我是 macOS 平台, 没遇到过.

你可以用 native 模式(desktop app 模式) 运行看看, 排除是不是浏览器的问题.
akaHenry
334 天前
@cl80 可以使用 vue 自定义组件. 最近 nicegui 升级了几个版本, 对自定义 vue 组件, 更加友好.

PS:

我的 repo 里, 有参考官方示例, 写了个 SPA 模式的 demo, 路由切换, 就不会强制刷新页面了. 很适合用来打包 app.

可以参考.
xiaozizayang
213 天前
作者,请问现在 nicegui 发展得如何了?
akaHenry
213 天前
@xiaozizayang

nicegui 更新很活跃, 文档也一直更新+完善.

德国人🇩🇪的项目, 质量都比较高, 也很少烂尾.

Vue 3 + Quasar 2 是我目前专注的前端方案, 如果你也偏好 vue, nicegui 用起来会非常顺手.

个人小项目, 拿他画个 UI, 非常快.

关于打包成 Mac/Windows 问题, 这个属于是 Python 打包通病, 很难搞. 各种打包方案, 都有坑.

如果不考虑打包, 或者 docker 部署. 可以放心用 nicegui. 体验很流畅.

(nicegui 最近也在路由支持 SPA 模式, 对写 app 友好)
xiaozizayang
213 天前
@akaHenry #16 感谢耐心回复,我是需要打包 windows ,也期望一套 python 生态能搞定,如果能在打包上做到相对自动化体验会好很多,毕竟能折腾这一套的其实更愿意选择 electron 或者 tauri 了

https://github.com/better-py/learn-py/issues/5

这个项目的那个解决方案评论者是你么?
akaHenry
213 天前
@xiaozizayang 是我.

pyinstaller 之类的工具, 我都测试过. (遇到一堆坑, 浪费了蛮多时间无果)

有几个客观原因, 我的开发环境是 M1 Mac, 有不少编译问题, 是 M1 Mac 导致的.

(排错过程, 不少 issue 别的平台, 相同编译参数, 是正常的, 但是 M1 Mac 不正常. 我也没时间换个机器验证, 就放弃探索了. )

------------------------------------------------------------------------------------------------------------------------

https://github.com/better-py/learn-py/tree/main/packages/py-try/try-nicegui

这个示例项目, 有多个 build.py 脚本, 以及 taskfile.yml 里也有几个编译参数.

如果你有时间折腾, 也可以继续探索 + 验证. (如果开发环境是 Windows, 说不定有些参数, 编译是正常的)

------------------------------------------------------------------------------------------------------------------------


如果你没空折腾, 我回复的绕路方案: 就是类似 Sublime Text 这种, 打包了 Python 的运行环境. (也就是 Java App 日常打包 JRE 运行时的操作)

缺点: 是增加包体积 + 每个平台都要单独打包, 优点是: 基本可以秒开.

这个方案, 成熟无坑. 最新的 Python 标准库, 提供了绿色 Python 的打包工具. 比较容易搞定.
xiaozizayang
212 天前
感谢回复,现在体积大也不是不能接受,如果只针对 win ,绿色模式其实只要打包一次就行了对吧
akaHenry
212 天前
@xiaozizayang 对. win 打包一次就行.

( ARM + win 平板那种, 需单独打包, 普通 x86 + winPC 打包一次即可)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX