MST

星途 面试题库

面试题:Next.js页面路由与API路由在数据获取方面的差异

在Next.js应用中,页面路由通常使用`getStaticProps`、`getServerSideProps`等方法获取数据,API路由通过自身逻辑获取数据,详细说明这两种方式在数据获取场景、性能影响以及数据更新频率等方面的差异。
18.8万 热度难度
前端开发Next.js

知识考点

AI 面试

面试题答案

一键面试

数据获取场景

  • 页面路由(getStaticPropsgetServerSideProps
    • getStaticProps:适用于数据不经常变化,如博客文章、产品介绍页面等。在构建时获取数据,生成静态HTML页面,可提高首屏加载性能。
    • getServerSideProps:用于数据需要实时获取或基于用户特定信息(如用户认证状态)的场景,如用户个人资料页面、动态订单页面等。每次请求页面时都会在服务器端获取数据。
  • API路由:主要用于提供数据接口供前端或其他应用程序调用。可处理各种复杂的数据获取逻辑,如与数据库交互、调用第三方API等,且与页面渲染解耦。

性能影响

  • 页面路由(getStaticPropsgetServerSideProps
    • getStaticProps:构建时获取数据生成静态页面,减少了运行时数据获取开销,提升用户访问速度。但构建时间可能会因数据获取量增加而变长。
    • getServerSideProps:每次请求都在服务器端获取数据,会增加服务器负载,尤其是高并发场景下。首屏加载时间可能比getStaticProps生成的静态页面长。
  • API路由:不直接影响页面加载性能,但如果API本身性能不佳(如查询数据库慢),会影响依赖该API的前端应用体验。可通过缓存等机制优化性能。

数据更新频率

  • 页面路由(getStaticPropsgetServerSideProps
    • getStaticProps:数据更新依赖于重新构建。如果数据频繁变化,频繁重建成本高,适用于数据更新频率低的场景。可通过增量静态再生(ISR)实现一定程度的动态更新。
    • getServerSideProps:每次请求都获取最新数据,数据更新频率实时。但频繁获取可能导致资源浪费,适合数据变化频繁的场景。
  • API路由:数据更新频率取决于API实现逻辑。可根据需求灵活设置缓存策略,控制数据更新频率,如设置短时间缓存以减少重复查询。