比如,在 app/(commonLayout)/apps/Apps.tsx 这个路径中,(commonLayout) 可能是 Next.js 13+ 的 App Router (基于 app 目录) 的路由分组(Route Group),用于组织文件结构,同时共享布局(layout)。
(commonLayout) 是什么?在 Next.js 13+ 的 app 目录中,括号包裹的文件夹 是路由分组(Route Group),它不会影响 URL 结构,但可以用来组织代码。例如:
app/
├── (commonLayout)/
│ ├── layout.tsx # 共享布局
│ ├── apps/
│ │ ├── Apps.tsx
│ │ ├── page.tsx # 访问 /apps
│ ├── dashboard/
│ │ ├── page.tsx # 访问 /dashboard
├── page.tsx # 访问 /
在这个例子中:
(commonLayout) 只是一个分组目录,不影响路由路径。Apps.tsx 位于 apps/ 目录下,最终的路由仍然是 /apps。这是 Next.js 官方推荐 的组织代码方式,特别适用于:
app/(commonLayout)/layout.tsx 可以为 apps/ 和 dashboard/ 提供公共布局,而不会影响路由路径。app/ 目录下变得杂乱,提升可读性。app/
├── (auth)/
│ ├── login/
│ ├── register/
├── (dashboard)/
│ ├── analytics/
│ ├── reports/
(auth) 组内的文件不会影响 (dashboard) 组。login 仍然是 /login,不会变成 /auth/login。(commonLayout) 的实际用途你可以在 layout.tsx 里定义公共组件,例如:
app/(commonLayout)/layout.tsxexport default function CommonLayout({ children }: { children: React.ReactNode }) {
return (
<div className="common-layout">
<header>我是公共头部</header>
<main>{children}</main>
<footer>我是公共底部</footer>
</div>
);
}
app/(commonLayout)/apps/page.tsxexport default function AppsPage() {
return <h1>Apps 页面</h1>;
}
访问 /apps 时,它会自动套用 CommonLayout。
(commonLayout) 是 Next.js App Router 的路由分组(Route Group)。layout.tsx。