Astro 4.0

作者
Matthew Phillips
Bjorn Lu
Chris Swithinbank
Emanuele Stoppa
Erika
Martin Trapp
Nate Moore

Astro 4.0 隆重登场! 新增 API、更快的构建速度、重新设计的文档,以及一个独特的全新 Astro 开发工具,以新颖而激动人心的方式增强您的本地开发环境。

什么是 Astro? Astro 是一个用于构建内容驱动型网站的 Web 框架,包括博客、营销和电子商务网站。如果您需要一个加载速度快、SEO 表现出色的网站,那么 Astro 非常适合您。

此版本亮点包括

Astro 4.0 现已在 npm 上提供。访问 astro.new 即可在浏览器中直接试用 Astro 4.0,或者在终端中运行以下命令以在新的本地项目中开始使用:

# Create a new Astro 4.0 project:
npm create astro@latest

大多数现有代码库升级到 Astro 4.0 不会遇到任何问题。 我们有意将此版本的 API 更改保持在最低限度,大部分更改都集中在集成 API 中。请查阅升级指南,以获取完整的操作说明和各项更改的详细分解。

Astro 开发工具栏

Astro 4.0 引入了开发工具栏——一种强大的新方式,可使用 Astro 增强和自定义您的本地浏览器开发体验。 检查您的页面,捕获棘手的可访问性问题,并使用自定义应用程序和第三方工具扩展工具栏本身。

Astro 开发工具栏仅在开发过程中出现在浏览器中,绝不会包含在最终的生产构建中。工具栏会隐藏在页面底部,直到您需要时才会显示。将鼠标悬停在附近,工具栏就会弹出,并提供多种不同的应用程序:

检查: 突出显示页面上的交互式 UI 组件岛。此工具栏应用程序旨在利用 Astro 独特的岛屿架构。突出显示页面上的岛屿可以帮助您了解哪些元素是交互式的,哪些是轻量级的静态 HTML。从那里,您可以查看属性并点击在代码编辑器中直接打开组件。

审计: 运行一系列测试,审计页面是否存在常见的可访问性问题。无需离开浏览器即可立即捕获没有 alt 文本的图像或配置错误的 ARIA 角色属性。

Sentry: 我们与 Sentry 合作设计了此工具栏的初始版本。Sentry 是领先的 Web 应用程序监控平台,他们很高兴能与我们合作开发一款全新的 Astro 独立调试工具。请明天(12 月 6 日)回来查看更多关于我们合作关系和 Spotlight.js 正式发布的信息!

Storyblok: Storyblok(我们的官方 CMS 合作伙伴)也发布了一个工具栏应用程序,作为其官方 Astro 集成的一部分。在 Astro 4.0 中,所有 Storyblok 用户都应该在其工具栏中看到一个新的应用程序,该应用程序提供了快速访问 Storyblok + Astro 的文档、教程和社区资源的途径。预计未来会有更多 CMS 功能推出。

第三方应用程序: Astro 开发者和第三方集成作者可以使用新的开发工具栏 API 来构建他们自己的嵌入式 JavaScript 开发应用程序。这为构建开发工具解锁了一个全新的基础功能,支持以下特性:

  • 直接在浏览器中显示测试和 linting 错误。
  • 使用 localtunnel 将您的开发环境开放给公共互联网。
  • 轻松访问外部工具,如 Squoosh 图像优化器。
  • 内部团队管理面板可自动化常见任务,例如在开发过程中切换用户账户。

Astro 集成目录中发现新的发布周工具栏应用程序,并学习如何构建您自己的。在接下来的几个月里,我们将继续通过新功能和第三方 API 增强工具栏。另外,您可以更新您的配置以在项目中禁用应用程序工具栏,并运行 astro preferences disable devToolbar --global 以在您的机器上全局禁用所有项目的工具栏。

国际化 (i18n) 路由

作为内容驱动型网站的 Web 框架,我们经常被问及国际化。作为 Web 开发者,处理国际化(通常称为“i18n”)可能意味着您的代码库会增加许多额外的复杂性:路由、重定向、翻译、相对链接处理……

Astro 4.0 引入了新的国际化路由功能,可帮助您以更低的复杂性构建全球可访问的网站。利用 Astro 的新功能,例如自动 i18n 路由和用于处理 URL 的低级辅助函数。

Astro 新的内置路由支持允许您通过集中配置定义您的区域设置

import { defineConfig } from "astro/config"
export default defineConfig({
i18n: {
defaultLocale: "en",
locales: ["en", "es", "pt-br"]
}
})

通过以下方式自定义您的行为:

  • 当某些区域设置中没有内容时的回退
  • 在 URL 中添加区域设置名称的前缀行为
  • 常见区域设置和语言代码的别名

对于带有服务器端渲染 (SSR) 的 'server' 构建,Astro 会自动检测用户的首选语言,以便您可以进一步定制内容、添加重定向或进一步自定义路由处理。

国际化路由支持最初作为 Astro 3.5 中的实验性功能添加。今天,它将进入 Astro 4.0 的稳定版本。阅读新的Astro 国际化指南,了解更多并试用新 API。

增量内容缓存(实验性)

Astro 4.0 引入了增量内容缓存作为一项实验性新功能,可显著提高大型网站的构建性能。

随着代码库的增长,网站代码库通常需要更长的构建时间。静态网站由于每次构建都重新生成相同的页面,因此这个问题更加严重。在 Astro 4.0 中,我们决定引入缓存来帮助减少 astro build 命令中重复、不必要的工作量。

在真实的 Astro 文档代码库上启用内容缓存后,astro build 中的相关步骤从 133.20 秒降至 10.46 秒,速度提高了约 92%。端到端构建时间从 4 分 58 秒缩短到刚刚超过 60 秒,总构建时间加快了 80%。我们在其他实际场景中也看到了类似令人印象深刻的结果。

增量内容缓存与内容集合 API 挂钩。由于 Astro 拥有用于访问和管理集合内内容的 API,我们的构建能够使用内部构建清单安全地跟踪集合内的更改。Astro 可以在每次构建时检查缓存并重用未更改的内容条目。

增量内容缓存的实验性支持最初在 Astro 3.5 中以“内容集合构建缓存”的名称引入。此功能在 4.0 中仍处于实验阶段,我们将继续最终确定缓存行为。如果您想尝试实验性功能,请立即在您的项目配置中启用 experimental.contentCollectionCache 以获得更快的构建速度。

新的视图转换 API

Astro 3.0 向世界引入了视图转换 (View Transitions),作为一种新的 API,仅通过服务器渲染的 HTML 和最少的客户端 JavaScript 即可构建交互式、类应用程序的体验。借助 Astro 中的视图转换,您可以执行以下操作:

  • 在不同页面之间动画导航,而无需发布臃肿的 SPA。
  • 在页面之间持久化有状态 UI,例如视频播放器和地图。
  • 自动将一个通用元素从一个页面变形到另一个页面。
  • 滑动淡入淡出元素,为您的页面增添更多个性。

自视图转换首次推出以来,我们持续改进了对其的支持。Astro 4.0 通过更多可配置的 API 和令人兴奋的新用例,将视图转换提升到新的水平:

  • 表单: 视图转换现在可以与静态 HTML 表单和动态客户端表单组件交互,在表单提交时触发转换,而不是链接导航。
  • 预取: 现在,您可以指定链接应在鼠标悬停、点击或在页面上可见时进行预取。您还可以单独启用/禁用链接的预取。
  • 路由播报器: 针对辅助技术内置的功能。
  • 一个低级 navigate() JavaScript API,您可以使用它手动触发导航。
  • 一个完整的生命周期事件系统,您可以接入它来自定义加载。您甚至可以使用它将内置的元素交换算法替换为您自己的算法。

我们将继续倡导视图转换的强大功能,以及它们仅通过服务器渲染的 HTML 和少量 JavaScript 即可提供重型客户端 SPA 体验的能力。更多功能和改进正在路上!

Astro 核心团队在此向 @martrapp 表示衷心感谢,感谢他们为在 Astro 4.0 中引入这些新 API 所做的贡献和工作。阅读更新的视图转换指南或新的教程,了解如何在您自己的项目中使用这些新 API。

重新设计的日志记录

Astro CLI 在 4.0 版本中焕然一新,带来了重新设计的日志记录体验。亮点包括:

  • 移除不必要的日志记录: 以前,一些常见场景会导致重复日志和其他不必要的日志。
  • 更简洁的错误: 现在错误在终端中占用的行数更少,这意味着在较小的终端中出现问题时滚动会更少。
  • 精简的堆栈跟踪: 默认情况下,错误不再在每个堆栈跟踪中包含无用的 Vite 运行时内部信息。

结果是,在新版 Astro 4.0 中,Astro 的 devbuild 命令更容易阅读、解析和调试。

重新设计的文档

Starlight 是 Astro 的官方文档模板。它包含了我们过去两年在大规模构建和管理 Astro 文档网站时收集到的所有最佳实践和模式。

今天,我们完成了一个循环:docs.astro.build 现在由 Starlight 提供支持!

既然我们自己已经切换到 Starlight,我们对自己的文档网站所做的任何改进都将回馈并改善所有人的 Starlight。得益于 Astro 文档,Starlight 现在拥有 Expressive Code 等功能和新的 Algolia 插件。未来还将有新的组件,例如我们的交互式文件树和多项选择测验。

我们在此感谢 Astro 核心维护者 @TheOtterlord 为完成此次升级所做的重大贡献和领导。访问新文档网站:docs.astro.build。如果您想了解更多信息,请浏览代码库加入我们的 Discord

开始使用 Astro 4.0

Astro 4.0 现已在 npm 上提供。访问 https://astro.new/ 即可在浏览器中试用 Astro,或者在终端中运行以下命令以在新的项目中开始使用:

# Create a new Astro 4.0 project:
npm create astro@latest

正在将现有项目升级到 Astro 4.0?请查看v4.0 升级指南,获取所有详细信息和针对每项更改的单独升级指导。