You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中index.js与page.js的区别及组件访问控制问题

关于Next.js路由的两个问题解答

一、Pages Router中避免子组件被公开访问

在Pages Router(使用index.js作为页面入口的路由系统)中,pages目录下的.js/.jsx/.tsx文件默认会被自动映射为可访问的路由。如果你不想让pages/blog/subcomponent.js通过/blog/subcomponent被访问,有两种简单可行的方法:

  • 将组件文件移出pages目录:在项目根目录新建components文件夹,把subcomponent.js放到这个文件夹里,然后在pages/blog/index.js中导入使用即可,Next.js不会将components目录下的文件生成路由。
  • 在pages目录内给组件文件加下划线前缀:比如重命名为pages/blog/_subcomponent.js,Next.js会自动忽略以下划线开头的文件,不会生成对应的路由地址。

二、App Router中非page.js文件的访问权限

在App Router(使用page.js作为页面入口的路由系统)中,只有特定命名的文件会被映射为可访问的路由,其中page.js是页面路由的入口文件,其他非特殊命名的文件(比如你的子组件文件)无论放在app目录的哪个位置,都不会被公开访问。也就是说,用户无法通过URL访问到非page.js(以及非route.js这类API路由文件)的组件或工具文件,你可以放心在app目录下存放子组件,只要不命名为page.js就不会生成可访问的路由。

内容的提问来源于stack exchange,提问作者Sanket hn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:50:00