แสดงบทความที่มีป้ายกำกับ Routing แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Routing แสดงบทความทั้งหมด

วันอังคารที่ 18 กุมภาพันธ์ พ.ศ. 2568

การใช้งาน pages/ และการสร้าง Routing อัตโนมัติใน Next.js

ถ้าคุณเป็นสายเว็บที่อยากเขียนเว็บเร็ว ๆ ไม่ต้องมานั่งเซ็ต Routing เองให้ปวดหัว Next.js คือเพื่อนที่คุณต้องการ! หนึ่งในฟีเจอร์เด็ดของมันคือการใช้โฟลเดอร์ pages/ เพื่อสร้าง Routing แบบอัตโนมัติ ที่จะทำให้ชีวิตของคุณง่ายขึ้น ไม่ต้องมานั่งเขียนไฟล์ routes.js หรือกำหนด path เองแบบสมัยก่อน

บทความนี้จะพาคุณไปทำความเข้าใจว่า โฟลเดอร์ pages/ ใน Next.js ทำงานยังไง, จะใช้มันให้เกิดประโยชน์สูงสุดได้ยังไง, และ ถ้าคุณอยากใช้ Dynamic Routing หรือ API Routes ต้องทำยังไง มาเริ่มกันเลย!

 

พื้นฐานของโฟลเดอร์ pages/

ใน Next.js โฟลเดอร์ pages/ เป็นศูนย์กลางของระบบ Routing ทั้งหมด มันทำงานง่าย ๆ คือ "มีไฟล์อะไรใน pages/ ก็จะมี URL ตามไฟล์นั้น" เช่น

  • pages/index.js → /
  • pages/about.js → /about
  • pages/contact.js → /contact

แค่สร้างไฟล์ .js หรือ .tsx ในโฟลเดอร์นี้ Next.js ก็จะสร้างเส้นทางให้โดยอัตโนมัติ ไม่ต้องเขียนโค้ดอะไรเพิ่ม!

ตัวอย่างไฟล์ pages/about.js 

export default function AboutPage() {
  return <h1>นี่คือหน้า About</h1>;
}

พอสร้างไฟล์นี้เสร็จ คุณสามารถเข้าเว็บที่ /about ได้เลยโดยไม่ต้องตั้งค่าอะไรเพิ่ม!


สร้าง Routing อัตโนมัติแบบง่าย ๆ

การสร้างหน้าใหม่

ถ้าอยากเพิ่มหน้าใหม่ ก็แค่สร้างไฟล์ใหม่ใน pages/ เท่านั้น เช่น

mkdir pages/blog
touch pages/blog/index.js

จากนั้นเพิ่มโค้ดง่าย ๆ

export default function BlogPage() {
  return <h1>ยินดีต้อนรับสู่หน้า Blog!</h1>;
}

แค่นี้คุณก็สามารถเข้าหน้า /blog ได้แล้ว ไม่ต้องไปแก้ไขอะไรเพิ่มเติมเลย 

 

Dynamic Routing: เส้นทางที่ยืดหยุ่นกว่านี้มีอีกไหม? มี!

สมมติว่าคุณอยากสร้างหน้า Blog ที่สามารถรองรับโพสต์หลาย ๆ อัน เช่น /blog/post-1, /blog/post-2 โดยไม่ต้องสร้างไฟล์ใหม่ให้แต่ละโพสต์เอง เราสามารถใช้ Dynamic Routing ได้โดยใช้เครื่องหมาย [] ในชื่อไฟล์

ตัวอย่าง:
สร้างไฟล์ pages/blog/[slug].js

import { useRouter } from 'next/router';

export default function BlogPostPage() {
  const router = useRouter();
  const { slug } = router.query;

  return <h1>กำลังอ่านบทความ: {slug}</h1>;
}

เมื่อมีคนเข้าไปที่ /blog/my-first-post หรือ /blog/hello-world ค่า {slug} จะเปลี่ยนไปตาม URL อัตโนมัติ

 

API Routes: ใช้ pages/api/ เพื่อสร้าง API ง่าย ๆ

Next.js ไม่ได้ใช้ pages/ แค่สำหรับสร้างหน้าเว็บเท่านั้น มันยังสามารถใช้สำหรับสร้าง API ได้อีกด้วย!

ถ้าคุณสร้างไฟล์ pages/api/hello.js และเขียนโค้ดแบบนี้:

export default function handler(req, res) {
  res.status(200).json({ message: "Hello from API!" });
}

ตอนนี้คุณสามารถเรียก API นี้ได้ที่ /api/hello โดยไม่ต้องตั้งค่าเพิ่ม 


Middleware และการ Redirect Routing

ถ้าคุณอยากควบคุม Routing แบบละเอียดขึ้น Next.js ก็มีเครื่องมือให้ เช่น Middleware และ Redirects

Middleware ช่วยให้คุณสามารถจัดการกับ Request ก่อนที่มันจะไปถึงหน้าเว็บ เช่น ตรวจสอบสิทธิ์การเข้าถึง

ตัวอย่าง Middleware

สร้างไฟล์ middleware.js

import { NextResponse } from "next/server";

export function middleware(req) {
  const url = req.nextUrl.clone();
  if (!req.cookies.auth) {
    url.pathname = "/login";
    return NextResponse.redirect(url);
  }
  return NextResponse.next();
}

จากนั้นกำหนดให้ Middleware ทำงานใน next.config.js

module.exports = {
  async redirects() {
    return [
      {
        source: "/old-page",
        destination: "/new-page",
        permanent: true,
      },
    ];
  },
};
 

ข้อดีของระบบ Routing อัตโนมัติใน Next.js

  • ลดโค้ดที่ต้องเขียน – ไม่ต้องมานั่งเซ็ตเส้นทางเอง
  • SEO-Friendly – เส้นทางแบบ Static และ Dynamic ทำงานได้ดี
  • มี API Routes ในตัว – ไม่ต้องแยก Backend ออกมาเอง
  • รองรับ Dynamic Routing – เหมาะกับเว็บที่มีเนื้อหาหลายหน้า
  • สรุป: Next.js ทำให้ Routing ง่ายขึ้นเยอะ!


ระบบ Routing ใน Next.js ออกแบบมาให้ใช้ง่ายสุด ๆ แค่สร้างไฟล์ในโฟลเดอร์ pages/ ก็สามารถเข้าถึง URL นั้นได้เลย ไม่ต้องตั้งค่าอะไรเพิ่มเติม

ถ้าคุณต้องการ Routing ที่ซับซ้อนขึ้น เช่น Dynamic Routes หรือ API Routes Next.js ก็รองรับทั้งหมดโดยไม่ต้องพึ่ง Third-party library เลย 

พร้อมจะใช้ Next.js ในโปรเจกต์ของคุณหรือยัง? ถ้าพร้อมแล้ว ลองเล่นกับ pages/ ดูเลย แล้วคุณจะติดใจ! 

วันจันทร์ที่ 17 กุมภาพันธ์ พ.ศ. 2568

โครงสร้างไฟล์พื้นฐานของ Next.js

ถ้าพูดถึง Next.js หลายคนอาจจะคิดว่ามันเป็น React Framework ที่ใช้ทำ SSR (Server-side Rendering) หรือ SSG (Static Site Generation) ซึ่งก็ถูกแล้ว! แต่ก่อนจะเริ่มใช้งาน Next.js เราต้องมาทำความเข้าใจกับโครงสร้างไฟล์ของมันก่อน เพราะถ้ารู้ว่ามีไฟล์อะไร อยู่ตรงไหน ใช้ทำอะไร ชีวิตจะง่ายขึ้นเยอะ

โครงสร้างไฟล์หลักใน Next.js  

เมื่อเราสร้างโปรเจกต์ Next.js ใหม่ ๆ ด้วยคำสั่ง  

npx create-next-app@latest my-app

หรือ

yarn create next-app my-app
 

เราจะได้โฟลเดอร์ที่มีโครงสร้างพื้นฐานหน้าตาประมาณนี้ 

my-app/
│-- .next/
│-- node_modules/
│-- public/
│-- src/ (บางโปรเจกต์อาจไม่มี)
│-- pages/
│-- components/
│-- styles/
│-- package.json
│-- next.config.js
│-- .gitignore
│-- README.md


1. โฟลเดอร์ .next/

อันนี้เป็นโฟลเดอร์ที่ Next.js ใช้เก็บไฟล์ที่คอมไพล์แล้ว ไม่ต้องไปยุ่งกับมัน เราแค่รู้ว่ามันเป็นไฟล์ที่ Next.js ใช้ตอนรันโปรเจกต์พอ

 

2. โฟลเดอร์ node_modules/

อันนี้คือที่อยู่ของ dependency ต่าง ๆ ที่ถูกติดตั้งผ่าน npm หรือ yarn อย่าไปแก้ไขอะไรในนี้ เพราะมันสร้างขึ้นโดยอัตโนมัติ 


3. โฟลเดอร์ public/

โฟลเดอร์นี้เอาไว้เก็บไฟล์ static เช่น รูปภาพ ไอคอน หรือไฟล์อื่น ๆ ที่ต้องการเข้าถึงโดยตรงผ่าน URL เช่น ถ้ามีไฟล์ logo.png อยู่ใน public/ เราจะเข้าถึงมันได้ที่

http://localhost:3000/logo.png 

ไม่ต้อง import รูปจาก public ในโค้ด แค่ใช้ path ตรง ๆ ได้เลย

 

4. โฟลเดอร์ pages/

นี่คือหัวใจของ Next.js ทุกไฟล์ในโฟลเดอร์นี้จะกลายเป็นหน้าเว็บอัตโนมัติ เช่น 

pages/
│-- index.js  (แสดงที่ /)
│-- about.js  (แสดงที่ /about)
│-- contact.js (แสดงที่ /contact)
│-- blog/
│   ├── index.js   (แสดงที่ /blog)
│   ├── [id].js    (Dynamic Route เช่น /blog/1, /blog/2)
│   ├── new.js     (แสดงที่ /blog/new)

  • Static Route → about.js จะกลายเป็น /about
  • Dynamic Route → [id].js จะกลายเป็น /blog/:id
  • Nested Route → ใช้โฟลเดอร์ย่อย เช่น /blog/new มาจาก pages/blog/new.js

ถ้าใน pages/ มี \_app.js และ \_document.js

  • _app.js → ใช้กำหนด Layout หลักของเว็บ
  • _document.js → ใช้แก้ไขโครงสร้าง HTML พื้นฐานของ Next.js

 

5. โฟลเดอร์ components/

Next.js ไม่มีบังคับให้ต้องมีโฟลเดอร์นี้ แต่ส่วนใหญ่เราจะสร้างขึ้นมาเพื่อแยก UI ออกเป็น Component เช่น

  • Navbar.js
  • Footer.js
  • Button.js

จากนั้นก็ import ไปใช้ใน pages/ ได้เลย 

 

6. โฟลเดอร์ styles/

เป็นที่เก็บไฟล์ CSS หรือ SCSS เช่น

  • globals.css → ใช้กำหนดสไตล์ทั่วทั้งเว็บ
  • Home.module.css → เป็น CSS Module ใช้เฉพาะ Component นั้น ๆ

Next.js รองรับ CSS หลายรูปแบบ เช่น

  • CSS ปกติ
  • SCSS/SASS
  • Tailwind CSS (ต้องติดตั้งเพิ่ม)
  • CSS-in-JS (เช่น styled-components)

 

7. ไฟล์ package.json

ไฟล์นี้สำคัญมาก! มันบอกว่าโปรเจกต์นี้ใช้ package อะไรบ้าง รวมถึงสคริปต์ที่ใช้รันคำสั่ง เช่น 

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  }
}

  • next dev → รันโหมดพัฒนา
  • next build → สร้างไฟล์สำหรับ production
  • next start → รันเซิร์ฟเวอร์ production

 

8. ไฟล์ next.config.js

ไฟล์นี้ใช้ตั้งค่าต่าง ๆ ของ Next.js เช่น

  • ปรับแต่ง Webpack
  • ตั้งค่า Redirect
  • กำหนด Environment Variables

ตัวอย่าง 

module.exports = {
  images: {
    domains: ['example.com'],
  },
  reactStrictMode: true,
}


9. ไฟล์ .gitignore

ใช้กำหนดว่าไฟล์ไหนบ้างที่ไม่ต้องการให้ Git ติดตาม เช่น

node_modules/
.next/
.env 

 

10. ไฟล์ README.md

ไฟล์นี้ใช้สำหรับให้ข้อมูลเกี่ยวกับโปรเจกต์ เช่น วิธีติดตั้ง วิธีใช้งาน ฯลฯ 


Next.js เป็น Framework ที่จัดโครงสร้างไฟล์ให้เป็นระบบระเบียบ ถ้าเราเข้าใจว่าแต่ละโฟลเดอร์และไฟล์ทำหน้าที่อะไร เราจะพัฒนาเว็บได้เร็วขึ้น และเขียนโค้ดได้สะอาดขึ้น

วันอาทิตย์ที่ 16 กุมภาพันธ์ พ.ศ. 2568

ติดตั้ง Next.js และเริ่มโปรเจกต์แรกแบบง่าย ๆ

    Next.js คือเฟรมเวิร์กที่พัฒนาขึ้นจาก React.js ซึ่งได้รับความนิยมอย่างมากในช่วงหลัง เพราะมันช่วยให้การพัฒนาเว็บแอปพลิเคชันที่ต้องการฟีเจอร์ขั้นสูง เช่น การเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR), Static Site Generation (SSG), และการจัดการ SEO ทำได้ง่ายขึ้น แต่หากคุณเพิ่งเริ่มต้นกับ Next.js อาจจะรู้สึกงง ๆ ว่าต้องทำอะไรบ้างเพื่อเริ่มต้นโปรเจกต์แรกของคุณ

    วันนี้เราจะมาพูดถึงขั้นตอนการติดตั้ง Next.js และเริ่มโปรเจกต์แรกแบบไม่ยาก เพื่อให้คุณสามารถเริ่มใช้งานได้ทันที! มาดูกันว่าเราต้องทำอะไรบ้าง

ขั้นตอนที่ 1: ติดตั้ง Node.js และ npm

    ก่อนที่เราจะเริ่มโปรเจกต์ใน Next.js ได้ เราต้องติดตั้ง Node.js และ npm (Node Package Manager) ให้เรียบร้อยก่อน ถ้าคุณยังไม่ได้ติดตั้ง Node.js หรือไม่แน่ใจว่ามีแล้วหรือยัง สามารถตรวจสอบได้โดยการเปิด Terminal หรือ Command Prompt แล้วพิมพ์คำสั่งเหล่านี้:

node -v

และ

npm -v

หากมีการแสดงเวอร์ชันออกมาแสดงว่าคุณได้ติดตั้ง Node.js และ npm แล้ว แต่หากยังไม่มีก็สามารถดาวน์โหลด Node.js ได้ที่ https://nodejs.org เลือกเวอร์ชันที่แนะนำ (LTS) และติดตั้งตามขั้นตอน

เมื่อเสร็จแล้วลองตรวจสอบอีกครั้งว่ามีการติดตั้งสำเร็จแล้วหรือยัง

ขั้นตอนที่ 2: สร้างโปรเจกต์ใหม่ด้วย Next.js

เมื่อคุณติดตั้ง Node.js และ npm เรียบร้อยแล้ว ขั้นตอนต่อไปคือการสร้างโปรเจกต์ใหม่ด้วย Next.js ซึ่งเราสามารถใช้คำสั่ง create-next-app ในการสร้างโปรเจกต์ได้อย่างง่ายดาย

  1.     เปิด Terminal หรือ Command Prompt
  2.     ใช้คำสั่งนี้เพื่อสร้างโปรเจกต์ใหม่

npx create-next-app@latest ชื่อโปรเจกต์ของคุณ

ตัวอย่างเช่น หากคุณอยากตั้งชื่อโปรเจกต์ว่า my-first-next-project ก็พิมพ์คำสั่งนี้:

npx create-next-app@latest my-first-next-project

คำสั่งนี้จะดาวน์โหลดเทมเพลตพื้นฐานของ Next.js และติดตั้ง dependencies ที่จำเป็นทั้งหมดให้คุณ โดยไม่ต้องตั้งค่ามือเอง

ขั้นตอนที่ 3: เข้าไปในโฟลเดอร์โปรเจกต์

เมื่อการสร้างโปรเจกต์เสร็จสมบูรณ์ ให้เข้าไปในโฟลเดอร์ของโปรเจกต์ที่เพิ่งสร้างขึ้น โดยใช้คำสั่ง:

cd my-first-next-project

ขั้นตอนที่ 4: รันโปรเจกต์แรก

หลังจากที่คุณเข้าไปในโฟลเดอร์โปรเจกต์แล้ว คุณสามารถเริ่มรันโปรเจกต์ของคุณได้ทันที โดยใช้คำสั่งนี้:

npm run dev

คำสั่งนี้จะเริ่มเซิร์ฟเวอร์ในโหมดพัฒนา (development mode) และโปรเจกต์ของคุณจะรันที่ http://localhost:3000 ถ้าทุกอย่างทำงานถูกต้อง คุณสามารถเปิดเบราว์เซอร์แล้วพิมพ์ URL นี้เพื่อดูหน้าเว็บแรกของคุณ

ขั้นตอนที่ 5: ทำความเข้าใจโครงสร้างโปรเจกต์

เมื่อคุณสร้างโปรเจกต์ Next.js ใหม่แล้ว คุณจะเห็นโครงสร้างของโฟลเดอร์ที่ค่อนข้างง่ายและเข้าใจได้ไม่ยาก ลองมาดูกันว่าในโปรเจกต์ที่สร้างขึ้นมาจะมีโฟลเดอร์และไฟล์อะไรบ้าง:

  • pages/: โฟลเดอร์นี้จะเก็บไฟล์ที่เป็นหน้าเว็บ (pages) ของโปรเจกต์ เช่น index.js คือหน้าแรกของเว็บไซต์
  • public/: โฟลเดอร์นี้จะเก็บไฟล์ที่เป็นสาธารณะ เช่น รูปภาพ ไฟล์ .txt หรือไฟล์อื่น ๆ ที่สามารถเข้าถึงได้จาก URL
  • styles/: โฟลเดอร์นี้จะเก็บไฟล์ CSS สำหรับตกแต่งหน้าเว็บ
  • node_modules/: โฟลเดอร์ที่ npm สร้างขึ้นเพื่อเก็บ dependencies ที่จำเป็นสำหรับโปรเจกต์
  • package.json: ไฟล์นี้จะเก็บข้อมูลเกี่ยวกับโปรเจกต์ เช่น dependencies, scripts, และ metadata อื่น ๆ

ในโฟลเดอร์ pages คุณจะเห็นไฟล์ index.js ซึ่งเป็นหน้าแรกของเว็บไซต์ คุณสามารถแก้ไขไฟล์นี้เพื่อเปลี่ยนแปลงเนื้อหาของหน้าแรกได้ทันที

ขั้นตอนที่ 6: แก้ไขหน้าแรกของคุณ

ลองเปิดไฟล์ pages/index.js และเปลี่ยนเนื้อหาภายในไฟล์นี้สักหน่อยเพื่อทดสอบการทำงานของ Next.js ตัวอย่างเช่น:

function HomePage() {
  return (
    <div>
      <h1>ยินดีต้อนรับสู่โปรเจกต์แรกของคุณใน Next.js!</h1>
      <p>นี่คือหน้าแรกของเว็บไซต์ที่คุณสร้างขึ้นมา</p>
    </div>
  );
}

export default HomePage;

จากนั้นบันทึกไฟล์และไปที่เบราว์เซอร์เพื่อรีเฟรชหน้า http://localhost:3000 คุณจะเห็นการเปลี่ยนแปลงที่คุณทำทันที

ขั้นตอนที่ 7: การเพิ่มหน้าใหม่

หนึ่งในคุณสมบัติที่ยอดเยี่ยมของ Next.js คือระบบ Routing ที่อัตโนมัติ เพียงแค่คุณสร้างไฟล์ใหม่ในโฟลเดอร์ pages หน้าใหม่ก็จะถูกสร้างขึ้นโดยอัตโนมัติ ลองสร้างไฟล์ใหม่ชื่อ about.js ในโฟลเดอร์ pages และใส่โค้ดนี้:

function AboutPage() {
  return (
    <div>
      <h1>เกี่ยวกับเรา</h1>
      <p>นี่คือหน้าที่เกี่ยวกับเว็บไซต์ของเรา</p>
    </div>
  );
}

export default AboutPage;

ตอนนี้คุณสามารถไปที่ http://localhost:3000/about เพื่อดูหน้า "เกี่ยวกับเรา" ที่คุณเพิ่งสร้างขึ้นได้เลย

ขั้นตอนที่ 8: การใช้งาน Link ใน Next.js

Next.js มีคอมโพเนนต์ที่เรียกว่า Link ซึ่งช่วยให้การทำ routing ภายในเว็บไซต์ง่ายขึ้นโดยไม่ต้องโหลดหน้าใหม่ทั้งหมด ลองใช้ Link เพื่อเพิ่มลิงก์ไปยังหน้า "เกี่ยวกับเรา" ที่คุณสร้างขึ้น:

เปิดไฟล์ index.js แล้วเพิ่มโค้ดนี้:

import Link from 'next/link';

function HomePage() {
  return (
    <div>
      <h1>ยินดีต้อนรับสู่โปรเจกต์แรกของคุณใน Next.js!</h1>
      <p><Link href="/about">ไปยังหน้าที่เกี่ยวกับเรา</Link></p>
    </div>
  );
}

export default HomePage;

ตอนนี้เมื่อคุณไปที่หน้าแรก คุณจะเห็นลิงก์ที่สามารถคลิกเพื่อไปยังหน้า "เกี่ยวกับเรา" ได้ทันที

สรุป

การเริ่มต้นกับ Next.js นั้นไม่ยากเลย! เราเพียงแค่ต้องติดตั้ง Node.js, สร้างโปรเจกต์ใหม่ด้วยคำสั่ง create-next-app, รันโปรเจกต์, แล้วเริ่มแก้ไขหน้าเว็บและเพิ่มหน้าใหม่ตามต้องการ Next.js ทำให้การพัฒนาเว็บแอปพลิเคชันง่ายขึ้นและมีเครื่องมือที่ครบครันสำหรับการทำงานในระดับสูง

ลองสร้างโปรเจกต์และทดสอบฟีเจอร์ต่าง ๆ ที่ Next.js มีให้ดูนะครับ รับรองว่าคุณจะสนุกกับการสร้างเว็บแอปพลิเคชันใน Next.js มากขึ้น!

วันเสาร์ที่ 15 กุมภาพันธ์ พ.ศ. 2568

ข้อแตกต่างระหว่าง Next.js กับ React.js

    ในวงการพัฒนาเว็บวันนี้ คงไม่มีใครไม่รู้จัก React.js หรือ Next.js ที่ได้รับความนิยมอย่างมากจากนักพัฒนาเว็บทั่วโลก แต่หลายคนอาจจะยังไม่รู้ว่า React.js กับ Next.js นั้นมีข้อแตกต่างกันอย่างไร และควรเลือกใช้อะไรดี วันนี้เราจะมาพูดถึงข้อแตกต่างระหว่างสองตัวนี้แบบง่าย ๆ ครับ

React.js คืออะไร?

    ก่อนที่เราจะไปพูดถึงความแตกต่าง เรามาทำความเข้าใจกันก่อนว่า React.js คืออะไร React.js เป็น JavaScript library ที่ถูกพัฒนาโดย Facebook (หรือ Meta ในปัจจุบัน) เพื่อช่วยให้การพัฒนา UI (User Interface) ของแอปพลิเคชันเว็บง่ายขึ้น โดยมันใช้แนวคิดที่เรียกว่า "component-based architecture" หรือการออกแบบเป็นส่วน ๆ ทำให้เราสามารถสร้างส่วนต่าง ๆ ของ UI แล้วนำมาประกอบกันเป็นแอปพลิเคชันใหญ่ได้

    React.js ให้เราได้ทำงานกับ "component" ที่มีสถานะ (state) และคุณสมบัติ (props) ซึ่งทำให้การจัดการกับ UI และการแสดงผลข้อมูลจากแหล่งต่าง ๆ ทำได้ง่ายและสะดวก

Next.js คืออะไร?

    Next.js คือเว็บเฟรมเวิร์กที่ถูกสร้างขึ้นมาโดย Vercel ที่ใช้ React.js เป็นฐานหลัก แต่มันมีคุณสมบัติที่ทำให้การพัฒนาเว็บแอปพลิเคชันง่ายขึ้น และยืดหยุ่นมากขึ้น ไม่ว่าจะเป็นการจัดการกับ SEO (Search Engine Optimization) การเรนเดอร์ข้อมูลที่ฝั่งเซิร์ฟเวอร์ (Server-side Rendering หรือ SSR) หรือการทำ Static Site Generation (SSG) นอกจากนี้ Next.js ยังรองรับการพัฒนาแบบ full-stack ได้อีกด้วย

    Next.js เป็นเฟรมเวิร์กที่รวมหลาย ๆ ฟีเจอร์ที่จำเป็นในการสร้างเว็บแอปพลิเคชันในโลกยุคใหม่ ซึ่ง React.js เองไม่ได้มีฟีเจอร์เหล่านี้มาให้ในตัว

ความแตกต่างหลักระหว่าง React.js กับ Next.js

1. React.js เป็นไลบรารี ส่วน Next.js เป็นเฟรมเวิร์ก

    สิ่งแรกที่ต้องรู้คือ React.js เป็นไลบรารี (Library) ที่ช่วยในการสร้าง UI ในขณะที่ Next.js เป็นเฟรมเวิร์ก (Framework) ที่ให้โครงสร้างการพัฒนาแอปพลิเคชัน โดย Next.js ได้รวมฟีเจอร์มากมายที่ช่วยในการพัฒนาเว็บแอปพลิเคชันให้สะดวกและง่ายขึ้น ไม่ว่าจะเป็นการทำ SEO, การเรนเดอร์ฝั่งเซิร์ฟเวอร์, หรือการทำ Static Generation

2. Server-Side Rendering (SSR) และ Static Site Generation (SSG)

    หนึ่งในข้อดีที่ใหญ่ที่สุดของ Next.js คือการรองรับการเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR) และการสร้างเว็บไซต์แบบ Static (SSG) ซึ่งช่วยให้เว็บไซต์โหลดเร็วและรองรับ SEO ได้ดีขึ้น

  •     SSR คือการที่เรานำข้อมูลมาจากเซิร์ฟเวอร์แล้วเรนเดอร์หน้าบนเซิร์ฟเวอร์ก่อนที่จะส่งไปให้ผู้ใช้ เมื่อเทียบกับ React.js ที่จะเรนเดอร์ส่วนใหญ่บนฝั่งไคลเอนต์ (Client-side rendering หรือ CSR)
  •     SSG คือการสร้างไฟล์ HTML ที่ได้จากข้อมูลที่เรากำหนดล่วงหน้าไว้แล้ว เช่น ข้อมูลของบทความในบล็อก ซึ่งจะถูกสร้างขึ้นตอนที่เรา build เว็บไซต์

    React.js เองไม่ได้มีฟีเจอร์พวกนี้มาให้ ต้องมีการตั้งค่าเพิ่มเติมเพื่อให้ทำงานในลักษณะนี้

3. Routing ใน Next.js

    ใน React.js การทำ routing หรือการสร้างเส้นทางไปยังหน้าอื่น ๆ ของเว็บไซต์จะต้องใช้ไลบรารีเสริม เช่น React Router เพื่อให้สามารถเปลี่ยนหน้าได้ แต่ใน Next.js นั้นมีระบบ routing มาให้พร้อมเลยโดยไม่ต้องติดตั้งอะไรเพิ่ม โดยการสร้างไฟล์ในโฟลเดอร์ pages ในโปรเจกต์จะทำให้ไฟล์นั้นกลายเป็นหน้าเว็บได้ทันที

    การทำ routing ใน React.js ต้องมีกระบวนการติดตั้งและตั้งค่ามากกว่า ขณะที่ Next.js สะดวกกว่าเยอะ

4. การทำงานกับ Data Fetching

    Next.js รองรับการดึงข้อมูลทั้งในฝั่งเซิร์ฟเวอร์และฝั่งไคลเอนต์ ซึ่งมีฟีเจอร์ที่ช่วยให้การดึงข้อมูลเป็นไปได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น getStaticProps, getServerSideProps และ getInitialProps ที่จะช่วยให้สามารถดึงข้อมูลได้ตามประเภทการเรนเดอร์ที่ต้องการ

    ใน React.js การดึงข้อมูลจะทำได้ผ่านการใช้ useEffect หรือ componentDidMount และมักจะต้องมีการจัดการเองอย่างละเอียดกว่า

5. การจัดการ SEO

    ถ้าพูดถึง SEO บนเว็บแอปพลิเคชัน Next.js ทำได้ดีกว่า React.js เพราะการเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR) ทำให้สามารถส่ง HTML ที่เต็มรูปแบบไปยังบอทของ Google ซึ่งช่วยให้เว็บไซต์ติดอันดับการค้นหาได้ดีกว่า ในขณะที่ React.js นั้นมักจะต้องมีการทำ SEO ด้วยมือหรือใช้เครื่องมือเสริม เช่น React Helmet

สรุป

    ในที่สุดแล้ว การเลือกใช้ React.js หรือ Next.js ขึ้นอยู่กับความต้องการและลักษณะของโปรเจกต์ หากคุณต้องการพัฒนาแค่ UI หรือ Single Page Application ที่ไม่ได้มีฟีเจอร์พิเศษมากมาย React.js ก็เพียงพอแล้ว แต่ถ้าคุณต้องการฟีเจอร์ที่มากกว่า เช่น การรองรับ SSR, SSG, SEO ที่ดีขึ้น และการทำ routing ที่สะดวก Next.js ก็เป็นตัวเลือกที่ดีที่สุด

    โดยสรุปแล้ว React.js เป็นไลบรารีที่ให้คุณสร้าง UI ได้ง่าย ๆ ส่วน Next.js เป็นเฟรมเวิร์กที่ให้โครงสร้างการพัฒนาเว็บที่ครบครันกว่า ทั้งการเรนเดอร์ข้อมูลบนเซิร์ฟเวอร์, การจัดการ routing, และการทำ SEO ที่เหนือกว่า

    หวังว่าบล็อกนี้จะช่วยให้คุณเห็นข้อแตกต่างระหว่าง Next.js และ React.js และสามารถตัดสินใจเลือกใช้งานตามความต้องการของคุณได้ดีขึ้นนะครับ!

การใช้ Image Optimization ใน Next.js: โหลดไว SEO ดี ประหยัดแบนด์วิธ!

เคยเจอปัญหาเว็บโหลดช้าเพราะรูปภาพขนาดใหญ่หรือเปล่า? 📷 ถ้าใช่ Next.js มีฟีเจอร์ Image Optimization ที่ช่วยให้รูปภาพโหลดเร็วขึ้น อัตโนมัติ ไม...