> starmerx/engineering
[github]
← cd ../notes
[笔记] · · 1 分钟

我们为什么把 starmerx.io 做成静态站点

一个工程师团队的对外站点,应该和我们的代码一样:简单、可读、易部署。零服务端,零 cookie,部署到 CDN 边缘。

astrocloudflarearchitecture

一个工程师团队的对外站点,应该和我们的代码一样:简单、可读、易部署

TL;DR

starmerx.io 是一个纯静态站点。Astro 构建,托管在 Cloudflare Pages,零服务端,零 cookie。

为什么?因为:

  1. 我们不是在做产品,是在做一面橱窗。
  2. 静态 = 最便宜、最快、最容易维护。
  3. 我们每天写几千行业务代码,业余时间不该被站点的运维吃掉。

我们没做的事

  • ❌ 没接数据库
  • ❌ 没写 API
  • ❌ 没装 cookie 同意横幅
  • ❌ 没接评论系统
  • ❌ 没接 Google Analytics(Cloudflare Web Analytics 无 cookie,合规更友好)

我们做的事

pnpm install
pnpm dev       # 本地预览
pnpm build     # 输出 dist/
# → Cloudflare Pages 自动从 git 构建

整条发布链路只有两步:写 MDX,git push。CI 自动跑 astro build,部署到边缘节点。

Astro 选了它而不是 Next

  • 默认零 JS(绝大多页面不需要交互)
  • MDX 是 first-class
  • Content Collections + Zod schema 让 frontmatter 校验自动跑
  • 构建快(数百页几百毫秒)

我们用 Next 写过内部管理后台,那里 RSC / Server Actions 都很合适。但对外的、内容为主的站点,Astro 几乎是无脑正确选择

一个反直觉的点

“静态站点写交互怎么办?”

加 JS。Astro 的 client:* 指令让你在需要的角落挂 React/Vue/Svelte/preact/原生。

我们只在两处挂 JS:

  • 主题切换(~30 行)
  • Hero shader(~60 行 + GLSL)

其余全是 HTML + CSS。

我们公开的栈

选型原因
框架Astro 4静态 + MDX + 零 JS 默认
样式Tailwind快、约束、容易撕掉重写
部署Cloudflare Pages全球边缘、慷慨免费层
搜索Pagefind构建时生成索引,纯静态
Heroogl + GLSL20KB WebGL,不影响 LCP

写在最后:

我们乐于公开我们用的栈和踩过的坑。 后面这个 notes/ 栏目会持续更新。