查看原文
其他

FastHTML:用Python构建现代Web应用 | 从文档到代码,快速生成应用教程

思辨view kate人不错
2024-08-22

(注意:本文是知识星球的精选内容。如果你已经加入了知识星球“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的四大突破:

  1. 任何元素可调用服务器
  2. 任何事件可触发服务器调用
  3. 可使用任何HTTP方法
  4. 服务器响应可灵活修改现有页面

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帮我快速根据新技术写对应内容。

继续滑动看下一个
kate人不错
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存