IT General
น้องๆ หลายคนอาจจะเคยได้ยินคำว่า "Fullstack" กันมาบ้างแล้วเนอะ สมัยผมทำร้านเน็ตเมื่อก่อน Fullstack ยังไม่ฮิตเท่าสมัยนี้หรอก ส่วนใหญ่ก็เน้นทำฝั่ง Front-end หรือ Back-end แยกกันไป แต่ยุคนี้มันเปลี่ยนไปแล้ว เพราะ Next.js นี่แหละ
Next.js มันคือ Framework ที่ทำให้เราสามารถสร้าง Web Application แบบ Fullstack ได้ง่ายขึ้นมากๆ คือเขียนโค้ดชุดเดียว ทำได้ทั้งหน้าบ้าน (Front-end) และหลังบ้าน (Back-end) เลย เจ๋งใช่ไหมล่ะ? แล้วทำไมมันถึงสำคัญน่ะเหรอ? ก็เพราะมันช่วยลดเวลาในการพัฒนา ทำให้เราส่งงานได้เร็วขึ้น แถมยังช่วยให้โค้ดของเราเป็นระเบียบมากขึ้นด้วยนะ
ก่อนจะไปลุย Next.js กันแบบเต็มตัว เรามาดูกันก่อนว่าต้องรู้อะไรบ้าง ผมจะสรุปแบบง่ายๆ ให้เข้าใจกันนะ
JavaScript นี่ขาดไม่ได้เลย น้องๆ ต้องเข้าใจพื้นฐาน JavaScript เป็นอย่างดี โดยเฉพาะ Syntax แบบใหม่ๆ ใน ES6+ อย่างเช่น Arrow Function, Destructuring, Spread Operator พวกนี้ใช้บ่อยมากใน Next.js ถ้ายังไม่แม่น แนะนำให้ไปทบทวนก่อนนะ
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map(number => number * number);
console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25]
Next.js สร้างขึ้นบน React ดังนั้นถ้าไม่รู้จัก React เลย ก็เหมือนกับขับรถไม่เป็นแล้วจะไปแข่ง Formula 1 น่ะแหละ น้องๆ ต้องเข้าใจ Component, Props, State, Lifecycle Method พวกนี้ให้ดี เพราะมันคือหัวใจหลักของการพัฒนา Front-end ด้วย Next.js เลยล่ะ
import React from 'react';
function MyComponent(props) {
return (
<div>
<h1>Hello, {props.name}!</h1>
</div>
);
}
export default MyComponent;
Node.js คือ Runtime Environment ที่ทำให้เราสามารถรัน JavaScript บน Server ได้ ส่วน npm และ yarn ก็คือ Package Manager ที่ช่วยจัดการ Library และ Dependencies ต่างๆ ที่เราใช้ใน Project ของเรา น้องๆ ต้องรู้จักวิธีการ Install Package, Run Script พวกนี้ให้คล่องนะ
// Install a package using npm
npm install react
// Install a package using yarn
yarn add react
เอาล่ะ ทีนี้มาถึงขั้นตอนการใช้งาน Next.js กันบ้าง ผมจะสอนแบบ Step-by-Step รับรองว่าทำตามได้แน่นอน
เริ่มจากสร้าง Project ใหม่ก่อนเลย Next.js เค้ามี Command Line Tool (CLI) ให้เราใช้สร้าง Project ได้ง่ายๆ แค่เปิด Terminal แล้วพิมพ์คำสั่งนี้
npx create-next-app my-next-app
cd my-next-app
คำสั่งนี้จะสร้าง Project ชื่อ "my-next-app" ให้เรา แล้วก็เข้าไปใน Directory ของ Project นั้น
พอสร้าง Project เสร็จแล้ว ลองเปิด Folder ของ Project ดู จะเห็นว่ามี Folder และ File ต่างๆ มากมาย อย่าเพิ่งตกใจนะ ผมจะอธิบายให้ฟัง
pages: Folder นี้สำคัญมาก เพราะทุก File ที่อยู่ในนี้ จะถูกแปลงเป็น Route ของ Application เราโดยอัตโนมัติpublic: Folder นี้เอาไว้เก็บ Static Files ต่างๆ เช่น รูปภาพ, CSS, JavaScriptstyles: Folder นี้เอาไว้เก็บ CSS Modulesnext.config.js: File นี้เอาไว้ Config ค่าต่างๆ ของ Next.jsลองสร้าง Component แรกของเรากัน โดยสร้าง File ชื่อ index.js ใน Folder pages แล้วใส่ Code นี้ลงไป
import React from 'react';
function HomePage() {
return (
<div>
<h1>Welcome to Next.js!</h1>
<p>This is my first Next.js page.</p>
<a href="https://siamcafe.net/blog/">SiamCafe Blog</a>
</div>
);
}
export default HomePage;
Code นี้จะสร้าง Component ชื่อ HomePage ซึ่งจะแสดงข้อความ "Welcome to Next.js!" และ "This is my first Next.js page." บนหน้าเว็บ
สุดท้ายก็รัน Development Server เพื่อดูผลลัพธ์กัน โดยพิมพ์คำสั่งนี้ใน Terminal
npm run dev
# or
yarn dev
แล้วเปิด Browser ไปที่ http://localhost:3000 เราก็จะเห็นหน้าเว็บที่เราสร้างขึ้น
Next.js ไม่ใช่ Framework เดียวที่สามารถทำ Fullstack ได้ ยังมีทางเลือกอื่นๆ อีกมากมาย เช่น Create React App (CRA), Vue.js, Angular แต่ละตัวก็มีข้อดีข้อเสียแตกต่างกันไป ผมจะสรุปให้ดูในตารางนี้
| Framework | ข้อดี | ข้อเสีย |
|---|---|---|
| Next.js |
|
|
| Create React App (CRA) |
|
|
| Vue.js |
|
|
| Angular |
|
|
จะเห็นว่า Next.js เหมาะสำหรับคนที่ต้องการสร้าง Fullstack Application ที่ SEO Friendly และมี API Routes ในตัว แต่ถ้าต้องการแค่สร้าง SPA ง่ายๆ CRA ก็เป็นทางเลือกที่ดีกว่า ส่วน Vue.js ก็เหมาะสำหรับคนที่อยากได้ Framework ที่ Learning Curve ต่ำ และ Angular ก็เหมาะสำหรับ Enterprise Application ขนาดใหญ่
สุดท้ายนี้ อยากจะบอกน้องๆ ว่าไม่มี Framework ไหนที่ดีที่สุด มีแต่ Framework ที่เหมาะกับ Project ของเราที่สุด ลองศึกษาและเลือกใช้ให้เหมาะสม SiamCafe Blog มีบทความดีๆ อีกเยอะเลย ลองเข้าไปอ่านกันดูนะ
สมัยผมทำร้านเน็ต ผมก็ต้องศึกษาเทคโนโลยีใหม่ๆ อยู่ตลอดเวลา เพราะเทคโนโลยีมันเปลี่ยนแปลงเร็วมาก น้องๆ ก็ต้องหมั่นเรียนรู้และพัฒนาตัวเองอยู่เสมอนะครับ
ดูวิดีโอเพิ่มเติมเกี่ยวกับNextjs Fullstack Guide:
อ่ะน้องๆ มาฟังพี่บอมเล่าให้ฟัง สมัยผมทำร้านเน็ต SiamCafe เนี่ย เจอปัญหามาเยอะแยะ Next.js มันก็เหมือนกันแหละ มี Best Practices ที่อยากแนะนำจากประสบการณ์ตรง จะได้ไม่ต้องเสียเวลาลองผิดลองถูกแบบพี่
จำไว้เลยว่า Performance สำคัญมาก! ยิ่งเว็บเร็ว คนยิ่งชอบ (และ Google ก็ชอบด้วย) ทำให้เว็บเร็วตั้งแต่แรก ดีกว่ามาแก้ทีหลังเยอะ
สมัยก่อนรูปภาพนี่ตัวดีเลย โหลดช้า กิน bandwidth ลูกค้าบ่นกระจาย Next.js มี next/image Component นี่ช่วยได้เยอะมากๆ ใช้ซะ! มัน optimize รูปให้เอง ทั้งเรื่อง format, size, lazy loading แทบไม่ต้องทำอะไรเลย
import Image from 'next/image'
function MyComponent() {
return (
<Image
src="/images/my-image.jpg"
alt="My Image"
width={500}
height={300}
/>
)
}
แค่ใส่ Component นี้แทน <img> ชีวิตก็ง่ายขึ้นเยอะแล้วน้อง
ถ้าเว็บเราใหญ่ๆ มีหลายหน้า อย่า bundle ทุกอย่างรวมกันหมด มันจะโหลดช้า ให้ใช้ Dynamic Imports หรือ Code Splitting แยก module ที่ไม่จำเป็นต้องโหลดตอนแรกออกไปก่อน
import dynamic from 'next/dynamic'
const MyComponent = dynamic(() => import('../components/MyComponent'))
function MyPage() {
return (
<div>
<MyComponent />
</div>
)
}
แบบนี้ MyComponent จะโหลดเฉพาะตอนที่จำเป็นเท่านั้น ช่วยลด Initial Load Time ได้เยอะ
Caching คือพระเอก! ทั้งฝั่ง Client และ Server Next.js มี Static Site Generation (SSG) และ Server-Side Rendering (SSR) เลือกใช้ให้ถูกกับ use case
SSG เหมาะกับหน้า content ที่ไม่ค่อยเปลี่ยน เช่น หน้า Blog (แบบ SiamCafe Blog นี่แหละ) สร้าง HTML static ไว้เลย โหลดเร็วปรู๊ดปร๊าด
SSR เหมาะกับหน้า Dynamic ที่ต้อง fetch data ตลอด เช่น Dashboard, E-commerce แต่ระวังอย่า fetch data เยอะเกินไป มันจะช้า ให้ใช้ getStaticProps หรือ getServerSideProps ให้ถูกที่ถูกเวลา
ลองเช็คดูเรื่อง Image Optimization ก่อนเลย รูปภาพขนาดใหญ่เกินไปรึเปล่า? ใช้ next/image หรือยัง? แล้วก็ลองวัด performance ด้วย Google PageSpeed Insights ดู จะได้รู้ว่าตรงไหนเป็นปัญหา
ถ้า content ไม่ค่อยเปลี่ยน ใช้ SSG ถ้า content เปลี่ยนบ่อย ต้อง fetch data ตลอด ใช้ SSR แต่ถ้าไม่แน่ใจ ลองใช้ Incremental Static Regeneration (ISR) ดู มันคือ SSG ที่สามารถ revalidate ได้ตามช่วงเวลาที่เรากำหนด
Redux, Zustand, Recoil... เยอะแยะไปหมด เลือกที่ถนัดเลยน้อง แต่ถ้าโปรเจคเล็กๆ React Context ก็เอาอยู่แล้ว ไม่ต้องไปลง Library ใหญ่ๆ ให้ปวดหัว
Next.js เป็น Framework ที่ดีมากๆ สำหรับสร้างเว็บ React ที่ Performance สูง แต่ต้องเข้าใจหลักการทำงานของมัน และใช้ Best Practices ที่พี่บอกไป
อย่าลืม Image Optimization, Code Splitting, Caching และเลือกใช้ SSG/SSR ให้เหมาะสม แล้วเว็บของเราจะแรงทะลุจักรวาลแน่นอน!
ถ้าอยากเก่งเรื่องเว็บ ลองศึกษาเรื่อง Forex ด้วยนะ เผื่อเอามาทำเว็บเทรด iCafeForex กำไรดีนะน้อง!