Next.js ไม่ใช่เฟรมเวิร์กที่ดีที่สุด แต่มันคือตัวเลือกที่ไว้ใจได้มากที่สุด
Next.js เป็น React framework ที่ถูกใช้งานมากที่สุด และยังเป็นหนึ่งในเฟรมเวิร์กที่ถูกเกลียดมากที่สุดด้วยเช่นกัน
ผลสำรวจแสดงให้เห็นว่ามีการใช้งานสูง แต่ความพึงพอใจกลับลดลง ผู้คนบ่นเรื่องความซับซ้อนและ App Router พวกเขาบอกว่ามันเทอะทะหรือบังคับให้คุณต้องใช้ Vercel
เรื่องนี้บางส่วนก็จริง แต่ส่วนใหญ่ไม่จริง
คนส่วนใหญ่เลือกใช้เครื่องมือผิด หรือพยายามฝืนการทำงานของเครื่องมือ แล้วจึงไปโทษตัวเครื่องมือ
ผมสร้างระบบด้วย Next.js มานานหลายปี ผมใช้มันกับแพลตฟอร์มที่ความผิดพลาดหมายถึงความสูญเสียทางการเงินจริงๆ และนี่คือมุมมองของผม
Next.js ไม่ใช่เฟรมเวิร์กที่ดีที่สุด แต่มันคือตัวเลือกที่ไว้ใจได้มากที่สุด ซึ่งสองสิ่งนี้มีความหมายต่างกัน
โปรเจกต์ในโลกความเป็นจริงมีความต้องการที่หลากหลาย คุณอาจต้องการเว็บไซต์คอนเทนต์ แต่ในขณะเดียวกันก็ต้องการแดชบอร์ด, ระบบพรีวิวสำหรับบรรณาธิการ และการรองรับผู้ใช้งานจำนวนมหาศาล
เฟรมเวิร์กอื่นๆ อาจจะชนะในงานเฉพาะทางบางอย่าง:
- Astro นั้นยอดเยี่ยมสำหรับ static sites
- SvelteKit นั้นดีเยี่ยมในด้านประสบการณ์ของนักพัฒนา (developer experience) และการสร้าง output ที่เบาบาง (lean output)
แต่ Next.js จะเป็นผู้ชนะเมื่อความต้องการเริ่มมีความซับซ้อน
มันมีฟีเจอร์ที่ติดตั้งมาให้ในตัว ซึ่งหากไม่ใช้คุณจะต้องสร้างมันขึ้นมาเอง:
- Incremental Static Regeneration เพื่ออัปเดตหน้าเว็บโดยไม่ต้อง rebuild ใหม่ทั้งหมด
- Draft Mode เพื่อการพรีวิวเนื้อหาสำหรับบรรณาธิการที่ง่ายดาย
- Edge runtime สำหรับ middleware และ auth ที่รวดเร็ว
- Streaming และ Suspense เพื่อจัดการกับข้อมูลที่โหลดช้า
- Server Actions เพื่อรัน logic โดยไม่ต้องมี API แยกต่างหาก
นอกจากนี้มันยังมีแรงดึงดูดมหาศาล เพราะมันวางอยู่บน React และมีข้อมูลสำหรับเทรนโมเดล AI จำนวนมหาศาล เมื่อคุณใช้ AI เขียนโค้ด Next.js มันจึงทำงานได้ดีกว่าเพราะรูปแบบ (patterns) ของมันมีอยู่ทุกหนทุกแห่ง
ข้อแลกเปลี่ยนนั้นมีอยู่จริง และคุณควรรับรู้ถึงมัน:
- มันมีความเป็น opinionated สูงมาก หากคุณไม่ต้องการฟีเจอร์ของมัน คุณจะต้องต่อสู้กับมัน
- เรื่องการย้ายแพลตฟอร์ม (portability) เคยเป็นปัญหา การย้ายออกจาก Vercel นั้นทำได้ยากมาเป็นเวลานาน
- การเปลี่ยนผ่านไปสู่ App Router นั้นวุ่นวายและน่าสับสน
บทเรียนคือ: การเลือก Next.js คือการตัดสินใจแบบ "all-in"
หากคุณยอมรับและใช้งานเฟรมเวิร์กตามที่มันถูกออกแบบมา มันจะช่วยแบกรับภาระให้คุณ แต่ถ้าคุณพยายามฝืนการทำงานของมัน คุณจะต้องจ่าย "ภาษี" นั้นไปตลอด
ผมเคยเห็นทีมหนึ่งสร้างสถาปัตยกรรมแบบกำหนดเองที่ไปทำลายกฎการทำ routing ของ Next.js พวกเขาตัดสินใจในเชิงวิศวกรรมที่ฟังดูสมเหตุสมผล แต่มันกลับขัดแย้งกับตัวเฟรมเวิร์ก พวกเขาต้องเสียเวลาหลายเดือนในการเขียนโค้ดเพื่อแก้ปัญหา (workarounds) สำหรับเรื่องอย่าง SEO และลิงก์ต่างๆ
ปัญหาไม่ใช่ตัวเฟรมเวิร์ก แต่คือความไม่เข้ากัน
หากคุณกำลังสร้างสิ่งที่ซับซ้อนและต้องใช้งานไปอีกหลายปี Next.js คือการเดิมพันที่มีโอกาสล้มเหลวน้อยที่สุด จงใช้มันในสิ่งที่มันถูกออกแบบมาให้ทำ
ที่มา: https://dev.to/fredcorr/nextjs-isnt-the-best-framework-its-the-most-reliable-bet-5e2c
