Video thumbnail

    Matt Kane | Astro 的未来 | ViteConf 2025

    Valuable insights

    1.Astro 专注于内容驱动网站: Astro 定位为构建内容驱动网站的最佳框架,例如博客、营销网站和文档,而非仪表板或聊天机器人等应用。

    2.默认零 JavaScript 策略: Astro 默认发送纯 HTML 和 CSS,不包含任何 JavaScript,这使得网站在默认情况下速度极快,性能卓越。

    3.岛屿架构实现选择性水合: 通过岛屿架构,只有需要交互性的组件才会被水合(hydrate),从而在保持大部分内容静态的同时提供必要的动态功能。

    4.支持多框架的组件灵活性: 开发者可以在 Astro 项目中自由使用 React、Vue、Solid 或原生 JavaScript 等多种框架构建交互式组件。

    5.内容集合提供类型安全管理: 内容集合功能使用类型安全的 API 帮助组织和查询内容,支持从 CMS、API 或数据库中拉取数据。

    6.近期社区与下载量显著增长: Astro 月下载量已突破 300 万,实现年度翻倍增长,并在 State of JS 调查中位居满意度榜首。

    7.大型企业采用 Astro 驱动网站: Cloudflare、Unilever、保时捷、宜家以及华盛顿邮报等知名实体已选择 Astro 来部署其关键网站和设计系统。

    8.Astro 5.0 引入服务器岛屿: 服务器岛屿架构结合了静态页面的性能与服务器端渲染的能力,允许在静态或缓存页面上展示动态内容。

    9.持续关注稳定性和开发者体验: 在 Astro 5.0 之后,团队重点修复了数百个错误,并致力于提升扩展性,确保开发体验的愉悦性。

    10.SVG 组件化简化集成: 导入 SVG 文件即可将其作为组件使用,并能通过属性(Props)进行类型安全地控制,提升了 DX。

    11.智能图片组件优化性能最佳实践: 新的图片组件能自动处理响应式图像、格式优化、延迟加载和防止布局偏移等复杂性能要求。

    12.Astro 6.0 将稳定支持字体优化: 未来的字体优化功能将自动处理字体加载、缓存和性能,同时保护用户隐私,避免向第三方发送数据。

    13.内容安全策略 (CSP) 实现自动化: Astro 自动计算脚本哈希并处理所有安全配置,使 CSP 部署变得极其简单,为开发者带来巨大便利。

    14.实时内容集合支持请求时数据: 实时内容集合允许在请求时获取数据,并与新的缓存机制集成,以处理高频变化的数据流。

    15.采用 Web 标准的缓存策略: Astro 致力于使用 CDN 缓存控制等 Web 标准来替代平台特定的 ISR 解决方案,实现通用且强大的缓存。

    Astro 核心理念与框架介绍

    Matt Kane,来自 Astro 核心框架团队,分享了其作为框架负责人的工作以及在开源领域的长期贡献,包括曾担任 Gatsby 的核心维护者。本次演讲聚焦于 Astro 的发展方向、正在构建的功能以及背后的驱动力。Astro 被定位为构建内容驱动型网站的专业框架,适用于博客、营销站点、文档和电子商务等场景,而非仪表板或实时聊天机器人等应用。

    Astro 的四大核心设计原则

    Astro 的核心优势在于其默认的零 JavaScript 策略。这意味着新站点启动时仅发送 HTML 和 CSS,除非明确需要交互性,这保证了极快的默认加载速度。如果需要交互性,Astro 采用岛屿架构(Islands Architecture),仅对需要响应的微小组件发送适量的 JavaScript 进行水合,从而在引入交互性的同时保持性能优势。

    • 零 JavaScript 默认输出,实现极速加载。
    • 岛屿架构,仅水合必要的交互部分。
    • 框架灵活性,支持混合使用 React, Vue, Solid 等。
    • 内容集合,提供类型安全的工具来管理内容。

    框架灵活性与组件选择

    Astro 允许开发者自由选择技术栈。用户可以利用 React、Vue、Solid、Svelte、Quick、Angular 或 Alpine 组件作为交互式岛屿,甚至可以在同一页面上混合使用这些技术,这对于构建复杂的设计系统尤其有利。开发者也可以选择使用纯净的 JavaScript 来实现交互功能。

    框架
    兼容性
    React/Vue/Solid
    完全支持作为岛屿组件
    Angular/Svelte/Alpine/Quick
    支持集成
    原生 JavaScript
    完全支持

    此外,为了更好地服务内容驱动型网站,Astro 提供了强大的内容管理工具,核心是内容集合(Content Collections)。这是一种集中组织内容的方式,允许开发者以类型安全的方式查询和操作所有内容资源,有效避免了因内容来源多样化而产生的管理混乱。

    Astro 近期发展与市场采纳情况

    在最近的一年中,Astro 实现了显著的增长。月下载量首次突破 300 万次,自年初以来增长了一倍以上。该项目已获得超过 50,000 个 GitHub Star,并在 State of JS 调查中被评为元框架中满意度、留存率和兴趣度的第一名。这表明尝试过 Astro 的用户非常喜爱它,而未尝试过的用户则有强烈的意愿去了解。

    社区活跃度与采用案例

    Astro 社区非常活跃,Discord 拥有超过 35,000 名成员。同时,社区对文档的贡献巨大,超过一千人参与了文档贡献,并且文档已被翻译成 14 种语言。在企业级应用方面,Cloudflare 已将其开发者文档和主站迁移至 Astro。Unilever 选择 Astro 用于其全球营销网站,与 Porsche 和 IKEA 等品牌并肩。

    Web Flow 宣布选择 Astro 来为其 AI 代码生成功能提供支持,如果使用 Web Flow 的代码生成功能构建网站,每次生成的都是一个 Astro 站点,这一点非常令人兴奋。

    另一个重磅消息是《华盛顿邮报》正在迁移至 Astro,他们选择 Astro 的主要原因是其卓越的速度以及能够无缝集成现有 React 内容的能力,这对于内容驱动型巨型站点而言是巨大的认可。

    Astro 5.0 后的关键功能更新

    大约一年前,Astro 5.0 版本发布,带来了内容集合的全新版本,该版本已超越仅支持本地 Markdown 文件的限制,允许内容从 CMS、API 或数据库中拉取,并保持类型安全和易用性。此外,Astro 还引入了服务器岛屿(Server Islands),这是一种新的架构,它将静态页面的性能与服务器端渲染的动态内容相结合。

    服务器岛屿与动态内容集成

    服务器岛屿与客户端岛屿不同,后者向静态页面添加客户端 JavaScript。服务器岛屿则向静态或缓存页面添加动态的服务器端渲染内容。这意味着可以在一个主要不常变化的页面上,安全地展示个性化、实时更新的内容,而无需对整个页面进行重新渲染。

    稳定、扩展与开发者体验的聚焦

    自 5.0 版本发布以来,团队专注于三大领域:稳定性的提升(修复了数百个问题,努力将问题计数降至 100 以下)、扩展性(确保能够处理如 Cloudflare.com 这样的大型站点)以及开发者体验(DX)。提升 DX 是为了确保随着用户群体的扩大,Astro 依然保持有趣和愉快的开发体验。

    提升开发者体验的近期特性

    本年度发布的一些小而重要的特性显著改善了 DX。例如,SVG 组件化允许直接导入 SVG 文件作为组件,并能传递属性,这极大地简化了 SVG 的使用。在图像处理方面,Astro 的图片组件现在能自动处理响应式、格式优化、延迟加载和防止布局偏移等复杂的性能最佳实践,而 API 保持了 1995 年般的简洁。

    优化项
    处理方式
    响应式图像
    自动生成正确的 sources 属性
    格式优化
    自动优化为 WebP 等格式
    布局稳定性
    自动处理,防止布局偏移

    引入服务器端会话功能

    Astro 新增了会话(Sessions)功能,其设计灵感来源于 PHP 中简洁的会话管理方式。此功能提供了一种安全存储用户数据的简单服务器端机制,无需将状态保存在浏览器中。Astro 在幕后处理所有安全存储(由 unstorage 提供支持)、会话 Cookie 和平台集成,例如自动使用 Cloudflare KV 或 Netlify Blobs。

    Astro 6.0 及未来的性能与安全路线图

    接下来的展望主要集中在 Astro 6.0 及其后续版本,其中一些功能目前处于实验阶段。首先是字体处理,为了解决性能和隐私问题,Astro 正在构建自动化的字体优化方案。该方案能下载并本地缓存 Google Fonts 等资源,确保不向第三方发送用户数据,同时优化性能并防止布局偏移。

    字体性能与隐私保护

    开发者只需指定字体和提供商,Astro 即可自动优化字体文件,生成所需的 CSS,并处理预加载。整个过程由 Capsize 和 Unif 提供支持,隐藏了底层复杂性,实现了最小化配置下的完美字体性能。此功能目前为实验性,预计在 Astro 6.0 中稳定发布。

    Google Fonts 等服务会以牺牲用户隐私为代价,许多国家/地区使用 Google Fonts 实际上是违法的。

    内容安全策略 (CSP) 的自动化

    内容安全策略(CSP)是社区呼声最高的功能之一,它对防止跨站脚本攻击至关重要。手动实施 CSP 非常繁琐,需要计算每个脚本/样式标签的哈希值,或动态注入随机数,这几乎排除了预渲染的可能性。Astro 的解决方案极其简单:只需将配置设为 true,Astro 即可自动计算哈希,并根据部署平台(SSR 或静态)使用响应头或 Meta 标签进行适配。

    实现方式
    复杂性
    预渲染支持
    手动实现
    极高,需计算哈希或注入随机数
    基本排除
    Astro 自动实现
    极低,只需配置为 true
    完全支持

    开发服务器与 Vite 环境 API 统一

    Astro 正在引入 Vite 环境 API,以完全统一开发和生产流程。当前开发服务器在添加 SSR 支持之前构建,导致开发环境与生产环境不匹配。通过使用此 API,开发者可以在开发时运行相同的运行时和 API,从而更早地发现问题,并获得更好的调试体验,预计在 Astro 6.0 年底前发布。

    实时内容集合与高级缓存机制

    实时内容集合(Live Content Collections)旨在处理频繁变化的数据,如实时价格或被多人编辑的文章。它们提供与构建时内容集合相同的 DX,但数据在请求时获取。虽然这需要在每次请求时命中 API,但可以通过返回缓存提示(Cache Hints)来解决性能问题,这些提示可用于设置 CDN 缓存标签等响应头。

    Astro 正在开发一种基于 Web 标准的缓存方法,以替代平台依赖性强的 ISR(增量静态再生)。新方法允许声明式地指定缓存时长和失效标签。当与实时集合集成时,Astro 可以自动进行依赖项追踪,当源数据项更新时,自动调用 Webhook 使依赖该数据的页面失效,从而实现高性能缓存与自动失效的结合。

    • 使用 CDN Cache-Control 头部等 Web 标准。
    • 抽象化平台特定实现,确保通用性。
    • 与实时集合集成,实现自动依赖项追踪。
    • 仅失效所需数据,提供高性能缓存。

    Astro 项目的可持续性与社区未来

    Astro 的核心始终是开源和社区优先。通过早期的风险投资(VC)资金,团队得以雇佣全职维护者并向核心贡献者支付津贴。然而,团队今年致力于构建一个多元化的融资模型,以确保项目在不依赖 VC 的情况下也能蓬勃发展,并建立了治理结构以保持其社区驱动的本质。

    多元化融资与伙伴关系

    Astro 的基础是 Open Collective 上的个人赞助者。此外,还获得了机构合作伙伴的支持,包括来自 Astro Technology Company 的服务收入,以及与 Netlify、Google、Cloudflare、Web Flow、Sentry 和 MX 等公司的企业合作。值得注意的是,这些合作伙伴中甚至包括直接的竞争对手,因为健康的生态系统对所有参与者都有益。

    资金来源类别
    示例
    个人赞助
    Open Collective 捐赠者
    企业合作
    Netlify, Google, Cloudflare, Web Flow
    专业服务
    Astro Technology Company

    目前,核心 Astro 开发在财务上已实现可持续性,整个项目正迈向全面可持续发展的目标。演讲者对所有支持者——包括合作伙伴、数千名贡献者和用户——表示感谢,并特别感谢 Vite 团队为 Astro 提供了坚实的基础。

    Questions

    Common questions and answers from the video to help you understand the content better.

    Astro 默认是否发送 JavaScript 来保证网站速度?

    Astro 默认采用零 JavaScript 策略,仅发送 HTML 和 CSS,这意味着除非明确添加交互性,否则网站不会发送任何 JavaScript,从而实现极快的加载速度。

    Astro 的岛屿架构(Islands Architecture)如何优化性能?

    岛屿架构允许页面主体保持静态,仅对需要交互的小部件发送必要的 JavaScript 进行水合(hydrate),确保只有必需的代码被传输和执行,从而维持高性能。

    Astro 如何简化内容安全策略(CSP)的部署?

    Astro 实现了 CSP 的自动化,开发者只需在配置中将其设置为 true,Astro 就会自动计算所有脚本和样式的哈希值,并根据部署环境(SSR 或静态)应用适当的头部或 Meta 标签。

    实时内容集合(Live Content Collections)与传统内容集合有何不同?

    实时内容集合用于处理频繁变化的数据,它们在请求时获取内容,而非在构建时。这需要配合缓存机制来优化性能,但提供了处理实时或高频更新数据的能力。

    Astro 如何处理复杂的图片性能优化需求?

    Astro 的图片组件能够自动处理响应式图像、格式优化(如 WebP)、延迟加载以及防止布局偏移等所有性能最佳实践,同时保持简洁的 API 接口。

    Useful links

    These links were generated based on the content of the video to help you deepen your knowledge about the topics discussed.

    This article was AI generated. It may contain errors and should be verified with the original source.
    VideoToWordsClarifyTube

    © 2025 ClarifyTube. All rights reserved.