PyWebIO——免 HTML、JS 快速构建简单 Web 应用的 Python 库

2021-01-19 16:27:11 +08:00
 NeilWang

和大家分享一下我过去一年投入主要精力写的一个 Python 库——PyWebIO 。

简单说下背景,我之前开发过一个小程序,后台经常有些管理性的操作(比如发布通知、回复反馈等),最开始是通过 ssh 运行脚本来操作,但感觉不太方便,想做成 Web 页面但又觉得写前后端接口很麻烦。

于是就很希望有一个库,只需要调用一个函数,就可以在浏览器上显示表单,用户提交后函数同步返回表单数据;然后再提供一些函数,可以实时输出各种形式的数据,比如表格、图片、Markdown 等。

这样相当于把浏览器当成了一个富文本终端,编写 Web 服务就像编写控制台程序一样只需要调用输入输出函数就可以完成交互。找来找去,也没找到满意的工具可以实现这种需求,感觉此需求是普遍存在的,就自己开坑写了一个,于是就有了 PyWebIO 。

到现在,除了支持最初设想的输入、输出函数外,PyWebIO 还支持布局、事件绑定、并发、协程、与现有的 Web 应用集成等特性,文档也十分的完善。

总结来说,PyWebIO 能够让你用编写终端程序的逻辑来编写 Web 应用,不需要编写前端页面和后端接口,非常适合在短时间内快速构建对 UI 要求不高的应用(比如自用的 Web 后台、在线小工具等)。PyWebIO 既适合从来没有接触过 Web 开发的程序员来像编写终端程序一样编写 Web 应用,又适合有 Web 开发经验的程序员在自己的 Web 应用中快速实现某些小功能。

关于 PyWebIO 对传统 Web 的优势可以进一步阅读这篇文章:Why PyWebIO

GitHub 和文档放在下面了,欢迎大家体验和提出宝贵意见🙏。

Github: https://github.com/wang0618/PyWebIO
文档: https://pywebio.readthedocs.io/ (文档里的绝大部分代码示例都有在线演示的链接)

下面是一些使用 PyWebIO 编写的 Demo 和应用:

最后贴两个 PyWebIO 输入和输出函数调用效果的动图

14615 次点击
所在节点    分享创造
139 条回复
Ritter
2021-01-19 16:31:19 +08:00
有意思
YUX
2021-01-19 16:33:11 +08:00
感觉很有用
YUX
2021-01-19 16:39:19 +08:00
试了一下 demo 只能说太痛快了😂
daxin945
2021-01-19 16:47:41 +08:00
插眼,点赞
w468750
2021-01-19 16:52:34 +08:00
插眼,很酷!
luooo
2021-01-19 16:55:27 +08:00
很难不资瓷
vevlins
2021-01-19 17:03:05 +08:00
楼主🐂🐂🐂
privil
2021-01-19 17:03:07 +08:00
先 star 为敬!流弊
bolide2005
2021-01-19 17:07:01 +08:00
nice
loading
2021-01-19 17:07:35 +08:00
我会前端的就感觉没必要再多学
gogobody
2021-01-19 17:07:39 +08:00
@vevlins 强哥,伟民!🐮🐮🐮🐮,能输出到 jupyter 吗,这画图用起来多爽
renmu123
2021-01-19 17:10:59 +08:00
读了一下文档感觉很 cool,我记得 Python 生态里也有一个类似的工具,一下子想不起来名字了。
希望 input 能支持 date 和 datetime
NeilWang
2021-01-19 17:13:20 +08:00
@gogobody jupyter 也重写了 input 函数,直接调用也能够从 notebook 中获取输入。另外 PyWebIO 支持的那几个数据可视化的库都可以输出到 jupyter 中,具体可以去看看可视化库的文档
NeilWang
2021-01-19 17:19:11 +08:00
@renmu123 附言里介绍了我知道的比较相似的工具; date 和 datetime 的支持后面会加上的
shyling
2021-01-19 17:21:03 +08:00
感觉很实用
Acoffice
2021-01-19 17:21:46 +08:00
期待有更多实用场景的 demo
shyrock
2021-01-19 17:23:49 +08:00
感谢高质量分享,暂时用不到似乎。
vevlins
2021-01-19 17:25:10 +08:00
体验了下,非常好👍

我觉得核心的优势是不需要知道前端知识,不需要 MVC 等架构,直接用面向过程的方式把页面和后台逻辑写到一起,简化了很多操作。
主要目标用户我觉得有部分是一些科研工作者,他们做了一些类似深度学习数据统计之类的程序,但是不好呈现成果。也有很多 python 库的开发者,他们的项目需要下载下来,安装依赖等等才能看到效果,对于一些没有耐心的用户可能就流失了,现在可以方便地启动一个页面👍
omph
2021-01-19 17:31:27 +08:00
很轻量级,酷
u 盘上能跑不?
luooo
2021-01-19 17:41:29 +08:00
如果想根据个人需求调整布局,操作灵活吗

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

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

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

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

© 2021 V2EX