Next.js - การกำหนดเส้นทาง

Next.js ใช้เราเตอร์ที่ใช้ระบบไฟล์ เมื่อใดก็ตามที่เราเพิ่มหน้าใด ๆpagesไดเรกทอรีจะพร้อมใช้งานโดยอัตโนมัติผ่าน url ต่อไปนี้เป็นกฎของเราเตอร์นี้

  • Index Routes- ไฟล์ index.js ที่มีอยู่ในโฟลเดอร์แมปไปยังรูทของไดเร็กทอรี ตัวอย่างเช่น -

    • pages / index.js แมปไปที่ "/"

    • pages / posts / index.js แมปไปที่ '/ posts'

  • Nested Routes- โครงสร้างโฟลเดอร์ที่ซ้อนกันในไดเร็กทอรีเพจเนื่องจาก URL ของเราเตอร์โดยอัตโนมัติ ตัวอย่างเช่น -

    • pages / settings / dashboard / about.js แมปไปที่ '/ settings / dashboard / about'

    • หน้า / โพสต์ / first.js แมปไปที่ '/ posts / first'

  • Dynamic Routes- เราสามารถใช้พารามิเตอร์ที่มีชื่อเพื่อจับคู่ url ใช้วงเล็บเหมือนกัน ตัวอย่างเช่น -

    • pages / posts / [id] .js แมปไปยัง '/ posts /: id' ซึ่งเราสามารถใช้ URL เช่น '/ posts / 1'

    • pages / [ผู้ใช้] /settings.js แมปกับ '/ posts /: user / settings' ซึ่งเราสามารถใช้ URL เช่น '/ abc / settings'

    • หน้า / โพสต์ / [... ทั้งหมด] .js แมปกับ '/ posts / *' ซึ่งเราสามารถใช้ URL ใดก็ได้เช่น '/ posts / 2020 / jun /'

การเชื่อมโยงเพจ

Next.JS อนุญาตให้เชื่อมโยงเพจในฝั่งไคลเอ็นต์โดยใช้คอมโพเนนต์ Link react มีคุณสมบัติดังต่อไปนี้ -

  • href- ชื่อของเพจในไดเร็กทอรีเพจ ตัวอย่างเช่น/posts/first ซึ่งอ้างถึง first.js ที่อยู่ในไดเร็กทอรีเพจ / โพสต์

มาสร้างตัวอย่างเพื่อสาธิตสิ่งเดียวกัน

ในตัวอย่างนี้เราจะอัปเดตหน้า index.js และ first.js เพื่อให้เซิร์ฟเวอร์เข้าชมเพื่อรับข้อมูล

มาอัปเดตโปรเจ็กต์ nextjs ที่ใช้ในบทGlobal CSS Support

อัพเดตไฟล์ 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
> [email protected] dev \Node\nextjs
> next

ready - started server on http://localhost: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 ในเบราว์เซอร์และคุณจะเห็นผลลัพธ์ต่อไปนี้

คลิกที่ลิงค์โพสต์แรก