FastHTML:用Python构建现代Web应用 | 从文档到代码,快速生成应用教程
(注意:本文是知识星球的精选内容。如果你已经加入了知识星球“kate的AI星球”,无须重复支付。)
引言
今天有个新的Web框架很火,那就是FastHTML。
https://fastht.ml
https://github.com/AnswerDotAI/fasthtml
FastHTML 是一种全新的 Web 框架,可通过最少、紧凑的代码实现快速、可扩展的 Web 应用程序。它建立在ASGI和HTMX等流行基础之上。
简单来说,你可以只创建一个main.py,附上requirements.txt就可以直接部署到Vercel,变成一个Web应用了。
快速部署FastHTML应用
Vercel CEO分享了一个快速部署FastHTML应用到Vercel的视频。
用到的命令如下:
mkdir fasthtml-demo && cd fasthtml-demo
uv env -q venv
. .venv/bin/activate
echo 'python-fasthtml==0.2.0' > requirements.txt
uv pip install -qr requirements.txt
cat << EOF > main.py
from fasthtml.common import *
app.rt = FastApp()
@rt('/')
def get(): return Div(P('Hello World!'), hx_get='/change')
@rt('/change')
def get(): return P('Nice to be here!')
serve()
EOF
ls
python main.py
vercel
可以看出,只需要很少的操作,就能完整发布一个网页(虽然内容极简)。
你现在可以使用 Vercel CLI 或将新更改推送到 Git 仓库来部署 FastHTML。
Vercel还发布了一个部署模板
https://vercel.com/templates/python/fasthtml-python-boilerplate
我也部署了一个图书管理应用(非官方示例应用)
https://library-management-tau-dun.vercel.app/
不过由于时间原因,还未连上数据库,所以线上还无法编辑。
FastHTML的基础
https://about.fastht.ml/foundation
ASGI
ASGI是FastHTML的核心技术之一,它简化了HTTP通信过程。
Uvicorn: ASGI服务器,负责监听HTTP消息并转换为Python ASGI API Starlette: 在ASGI基础上提供更便捷的编程接口
HTMX
HTMX是FastHTML的另一个核心技术,它扩展了HTML的交互能力。
HTMX的四大突破:
任何元素可调用服务器 任何事件可触发服务器调用 可使用任何HTTP方法 服务器响应可灵活修改现有页面
HTMX(原名Intercooler)有超过10年的发展历史,是一项成熟的技术。
HTTP
FastHTML不隐藏HTTP细节,让开发者直接与Web基础工作。
HTTP请求示例:
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP响应示例:
HTTP/1.1 200 OK
Date: Wed, 08 Jan 2024 23:1:05 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 5
Server: Apache/2.4.51 (Unix)
Connection: close
hello
HTML/CSS/JS
FastHTML主要使用HTML响应。
HTML示例:
<html>
<head><title>Example</title></head>
<body><p>Hello World!</p></body>
</html>
CSS用于添加样式 JavaScript用于客户端逻辑 FastHTML支持多种CSS框架和JS库的集成
不过今天讲的重点除了介绍FastHTML,更重要的是介绍如何随着新技术推出,让LLM帮我快速根据新技术写对应内容。