去年年底,我接了一个海外客户的项目,要求使用 Next.js 13 的 App Router 开发一个数据分析平台。说实话,当时虽然对 Next.js 已经很熟悉了,但对 App Router 这个相对较新的特性还是有些忐忑。现在项目已经成功上线,我想和大家分享一下在这个过程中的实战经验和踩坑记录。
为什么选择 App Router?
最开始和客户沟通技术选型时,我其实在犹豫要不要用 App Router。毕竟 Pages Router 已经用了很多年,相当稳定。但仔细评估后,还是决定采用 App Router,主要考虑了这几个方面:
首先,App Router 采用的 React Server Components 架构能带来更好的性能。在我们的数据分析平台中,有大量的数据展示组件,如果全部在客户端渲染,不仅初始加载慢,而且会占用大量客户端资源。使用 Server Components,我们可以在服务器端完成大部分渲染工作,只将必要的交互部分放在客户端。
其次,App Router 的并行路由和拦截路由特性,完美解决了我们的一些交互需求。比如数据分析平台需要在查看数据列表时,点击某条数据在右侧弹出详情面板,这种场景用拦截路由实现非常优雅。
实战经验分享
1. Server Components 的正确使用姿势
在实际开发中,我发现很多开发者对 Server Components 的使用还存在误解。最常见的问题是不清楚什么时候该用 Server Components,什么时候该用 Client Components。
我总结了一个简单的判断标准:如果组件需要处理用户交互(比如 onClick)、使用浏览器 API(比如 window)或者使用 React hooks,那就必须用 Client Components;其他情况,优先使用 Server Components。
举个例子,在我们的数据图表组件中:

最低0.47元/天 解锁文章
1558

被折叠的 条评论
为什么被折叠?



