FEATUREDAI HOT 精选· aihot-apiZH21:02 · 05·30
Simon Willison 把 Python 网页应用直接跑在了浏览器里,不再需要后端服务器
Simon Willison 用 Pyodide(把 Python 编译成浏览器能跑的 WebAssembly)加上 Service Worker,让 Python 的 ASGI 网页应用完全在浏览器里运行。他让 Claude Opus 4.8 帮忙写了代码,做了两个能用的演示:一个基础 FastAPI 例子,另一个是他自己的 Datasette 1....
#Code#Tools#Simon Willison#Claude
精选理由
Simon Willison 用 Claude Opus 4.8 辅助开发,把 Python ASGI 应用搬进了浏览器,已经跑通了 Datasette 的演示。这件事的钩子在于:浏览器不再只是前端沙箱,可以直接当应用服务器用。技术栈交代得清楚,Pyodide、Service Worker、ASGI FastCGI 每一步都有据可查,不是概念图而是能跑的代码。我会先打个折,这目前还是个开发者实验,离生产环境还有距离,但思路对无服务器和边缘部署的人有启发。
一句话点评
Simon Willison 用 Pyodide 把 Python 网页应用搬进浏览器里跑,不再需要后端服务器,Datasette 都能完整运行。
锐评
Simon Willison 把 Python 的 ASGI 网页应用(比如 FastAPI 和他自己的 Datasette)完全塞进了浏览器。做法是用 Pyodide 把 Python 编译成 WebAssembly,再配合 Service Worker 拦截浏览器请求,直接在本地跑 Python 后端逻辑。这比四年前他做的 Datasette Lite 更进一步:旧方案用 Web Worker 模拟,页面里的 JavaScript 脚本跑不起来,很多插件会挂;新方案用 Service Worker 走完整的 ASGI 协议,脚本能正常执行,兼容性好得多。
代码是让 Claude Opus 4.8 帮忙写的,他给了两个能跑的演示:一个基础 FastAPI 例子,一个 Datasette 1.0a31 完整版。这说明方案不是针对某个应用的特例,对遵循 ASGI 标准的 Python 应用都适用。
不过正文没提性能开销和首屏加载时间。Pyodide 本身初始化就不快,加上 Service Worker 拦截所有请求,实际延迟和内存占用会是多少,目前没有数据。另外,这种方案只适合处理同源请求,跨域场景和需要真实后端数据库的应用还是得老老实实搭服务器。他说等自己搞明白原理后会升级 Datasette Lite,到时候可以看看实际体验到底怎么样。
HKR 分解
hook ✓knowledge ✓resonance ✓