字体自托管 vs Google Fonts,性能差多少?
一直用 Google Fonts,最近被安利自托管。实测了一下,自托管首屏能快 300 500ms(少了一个第三方连接),CLS 也更可控。 代价是字体文件要自己维护、版权要自己确认。中文字体更麻烦,体积大,得做 subset。 我们的做法是:英文用 next/font(Goog
这里聚合 CodeNodeX AI 社区中与 Next.js 相关的技术文章和讨论,覆盖概念解释、工具对比、工程实践、常见问题和独立开发经验。
如果你正在研究 Next.js,建议先阅读高质量长文,再参与帖子讨论,形成从理解到实践的完整路径。
一直用 Google Fonts,最近被安利自托管。实测了一下,自托管首屏能快 300 500ms(少了一个第三方连接),CLS 也更可控。 代价是字体文件要自己维护、版权要自己确认。中文字体更麻烦,体积大,得做 subset。 我们的做法是:英文用 next/font(Goog
做技术博客/内容站,SSR 和 SSG 一直在纠结。SSG 快、便宜、能上 CDN,但每次发文章要重新 build。SSR 灵活但贵。 我的实践经验: 纯静态博客(更新少)→ SSG,build 时生成。 频繁更新、有评论互动 → SSR + ISR,兼顾新鲜度和性能。 个性化内
SSR + 客户端交互组件,首屏经常出现 "服务端渲染的内容 → 客户端接管后闪一下 → 变成正确状态" 的抖动。体验很糟糕。 常见的几个原因:服务端拿不到 window 、依赖时间戳的渲染、登录态在客户端才恢复。 我的处理套路: 能上 RSC 的全上 RSC,根本不 hydra
Suspense 用得好是利器,用不好就是满屏 loading 闪烁。分享一下我的边界划分原则。 每个异步数据区块单独包一个 <Suspense ,fallback 给骨架屏。 路由级用 loading.tsx (本质也是 Suspense)。 不要把整个 page 包一个大 S
为了减小首屏 bundle,把一堆组件都做成了 dynamic(() = import(...)) 。结果首屏是快了,但交互时一堆 chunk 同时请求,FCP 到可交互反而拖长了。 后来反思:dynamic 不是越多越好,得看组件是否真在首屏外、是否够大。小组件 dynamic
这条Web 开发种子内容关注服务端与客户端边界的工程闭环,覆盖“在时间有限时确定最小交付”中的越界修改、验收门槛和失败恢复。
这条Web 开发种子内容关注组件契约的工程闭环,覆盖“多人并行实现同一产品目标”中的越界修改、验收门槛和失败恢复。
这条Web 开发种子内容关注响应式布局的工程闭环,覆盖“从一句模糊想法到可运行页面”中的越界修改、验收门槛和失败恢复。
把在旧系统中增加新能力作为讨论入口,说明表单状态为什么需要性能采样,以及模型总是改到无关文件出现后怎样缩小影响范围。
把让生成代码符合现有工程约束作为讨论入口,说明无障碍交互为什么需要键盘操作记录,以及模型总是改到无关文件出现后怎样缩小影响范围。
这条Web 开发种子内容关注组件契约的工程闭环,覆盖“从失败日志定位根因”中的越界修改、验收门槛和失败恢复。
以“将人工流程变成可验证脚本”为合成场景,讨论Web 开发中的无障碍交互,重点检查模型总是改到无关文件,并用桌面与移动端截图界定可验收结果。