การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js
ทำความเข้าใจวิธีที่การดำเนินการฝั่งเซิร์ฟเวอร์ทำงานบนเซิร์ฟเวอร์ จับบริบทของเซิร์ฟเวอร์ไว้ และส่งข้อมูลกลับไปยังไคลเอนต์
การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำงานบนเซิร์ฟเวอร์คืออะไร
การทำงานบนเซิร์ฟเวอร์คือฟังก์ชันแบบอะซิงโครนัสที่ทำงานบนเซิร์ฟเวอร์ ไม่ใช่ในเบราว์เซอร์ ฟังก์ชันเหล่านี้ระบุด้วยคำสั่ง 'use server' ซึ่งวางไว้ด้านบนของไฟล์หรือด้านบนของเนื้อความฟังก์ชัน เพื่อส่งสัญญาณให้กรอบงานทราบว่าฟังก์ชันนี้ต้องไม่ทำงานฝั่งไคลเอนต์โดยเด็ดขาด
การเข้าถึงบริบทฝั่งเซิร์ฟเวอร์
เนื่องจากแอ็กชันฝั่งเซิร์ฟเวอร์ทำงานบนเซิร์ฟเวอร์ จึงเข้าถึงบริบทฝั่งเซิร์ฟเวอร์ทั้งหมดได้ ซึ่งรวมถึงการเชื่อมต่อฐานข้อมูล ข้อมูลลับในสภาพแวดล้อม ข้อมูลเซสชัน และทรัพยากรระบบไฟล์ นี่แตกต่างโดยพื้นฐานจากคอมโพเนนต์ฝั่งไคลเอนต์ที่เข้าถึงได้เฉพาะสิ่งที่เบราว์เซอร์เปิดเผยเท่านั้น
การส่งข้อมูล HTTP เบื้องหลัง
เมื่อคอมโพเนนต์ฝั่งไคลเอนต์เรียกใช้แอ็กชันฝั่งเซิร์ฟเวอร์ Next.js จะสร้างคำขอ HTTP POST ไปยังจุดปลายทาง RSC เฉพาะโดยอัตโนมัติ เฟรมเวิร์กจะจัดการการทำให้เป็นอนุกรมของอาร์กิวเมนต์ทั้งหมดและชั้นการส่งข้อมูลให้ ดังนั้นคุณจึงไม่ต้องเขียนการเรียกใช้ฟังก์ชันดึงข้อมูลด้วยตนเองสำหรับการเปลี่ยนแปลงข้อมูลเหล่านี้
ไม่จำเป็นต้องใช้เส้นทางส่วนติดต่อโปรแกรมประยุกต์
แอ็กชันฝั่งเซิร์ฟเวอร์ช่วยลดความจำเป็นในการใช้เส้นทางส่วนติดต่อโปรแกรมประยุกต์ในหลายสถานการณ์ที่มีการเปลี่ยนแปลงข้อมูล ตัวแอ็กชันเองทำหน้าที่เป็นจุดปลายทาง คุณกำหนดตรรกะเพียงครั้งเดียวในรูปแบบฟังก์ชันฝั่งเซิร์ฟเวอร์ แล้วเรียกใช้โดยตรงจากคอมโพเนนต์ฝั่งไคลเอนต์ได้ราวกับเป็นฟังก์ชันภายในเครื่อง
ฟีเจอร์ระดับพื้นฐานของรีแอ็กต์ 19
เดิมทีแอ็กชันฝั่งเซิร์ฟเวอร์เป็นแนวคิดเฉพาะของ Next.js แต่รีแอ็กต์ 19 ยกระดับให้เป็นฟีเจอร์ระดับพื้นฐานของรีแอ็กต์ ซึ่งหมายความว่าตัวรวมชุดและเฟรมเวิร์กอื่นที่ไม่ใช่ Next.js ก็สามารถนำรูปแบบเดียวกันไปใช้งานตามข้อกำหนดของรีแอ็กต์ได้
ความเสถียรและความพร้อมใช้งาน
แอ็กชันฝั่งเซิร์ฟเวอร์ยังอยู่ในขั้นทดลองในรีแอ็กต์ 19 RC แต่มีความเสถียรใน App Router ของ Next.js 14 ขึ้นไปนับตั้งแต่เปิดตัว หากวันนี้คุณกำลังสร้างแอปพลิเคชันสำหรับใช้งานจริงด้วย App Router ของ Next.js แอ็กชันฝั่งเซิร์ฟเวอร์ก็เป็นรูปแบบที่รองรับอย่างเต็มที่และได้รับการแนะนำ
ความปลอดภัย: ข้อมูลลับอยู่บนเซิร์ฟเวอร์
คุณสมบัติด้านความปลอดภัยที่สำคัญที่สุดประการหนึ่งของแอ็กชันฝั่งเซิร์ฟเวอร์คือ ข้อมูลลับจะไม่ไปถึงเบราว์เซอร์ ตัวแปรสภาพแวดล้อม เช่น รหัสผ่านฐานข้อมูลและคีย์ส่วนติดต่อโปรแกรมประยุกต์ที่ใช้ภายในแอ็กชันฝั่งเซิร์ฟเวอร์ จะไม่ถูกรวมไว้ในชุดโปรแกรมฝั่งไคลเอนต์ เนื่องจากตัวฟังก์ชันจะไม่ถูกส่งไปยังเบราว์เซอร์
แบบฟอร์มและแอ็กชันฝั่งเซิร์ฟเวอร์
องค์ประกอบแบบฟอร์ม HTML รับแอ็กชันฝั่งเซิร์ฟเวอร์ได้โดยตรงผ่านแอตทริบิวต์ action: <form action={myServerAction}> รีแอ็กต์จะดักจับการส่งแบบฟอร์มและเรียกใช้แอ็กชันฝั่งเซิร์ฟเวอร์พร้อมข้อมูลแบบฟอร์ม ทำให้สามารถเปลี่ยนแปลงข้อมูลฝั่งเซิร์ฟเวอร์ได้โดยไม่ต้องวางโครงสร้าง JavaScript ฝั่งไคลเอนต์เพิ่มเติม
วงจรคำขอและการตอบกลับ
เมื่อแอ็กชันฝั่งเซิร์ฟเวอร์ถูกเรียกใช้ รีแอ็กต์จะทำให้อาร์กิวเมนต์ของแอ็กชันเป็นอนุกรมแล้วใส่ลงในเนื้อหาคำขอ POST เซิร์ฟเวอร์จะคืนรูปข้อมูลดังกล่าว เรียกใช้ฟังก์ชัน ทำให้ค่าที่ส่งกลับเป็นอนุกรม แล้วส่งกลับไป มีเพียงค่าที่ทำให้เป็นอนุกรมได้เท่านั้น เช่น สตริง ตัวเลข อาร์เรย์ และอ็อบเจ็กต์ทั่วไป ที่สามารถข้ามขอบเขตนี้ได้
การกำหนดแอ็กชันฝั่งเซิร์ฟเวอร์
คุณสามารถกำหนดแอ็กชันฝั่งเซิร์ฟเวอร์ในระดับโมดูลภายในไฟล์ที่มี 'use server' อยู่ด้านบน หรือกำหนดแบบแทรกภายในคอมโพเนนต์ฝั่งเซิร์ฟเวอร์โดยวาง 'use server' ไว้ด้านบนของฟังก์ชันแบบอะซิงโครนัส ทั้งสองแนวทางให้ผลลัพธ์เหมือนกัน นั่นคือฟังก์ชันที่เรียกใช้ได้เฉพาะบนเซิร์ฟเวอร์
การเรียกใช้จากคอมโพเนนต์ฝั่งไคลเอนต์
คอมโพเนนต์ฝั่งไคลเอนต์นำเข้าและเรียกใช้แอ็กชันฝั่งเซิร์ฟเวอร์ได้เช่นเดียวกับฟังก์ชันแบบอะซิงโครนัสทั่วไป รูปแบบการเรียกใช้เหมือนกับการเรียกฟังก์ชันแบบอะซิงโครนัสภายในเครื่องทุกประการ แต่การทำงานเกิดขึ้นทั้งหมดบนเซิร์ฟเวอร์ การแยกส่วนนี้ช่วยให้คอมโพเนนต์ฝั่งไคลเอนต์เรียบง่ายและไม่ต้องมีโค้ดดึงข้อมูลที่ซ้ำซ้อน
คำถามเกี่ยวกับรูปแบบความปลอดภัย
ข้อใดต่อไปนี้อธิบายรูปแบบความปลอดภัยของแอ็กชันฝั่งเซิร์ฟเวอร์ได้ดีที่สุด
สรุปบทเรียน
แอ็กชันฝั่งเซิร์ฟเวอร์คือฟังก์ชันแบบอะซิงโครนัสฝั่งเซิร์ฟเวอร์ที่กำกับด้วย 'use server' ฟังก์ชันเหล่านี้ครอบคลุมบริบทฝั่งเซิร์ฟเวอร์ เช่น การเชื่อมต่อฐานข้อมูลและข้อมูลลับในสภาพแวดล้อม Next.js จัดการการส่งข้อมูล HTTP ให้อัตโนมัติ และรีแอ็กต์ 19 ทำให้ฟังก์ชันเหล่านี้เป็นฟีเจอร์ที่ไม่ขึ้นกับเฟรมเวิร์ก แบบฟอร์มสามารถใช้ฟังก์ชันเหล่านี้ได้โดยตรงผ่านแอตทริบิวต์ action และข้อมูลลับภายในฟังก์ชันจะไม่ไปถึงเบราว์เซอร์
คำถามที่พบบ่อย
บทเรียน “การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js”
ทำความเข้าใจวิธีที่การดำเนินการฝั่งเซิร์ฟเวอร์ทำงานบนเซิร์ฟเวอร์ จับบริบทของเซิร์ฟเวอร์ไว้ และส่งข้อมูลกลับไปยังไคลเอนต์ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การดำเนินการฝั่งเซิร์ฟเวอร์ในรีแอ็กต์ 19 และ Next.js
- การดำเนินการของแบบฟอร์ม: แทนที่เส้นทาง API สำหรับการเปลี่ยนแปลงข้อมูล
- useActionState และ useFormStatus
- การปรับปรุงแบบค่อยเป็นค่อยไปด้วยการดำเนินการฝั่งเซิร์ฟเวอร์