最近在GitHub上闲逛,发现一个叫Rio的开源项目,看完我直接愣了:纯Python写网页,连一行HTML都不用?这也太爽了吧!
这就离谱:Python也能写React?
你可能觉得我在吹牛,但我跟你讲,Rio这家伙就是把React那套组件化思想搬到Python里了。
看懂了吗?就是一个纯Python框架,后端能跑,前端也能跑。你写一个组件,Rio帮你生成整个网页界面。所有状态变化、UI更新,它都自动帮你搞定。
说实话,我第一次看到这个,第一反应是“又一个玩具项目”。结果翻了下文档,好家伙,超过50个内置组件,Switch、Button、Text这些常用的全都有。

看看代码就知道了,真不复杂
给你看个例子,一个计数器的完整代码:
class ButtonClicker(rio.Component):
clicks: int = 0
def _on_press(self) -> None:
self.clicks += 1
def build(self) -> rio.Component:
return rio.Column(
rio.Button(
'点我', on_press=self._on_press),
rio.Text(
f'你点了 {self.clicks} 次'),
)
app = rio.App(build=ButtonClicker)
app.run_in_browser()
就这几行,一个能响应点击的网页就出来了。不需要考虑DOM操作,不需要写回调地狱,Python里直接改变量就行。
我为什么觉得这东西有戏?
痛点太准了:很多Python开发者就想快速整个界面,不想学前端三件套。用Rio,一天就能上手,三天就能整个小系统。
运行方式灵活:它既能在浏览器里跑,也能当本地窗口应用跑。你写一套代码,两个场景都覆盖,这不香吗?
工具链友好:因为全程Type Safe(类型安全),你用的Pyright、Pylance这些工具都能实时给你提示,写错了当场就标红。
那到底能干啥?
| 场景 |
合适程度 |
说明 |
| 内部管理系统 |
⭐⭐⭐⭐⭐ |
快速开发,不用折腾前端 |
| 数据可视化面板 |
⭐⭐⭐⭐ |
结合matplotlib/plotly |
| 个人博客/作品集 |
⭐⭐⭐⭐ |
简单网页,完全够用 |
| 移动端App |
⭐⭐⭐ |
实验阶段,等成熟 |
| 复杂交互应用 |
⭐⭐ |
看具体需求 |
安装和使用,简单得不像话
pip install rio-ui
装完就一行命令创建项目:
rio new my-project
rio run
选个模板,回车,浏览器自动打开,你的第一个Rio应用就上线了。
社区还挺活跃
GitHub上星星涨得挺快,Discord里每天都有讨论。毕竟这项目还在快速迭代,每周都有新功能。你要是想参与贡献,提PR、报bug都行,文档里有贡献指南。
说实话,我挺看好Rio的。它不是什么颠覆性的东西,但实实在在解决了很多Python开发者的痛点。你想想,以后写工具脚本顺手加个界面,或者快速搭个内部系统,全程不用切语言、不用学新语法,这种感觉真的很爽。
项目地址:https://github.com/rio-labs/rio
如果你对这种纯Python的Web框架感兴趣,欢迎到云栈社区分享你的看法。
|