06 · 实验 C

next/dynamic 动态导入

把不首屏需要的重量级组件拆出去,用 next/dynamic 按需加载,减少首屏 JS 体积。

观察:首次点"加载"时,Network 面板会新出现一个独立的 JS chunk(重量级组件的代码)。 这就是 next/dynamic 把大依赖拆出首屏的效果。

关键认知

  • next/dynamic 让组件变成独立 chunk,不进首屏。 打开 Network 面板可看到:首屏只有核心 bundle,点按钮才请求那个组件的 chunk。
  • 适用于:图表库、编辑器、地图、只在用户操作后才出现的重组件。
  • React.lazy 类似,但 next/dynamic 还支持 ssr 开关和 loading 占位。
  • 坑(Next 16)ssr: false 只能在 客户端组件里用,服务端组件会直接 build 报错。
  • 更强的思路:如果组件能改成服务端组件(不发 JS),比动态导入更优(承接第 3 章)。