欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Next.js路由布局機(jī)制詳解

 更新時(shí)間:2025年01月15日 09:52:33   作者:困糕  
本文主要介紹了Next.js路由布局機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在 Next.js 的 App Router 中,布局文件 (layout.js) 是逐層嵌套的,每一層的 layout 可以繼承上一層的 layout,并通過(guò) children 來(lái)渲染下一層的內(nèi)容。這種機(jī)制允許頁(yè)面和布局之間的內(nèi)容自然遞歸嵌套,形成清晰的層次結(jié)構(gòu)。

個(gè)人總結(jié):在訪問(wèn) /dashboard時(shí),繼承父layout,同時(shí)children為自身目錄下的page.js。

目錄結(jié)構(gòu)示例

假設(shè)有以下項(xiàng)目目錄結(jié)構(gòu):

app/
  layout.js        // 全局布局
  page.js          // 根頁(yè)面
  dashboard/
    layout.js      // Dashboard 模塊的布局
    page.js        // Dashboard 頁(yè)面
    settings/
      layout.js    // Dashboard Settings 模塊的布局
      page.js      // Dashboard Settings 頁(yè)面

這里分為三層:

  • 第一層是全局布局和頁(yè)面(layout.js + page.js)。
  • 第二層是 Dashboard 模塊(dashboard/layout.js + dashboard/page.js)。
  • 第三層是 Dashboard Settings 子模塊(dashboard/settings/layout.js + dashboard/settings/page.js)。

各層代碼實(shí)現(xiàn)

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>
  );
}

功能: 包裹所有子內(nèi)容,提供全局的 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 特有的布局,如側(cè)邊導(dǎo)航欄,渲染其子內(nèi)容。

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>
  );
}

功能: 針對(duì) Settings 子模塊,添加獨(dú)立的布局部分,如模塊標(biāo)題。

4. 頁(yè)面內(nèi)容示例

根頁(yè)面 app/page.js:

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

Dashboard 頁(yè)面 app/dashboard/page.js:

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

Dashboard Settings 頁(yè)面 app/dashboard/settings/page.js:

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

渲染流程及繼承效果

訪問(wèn) /dashboard/settings 時(shí),頁(yè)面內(nèi)容會(huì)逐層嵌套:

  • 第一層 RootLayout 渲染:
    • 提供全局的 Header 和 Footer。
    • 通過(guò) {children} 包裹下一層(Dashboard layout.js)。
  • 第二層 DashboardLayout 渲染:
    • 在全局布局中渲染 Dashboard 的側(cè)邊欄。
    • 使用 {children} 包裹下一層(Settings layout.js)。
  • 第三層 SettingsLayout 渲染:
    • 在 Dashboard 布局中增加 Settings 的獨(dú)特標(biāo)題。
    • 使用 {children} 渲染最終的頁(yè)面內(nèi)容。
  • 頁(yè)面內(nèi)容 SettingsPage 渲染:
    • 顯示 Settings 頁(yè)面的核心內(nèi)容。

最終結(jié)果

訪問(wèn) /dashboard/settings 時(shí)的完整 HTML 渲染結(jié)構(gòu)如下:

<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>

總結(jié)

  • 層層繼承: 每層的 layout.js 會(huì)通過(guò) children 自動(dòng)接收并渲染下一層的內(nèi)容。
  • 靈活設(shè)計(jì): 每一層都可以添加自己獨(dú)特的 UI 元素,同時(shí)繼承上一層的布局。
  • 自動(dòng)化管理: Next.js 的 App Router 自動(dòng)處理布局嵌套邏輯,無(wú)需手動(dòng)傳遞布局內(nèi)容。

到此這篇關(guān)于Next.js路由布局機(jī)制詳解的文章就介紹到這了,更多相關(guān)Next.js路由布局內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Vue3中createWebHistory和createWebHashHistory的區(qū)別詳析

    Vue3中createWebHistory和createWebHashHistory的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Vue3中createWebHistory和createWebHashHistory區(qū)別的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Vue中Axios中取消請(qǐng)求及阻止重復(fù)請(qǐng)求的方法

    Vue中Axios中取消請(qǐng)求及阻止重復(fù)請(qǐng)求的方法

    為了防止用戶在網(wǎng)絡(luò)不好或者其他情況下短時(shí)間內(nèi)重復(fù)進(jìn)行接口請(qǐng)求,重復(fù)發(fā)送多次請(qǐng)求,本文主要介紹了Vue中Axios中取消請(qǐng)求及阻止重復(fù)請(qǐng)求的方法,感興趣的可以了解一下
    2022-02-02
  • Vue源碼cached解析

    Vue源碼cached解析

    最近在寫(xiě)閉包的應(yīng)用的時(shí)候,出現(xiàn)了一個(gè)cached函數(shù),來(lái)源于Vue源碼,利用了閉包變量不會(huì)被回收的特點(diǎn),可以緩存變量,cached本質(zhì)上是一個(gè)高階函數(shù),它接受一個(gè)函數(shù)的參數(shù),同時(shí)返回一個(gè)函數(shù)
    2022-08-08
  • uni-app獲取當(dāng)前環(huán)境信息的方法

    uni-app獲取當(dāng)前環(huán)境信息的方法

    uni-aap提供了異步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2個(gè)API獲取系統(tǒng)信息,這篇文章主要介紹了uni-app獲取當(dāng)前環(huán)境信息的相關(guān)知識(shí),需要的朋友可以參考下
    2022-11-11
  • 利用Vue實(shí)現(xiàn)卡牌翻轉(zhuǎn)的特效

    利用Vue實(shí)現(xiàn)卡牌翻轉(zhuǎn)的特效

    這篇文章主要介紹了如何利用Vue實(shí)現(xiàn)一個(gè)春節(jié)抽???yè)面,采用了卡牌翻轉(zhuǎn)的形式。文中的實(shí)現(xiàn)方法講解詳細(xì),快跟隨小編一起學(xué)習(xí)一下吧
    2022-02-02
  • Vue3?源碼解讀之?Teleport?組件使用示例

    Vue3?源碼解讀之?Teleport?組件使用示例

    這篇文章主要為大家介紹了Vue3?源碼解讀之?Teleport?組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼

    vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼

    這篇文章主要介紹了vue+express 構(gòu)建后臺(tái)管理系統(tǒng)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 解決vue3項(xiàng)目中el-menu不兼容SSR問(wèn)題

    解決vue3項(xiàng)目中el-menu不兼容SSR問(wèn)題

    這篇文章主要介紹了解決vue3項(xiàng)目中el-menu不兼容SSR問(wèn)題,需要的朋友可以參考下
    2023-12-12
  • Antd-vue Table組件添加Click事件,實(shí)現(xiàn)點(diǎn)擊某行數(shù)據(jù)教程

    Antd-vue Table組件添加Click事件,實(shí)現(xiàn)點(diǎn)擊某行數(shù)據(jù)教程

    這篇文章主要介紹了Antd-vue Table組件添加Click事件,實(shí)現(xiàn)點(diǎn)擊某行數(shù)據(jù)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue elementui form表單驗(yàn)證的實(shí)現(xiàn)

    vue elementui form表單驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了vue elementui form表單驗(yàn)證的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論