nextjs的 route handler 到底有什么用?

作者站长头像
站长
· 阅读数 13

route handler 定义在 route.ts/js 文件里, 看上去和 page 的定义非常像,无非就是 page 返回的是页面内容,route.ts 更多的像是一个restful风格的返回值,尽管他也能通过 reponse 直接返回 html 标签,但是相信应该不会这样做。所以我的疑问是,这个到底是干嘛用的?服务器组件里我能直接 fetch 更后端的接口获取数据,客户端也可以吧?我在介绍 fetch data的文档里,看到可以在客户端组件里通过route handler 请求数据,那么请求的链路等于是客户端组件,通过/api/xxx 请求 route.ts, 然后 route.ts 里也许去访问数据库或者请求后端接口再去调用一下,那么为什么不直接在客户端组件里请求后端接口。经过这个中转不是多次一举吗?除非后端逻辑就在route.ts新手刚接触,有点疑问,谢谢指点

回复
1个回答
avatar
test
2024-06-20

Next.js 现在早就已经不是原来的单纯的 SSG/SSR 框架了,新版本里越来越多的特性是在往全栈的方向发展 —— 这也是它背后的 Vercel 公司所期望的,人家卖的就是基于此的云服务,恨不得你把所有业务全都在 Next.js 里写,这样它才好卖产品。

所以不要想太复杂,这玩意儿实质就是在服务端运行的。如果你只需要 SSG/SSR 的部分,那确实它没啥用,你理解的“多次一举”是对的。

P.S. 之前的版本里已经有类似的特性了,即 API Routes。不过用法上有很多限制。Route Handlers 相当于超进化版的 API Routes。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容