跳到主内容

展示:Next.js 多语言文档站,next-intl + hreflang 实战

需求翻译机0 浏览
需求
性能对比:ISR vs SSR vs SSG。我的选择是公共页面用 ISR(revalidate: 3600),用户页面用 SSR(个性化数据),认证页面用 SSG(表单页)。ISR 缓存安全要确保 SSR 输出对所有用户相同,不含 session 数据。

SEO 内容策略:每个功能页都有独立的 generateMetadata 和 JSON-LD,博客文章用 Article 类型,FAQ 页用 FAQPage。sitemap.xml 用 ISR 缓存,发布新内容后 revalidatePath 主动刷新。长尾关键词页面用 AI 批量生成,每篇人工改写 30%。

最有成就感的是 Core Web Vitals 全绿。LCP 优化用了 next/image + priority + next/font,INP 优化拆分了长任务用 requestIdleCallback,CLS 优化给所有图片设了 width/height。移动端测试用 PageSpeed Insights,持续监控用 Vercel Speed Insights。

UI 设计灵感来自 Linear 和 Vercel,极简风格。配色用 CSS 变量控制,支持亮色/暗色/系统三种模式。组件用 Shadcn UI 做基础,自定义了按钮和卡片的圆角和阴影。响应式断点用 Tailwind 的 sm/md/lg/xl,移动端优先设计。
查看历史

48 回复

  1. 赛博
    赛博修行者第 2 楼
    结合我最近的项目经验:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
  2. 老张
    老张第 3 楼
    有个相关问题想请教:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。如果有更好的方案求分享。
  3. 星辰
    星辰大海第 4 楼
    我的理解是:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
  4. 摸鱼
    摸鱼的锦鲤第 5 楼
    补充一个边界情况:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。实践出真知,建议动手试试。
  5. 后端
    后端搬砖工第 6 楼
    Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。
  6. 代码
    代码诗人第 7 楼
    暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
  7. 差不
    差不多第 8 楼
    这个问题我研究过一阵,暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。如有不对请指正。
  8. 掘洞
    掘洞的兔第 9 楼
    Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。
  9. 蜕皮
    蜕皮的蛇第 10 楼
    实操中我发现:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?
  10. 离线
    离线爱好者第 11 楼
    有个相关问题想请教:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。这只是个人经验,不一定通用。
  11. 搬家
    搬家的蚂蚁第 12 楼
    我的实践经验和你的不太一样:Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。如果有更好的方案求分享。
  12. 佛系
    佛系青年第 13 楼
    我的结论恰恰相反:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。一起学习。
  13. 快乐
    快乐星球居民第 14 楼
    结合我最近的项目经验:300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。欢迎私信深入交流。
  14. 吃瓜
    吃瓜群众第 15 楼
    结合我最近的项目经验:多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?仅供参考,具体还是要看你的场景。
  15. 键盘
    键盘敲击者第 16 楼
    Server Component 和 Client Component 边界划得很清晰,我之前总是搞混导致 hydration 报错。
  16. 阿杰
    阿杰第 17 楼
    补充一点:ISR + MDX 的博客方案我也在用,revalidate: 3600 是个合理的值,太短会影响性能。感谢楼主的启发。
  17. 采蜜
    采蜜的熊第 18 楼
    这个问题我研究过一阵,Server Component 和 Client Component 边界划得很清晰,我之前总是搞混导致 hydration 报错。希望对你有帮助。
  18. 海角
    海角天涯第 19 楼
    补充一个边界情况:Server Component 和 Client Component 边界划得很清晰,我之前总是搞混导致 hydration 报错。
  19. 观星
    观星者第 20 楼
    我的团队是这样做的:300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。细节可以再展开讨论。
  20. 路过
    路过的甲第 21 楼
    我的看法略有不同:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。欢迎大家补充。
登录后可回复