Next.js - 路由



Next.js 使用基於檔案系統的路由器。每當我們將任何頁面新增到pages目錄時,它都會透過 URL 自動可用。以下是此路由器的規則。

  • 索引路由 - 資料夾中存在的 index.js 檔案對映到目錄的根目錄。例如 -

    • pages/index.js 對映到 '/'。

    • pages/posts/index.js 對映到 '/posts'。

  • 巢狀路由 - pages 目錄中的任何巢狀資料夾結構,因為路由器 URL 會自動生成。例如 -

    • pages/settings/dashboard/about.js 對映到 '/settings/dashboard/about'。

    • pages/posts/first.js 對映到 '/posts/first'。

  • 動態路由 - 我們也可以使用命名引數來匹配 URL。為此使用方括號。例如 -

    • pages/posts/[id].js 對映到 '/posts/:id',我們可以使用像 '/posts/1' 這樣的 URL。

    • pages/[user]/settings.js 對映到 '/posts/:user/settings',我們可以使用像 '/abc/settings' 這樣的 URL。

    • pages/posts/[...all].js 對映到 '/posts/*',我們可以使用任何 URL,例如 '/posts/2020/jun/'。

頁面連結

Next.JS 允許使用 Link React 元件在客戶端連結頁面。它具有以下屬性 -

  • href - pages 目錄中頁面的名稱。例如/posts/first,它指的是 pages/posts 目錄中存在的 first.js。

讓我們建立一個示例來演示它。

在這個例子中,我們將更新 index.js 和 first.js 頁面以進行伺服器命中以獲取資料。

讓我們更新在全域性 CSS 支援章節中使用的 nextjs 專案。

更新 pages 目錄中的 index.js 檔案,如下所示。

import Link from 'next/link'
import Head from 'next/head'

function HomePage(props) {
   return (
      <>
         <Head>
            <title>Welcome to Next.js!</title>
         </Head>
         <div>Welcome to Next.js!</div>
         <Link href="/posts/first">> <a>First Post</a></Link>
         <br/>
         <div>Next stars: {props.stars}</div>
         <img src="/logo.png" alt="TutorialsPoint Logo" />
      </>	    
   )
}

export async function getServerSideProps(context) {
   const res = await fetch('https://api.github.com/repos/vercel/next.js')
   const json = await res.json()
   return {
      props: { stars: json.stargazers_count }
   }
}

export default HomePage

啟動 Next.js 伺服器

執行以下命令以啟動伺服器 -。

npm run dev
> nextjs@1.0.0 dev \Node\nextjs
> next

ready - started server on https://:3000
event - compiled successfully
event - build page: /
wait  - compiling...
event - compiled successfully
event - build page: /next/dist/pages/_error
wait  - compiling...
event - compiled successfully

驗證輸出

在瀏覽器中開啟 localhost:3000,您將看到以下輸出。

Home page with Data

點選第一個帖子連結。

First page with Data
廣告