NextJS Filesystem Routing两种实现方式在大型项目中哪个更优?
结论
从可扩展性、用户可读性以及大型开源项目适配三个维度综合判断,采用pages/hello/index.js的方法B是更优的选择,具体分析如下:
可扩展性角度
- 若后续需要为
/hello路由扩展子路由(比如/hello/detail、/hello/[userId]等),只需在hello文件夹下新增对应路由文件即可,不需要改动现有文件的位置和引用关系。 - 如果选用方法A,后续加子路由时必须先新建
hello文件夹,再把原有的hello.js移入后重命名为index.js,额外增加了迁移成本,还可能引发其他文件引用该页面路径出错的问题。
用户可读性角度
- 方法B可以把和
/hello路由相关的所有资源(私有组件、样式文件、工具函数等)都收拢到同一个hello目录下,和其他页面的资源完全隔离,查找对应代码时无需在大量平级页面文件中翻找,定位效率更高。 - 大型项目页面数量较多时,全平级的
.js页面文件会非常混乱,采用文件夹按路由模块分类的方式,能让项目结构更清晰,新成员上手的理解成本也更低。
大型开源项目适配角度
- 目前绝大多数主流的NextJS大型开源项目、官方示例都默认采用「文件夹+index.js」的路由写法,符合行业通用的约定俗成规范,其他开发者接手项目时的适配成本极低。
- 这种结构逻辑和NextJS后续主推的App Router目录规则完全对齐,后续如果需要从Pages Router迁移到App Router,改造成本远低于平级页面文件的方案。
如果是极小的 Demo 项目,且完全确定该路由不会有子路由、也不需要关联私有资源,用方法A也完全可行,但只要项目有后续迭代的可能性,都优先推荐选择方法B。
内容的提问来源于stack exchange,提问作者RayhanADev
相关产品推荐
相关产品推荐

