vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Next.js路由布局

Next.js路由布局机制详解

作者:困糕

本文主要介绍了Next.js路由布局机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 Next.js 的 App Router 中,布局文件 (layout.js) 是逐层嵌套的,每一层的 layout 可以继承上一层的 layout,并通过 children 来渲染下一层的内容。这种机制允许页面和布局之间的内容自然递归嵌套,形成清晰的层次结构。

个人总结:在访问 /dashboard时,继承父layout,同时children为自身目录下的page.js。

目录结构示例

假设有以下项目目录结构:

app/
  layout.js        // 全局布局
  page.js          // 根页面
  dashboard/
    layout.js      // Dashboard 模块的布局
    page.js        // Dashboard 页面
    settings/
      layout.js    // Dashboard Settings 模块的布局
      page.js      // Dashboard Settings 页面

这里分为三层:

各层代码实现

1. 第一层:全局 layout.js

// app/layout.js
export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <header>Global Header</header>
        <main>{children}</main>
        <footer>Global Footer</footer>
      </body>
    </html>
  );
}

功能: 包裹所有子内容,提供全局的 Header 和 Footer。

2. 第二层:Dashboard 的 layout.js

// app/dashboard/layout.js
export default function DashboardLayout({ children }) {
  return (
    <div>
      <nav>Dashboard Sidebar</nav>
      <div>{children}</div>
    </div>
  );
}

功能: 增加 Dashboard 特有的布局,如侧边导航栏,渲染其子内容。

3. 第三层:Dashboard Settings 的 layout.js

// app/dashboard/settings/layout.js
export default function SettingsLayout({ children }) {
  return (
    <div>
      <h2>Settings Section</h2>
      <div>{children}</div>
    </div>
  );
}

功能: 针对 Settings 子模块,添加独立的布局部分,如模块标题。

4. 页面内容示例

根页面 app/page.js:

export default function HomePage() {
  return <h1>Welcome to the Home Page</h1>;
}

Dashboard 页面 app/dashboard/page.js:

export default function DashboardPage() {
  return <h1>Dashboard Overview</h1>;
}

Dashboard Settings 页面 app/dashboard/settings/page.js:

export default function SettingsPage() {
  return <h1>Settings Content</h1>;
}

渲染流程及继承效果

访问 /dashboard/settings 时,页面内容会逐层嵌套:

最终结果

访问 /dashboard/settings 时的完整 HTML 渲染结构如下:

<html lang="en">
  <body>
    <header>Global Header</header>
    <main>
      <div>
        <nav>Dashboard Sidebar</nav>
        <div>
          <h2>Settings Section</h2>
          <div>
            <h1>Settings Content</h1>
          </div>
        </div>
      </div>
    </main>
    <footer>Global Footer</footer>
  </body>
</html>

总结

到此这篇关于Next.js路由布局机制详解的文章就介绍到这了,更多相关Next.js路由布局内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文