SuperAPI AI 工具集

astro-best-practices

前端与建站

查看项目

更新于 10-15 23:33

技能介绍

用途:为 Astro 站点提供架构层面的质量实践,覆盖岛屿架构决策、按页面类型制定 SEO 策略和 Core Web Vitals。与负责语法与指令的 astro 技能互补,本技能聚焦架构决策。

适用场景:审查 Astro 站点质量或水合决策;确定页面类型的 SEO 策略;评估某个岛屿是否必要;审计 Core Web Vitals 或 JS 包体积。不适用于客户端指令语法(用 astro)、SEO 元标签实现细节(用 web-seo)、性能工具与测量(用 web-performance)。

主要能力与原则:

  1. 默认零 JS。水合是成本而非功能,添加每个指令前先问“为什么需要浏览器 JS”。静态导航、页脚、侧栏不用 client:load。
  2. 水合指令阶梯:client:load 用于首屏且需立即交互(搜索、导航切换);client:visible 用于首屏下方交互(评论区、地图);client:idle 用于非关键增强(分析组件、懒加载聊天);client:media 用于视口条件(仅移动端菜单)。
  3. 按页面类型做 SEO:不同类型页面用不同策略,不要跨页面复用同一 meta description。博客文章用唯一标题、描述与 Article JSON-LD;分页列表用 canonical 加 rel="next/prev"。
  4. 内容集合类型:每个集合在 src/content/config.ts 中定义 Zod schema,构建时校验,避免缺失字段导致运行时错误。
  5. 禁止无目的的 SSR:prerender: false 仅用于使用 Astro.locals、请求 cookie 或个性化的页面,可静态化的页面不要 SSR。
  6. 静态内容不用 React:静态 logo、导航链接、页脚与文本块用 .astro 组件,零 JS。
  7. Core Web Vitals:LCP 首图用 loading="eager" fetchpriority="high";CLS 所有媒体设显式 width/height。

常见症状与修复:静态页 JS 包大于 50kb,多因非交互组件用了 client:load,移除指令改用 .astro;LCP 大于 2.5s,首图缺优先级提示,加 fetchpriority="high" 与 loading="eager";水合时 CLS,岛屿水合时改变尺寸,为包装元素设显式宽高;社交分享缺 OG 图,在基础 Layout 加 og:image;SSR 页构建失败,缺适配器,在 astro.config.mjs 添加;分页页面重复内容,缺 canonical 与 rel 链接。og:image 最小 1200×630px。

限制与边界:第三方仅提供 React 的组件至少用 client:visible,除非首屏且加载即交互否则不用 client:load;prerender: false 不能与 getStaticPaths 同用;内容文件 5 个以上用集合,1–3 个独立文档可直接导入。其余收费、价格与平台信息暂未提供。