关于 FastHTML

入门指南

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 dev“真正的”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 发起,原因有几个

  • 在超过 25 年的 Web 开发生涯中,Jeremy 意识到 Web 编程可以变得更简单、更强大。他特别担心近期的趋势已经偏离了 Web 基础的力量,导致了一个由过于复杂的框架和工具组成的碎片化生态系统
  • 他看到两个虽小但巧妙的发展使 Web 的基础变得更强大、更容易使用:ASGIHTMX。但是使用它们的可用工具仍然过于复杂,入门门槛仍然太高
  • Jeremy 和他的妻子 Rachel 在过去 8 年里一直致力于让更多人能够接触到人工智能。他们看到最广泛使用的 Web 开发工具对于非全职程序员的人来说过于复杂。这意味着 Jeremy 和 Rachel 的学生们很难将他们的 AI 项目想法转化为可用的应用程序。
  • Jeremy 在 Answer.AI 的目标是帮助社会从 AI 中受益,这意味着要创造大量有效利用 AI 的有用产品和服务——因此,创造这些产品和服务需要变得尽可能快速和简单。

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 包。

以下是我们中短期议程上的一些事项

  • OAuth 支持
  • 支持更多数据库
  • 支持更多 CSS 框架,包括 DaisyUI、Bootstrap、Shoelace 和 Flowbite(我们已经对所有这些框架进行了一些初步工作)。

© 2024 年起 AnswerDotAI, Inc