FastHTML 是一种创建现代交互式 Web 应用程序的新方法。它可以小到一个 6 行的 Python 文件,也可以扩展到复杂的生产应用。认证、数据库、缓存、样式等都是内置的,并且可替换和可扩展。支持一键部署到 Railway、Vercel、Huggingface 等平台——或者部署到任何 Python 服务器或 VPS,包括 Azure、GCP 和 AWS。
您现在正在使用的就是一个 FastHTML 应用。我们没有为这个网站创建一个独立的博客系统,因为用 FastHTML 构建应用是如此简单,以至于根本不需要!例如,这是当前页面的源代码。您会看到代码非常简单,依赖于像 Markdown 这样的 Python 组件来构建页面。这些组件是简单的 Python 函数——这是 Markdown 的源代码,只需一行代码!FastHTML 开箱即用,提供了身份验证、数据库访问、样式(通过 PicoCSS)等等。系统的每个部分都可以使用可通过 pip 安装的 Python 模块进行扩展和替换。
您正在阅读的这个网站提供了关于 FastHTML 背后关键概念和思想的背景信息。文档则侧重于代码。因为 FastHTML 汇集了许多不同的 Web 技术,所以花一些时间来理解它们是如何组合在一起的是值得的。请浏览上方绿色导航栏中的五个部分(如果您在移动设备上,则是汉堡菜单),以加深您的理解。正如传奇的 Python 程序员和《Two Scoops of Django》的合著者 Audrey Roy Greenfeld 告诉我们的那样
“我认为,一个有经验的 Web 开发者能在一小时内上手,这个事实可能有点低估了 FastHTML。对我来说,它就像一个分形,我探索得越多,它就越有趣,我学到的也越多。我大约投入了 40 个小时,足以让我意识到,与我能学到的相比,我所知的微不足道。”
如果您是一位经验丰富的 Web 开发者,那么您可以立即使用您所有关于 CSS、HTML、JS 等的知识来用 FastHTML 构建 Web 应用程序。我们从业内专家那里听说,他们在开始使用 FastHTML 后的一小时内就成功构建了完整的 Web 应用。我们有一个面向 Web 开发者的快速入门教程,可以帮助您快速上手。(在那里时,也请阅读文档的其余部分!)接下来,通读这个地道的 fasthtml 应用的带有大量注释的源代码。然后研究一些 fasthtml-example 应用,特别是列出的前四个。
如果您没有太多(或任何)Web 开发经验,请尝试按照FastHTML 实例教程的每个步骤进行操作。我们还没有一个独立的指南来解释您需要了解的所有 Web 基础知识(HTML、HTTP、CSS 等),所以您可能需要通过其他资源进行自学。但请关注这里——我们计划很快推出一个完整的从零开始的 Web 编程课程!在此期间,这里有一个 1 小时的视频课程来帮助您开始
“真正的”Web 开发不应该这么难...FastHTML 是一个用 Python 编写 Web 应用程序的系统。它被设计得简单、强大且灵活。它也被设计得易于学习和使用。该项目受到 React JSX、Hotwire、Astro、FastAPI 和 Phoenix LiveView 等技术的启发。FastHTML 小而简单——在撰写本文时,它的代码不到 1000 行。这是因为它建立在强大而灵活的基础之上:Python、Starlette、Uvicorn 和 HTMX。如果您是 FastAPI 用户,FastHTML 的很多部分会看起来非常熟悉;FastAPI 是一个主要的灵感来源。
FastHTML 最初由 Answer.AI 的 Jeremy Howard 发起,原因有几个
FastHTML 是一个解决所有这些问题的框架:它回归 Web 的本源,利用 ASGI 和 HTMX,并且既适用于经验丰富的开发者,也适用于新手程序员。
编程是将你头脑中的想法转化为可以帮助人们的产品和服务的关键。人工智能最近使得开始编程变得更加容易,这意味着有比以往任何时候都多的人可以创造有用的东西。
但新一代程序员通常没有与全职软件工程师相同的背景。他们可能在不同领域接受过培训,或者可能是自学编程。我们希望 FastHTML 能让新一代程序员更容易地将他们的想法变为现实,创造出可维护和可扩展的解决方案。
FastHTML 目前运行良好,但它还很年轻。我们几乎在 FastHTML 项目本身的每个部分都使用它(说“几乎”是因为文档目前使用的是 Quarto;我们计划很快将它们移植到一个基于 FastHTML 的文档系统中)。例如,我们与一个设计团队合作创建了 fastht.ml 主页,它就是用 FastHTML 实现的——这是主页源代码。
我们正在做一些事情来让 FastHTML 变得更好。并非所有功能都已“开箱即用”。如果您发现缺少您需要的东西,请通过创建一个 issue 告诉我们。或者随时欢迎您自己添加并提交一个 pull request!
我们的计划是让 FastHTML 能够做到像 Django、NextJS 和 Ruby on Rails 这样的框架所做的一切,但这需要一些时间才能实现!对于有经验的开发者来说,为 CSS 框架、pypi Python 模块和 JS 库添加绑定是直截了当的——如果您添加了一个,请将您的绑定模块发布到 pypi 上,以便社区可以使用它,并告诉我们,以便我们可以链接到您的项目。我们邀请您在 PyPI 上使用“fh-”前缀,以便于识别 FastHTML 包。
以下是我们中短期议程上的一些事项