用途:Astro 是用于构建快速、以内容为核心的网站的一体化 Web 框架。适合博客、文档、营销站、作品集、电商前台等以静态页面为主、仅含局部交互区域的站点;不适合强交互单页应用(如仪表盘、实时协作工具)或需要全站共享客户端路由与全局状态的应用。
主要能力:内容集合通过 defineCollection({ loader, schema }) 定义,使用 Zod 做类型安全校验,支持 glob/file 加载器;用 getCollection('blog') 或 getEntry('blog','my-post') 查询。岛屿架构提供 client:load、client:idle、client:visible、client:media、client:only 等水合指令,可混用多种框架组件。视图过渡由 <ClientRouter /> 在 head 中启用,支持 transition:persist、navigate()、transition:animate、data-astro-prefetch。输出模式包括 output: 'static'、output: 'server' 及按页混合 SSR/静态;server:defer 可做服务器岛屿。其他内容包括中间件 onRequest、defineTable、getStaticPaths、APIRoute、nanostores 跨框架共享状态、import.meta.env.PUBLIC_* 环境变量。
使用方式:用 astro add react 等 CLI 添加框架适配器;内容配置须置于 src/content.config.ts;中间件须在 src/middleware.ts;启用 server/hybrid 模式需安装适配器,如 npx astro add vercel。
限制与常见错误:client: 指令仅适用于 UI 框架组件,不能用于 .astro 组件;client:only 必须指定框架字符串;仅 .astro 文件可组合多框架组件;内容 API 仅服务端可用,不能导入客户端脚本;岛屿 props 只能传可序列化数据;开启视图过渡需每页 head 中放置 <ClientRouter />。篇幅所限,其余配置细节暂未提供。