详细的使用请查看另一个 技术博客
路由与页面
如何创建动态路由?
在 pages 目录下创建类似 [id].js 或[...slug].js的文件即可实现动态路由。
如何获取动态路由参数?
使用 useRouter 钩子或 getServerSideProps/getStaticProps 的context参数获取。
如何实现 404 页面?
在 pages 目录下创建 404.js 文件即可自定义 404 页面。
如何重定向路由?
使用 next.config.js 的redirects配置或在 getServerSideProps/getStaticProps 中返回 redirect 对象。
getStaticProps 和 getServerSideProps 有什么区别?
getStaticProps在构建时运行用于 SSG,getServerSideProps在每次请求时运行用于 SSR。
什么时候使用 getStaticPaths?
当使用动态路由和 getStaticProps 时,需要 getStaticPaths 来指定哪些路径需要预渲染。
性能优化
如何导入全局 CSS?
在 pages/_app.js 中导入全局 CSS 文件。
如何处理静态文件如图片?
将文件放在 public 目录下,然后通过 /filename 路径引用。
Next.js 有哪些内置性能优化?
包括自动代码分割、预取链接、图片优化、服务端渲染等。
如何实现预加载?
使用 next/link 的prefetch属性或 next/head 的<link rel="preload">
如何使用动态导入?
使用 next/dynamic 实现组件的懒加载,减少初始包大小。
部署
如何配置环境变量?
建 .env.local 文件或在 next.config.js 中配置,客户端变量需要 NEXT_PUBLIC_ 前缀。
如何配置自定义服务器?
创建 server.js 文件并使用 next 和express等框架,但 Vercel 推荐使用无服务器函数。
高级特性
如何使用 TypeScript?
创建 tsconfig.json 文件并安装 @types/react 和@types/node等类型定义。
如何实现身份验证?
使用 next-auth 库或自定义解决方案结合 API 路由和 cookie/session。
如何实现状态管理?
常见错误
如何解决 ”window is not defined” 错误?
确保只在客户端使用浏览器 API,可通过 useEffect 或动态导入实现。
如何解决 CSS 闪烁问题?
使用 CSS-in-JS 库或确保 CSS 在服务端正确加载。
如何优化大型应用的构建时间?
使用增量静态生成、动态导入、减少依赖等方法。
什么是 Next.js 的 Layouts?
在 App Router 中,Layouts 允许在路由间共享 UI 同时保持状态。