GyaanSetu JavaScript

ระบบนิเวศ JavaScript และ TypeScript

90 articlesDeep, practical knowledge

ผู้เล่นเกลียดการต้องแพ้เพราะปัญหาทางเทคนิค ทั้งที่แพลตฟอร์มก็ชัดเจน จังหวะก็เป๊ะ แต่แล้วเกมกลับทำให้พวกเขาต้องจบเกมลง

ผู้เล่นเกลียดการต้องแพ้ในการเล่นเพราะปัญหาทางเทคนิค ทั้งที่แพลตฟอร์มก็ชัดเจน จังหวะก็เป๊ะ แต่แล้วเกมกลับทำให้พวกเขาต้องจบเกมลง ไม่ใช่เพราะพวกเขาทำพลาด แต่เป็นเพราะเบราว์เซอร์...

JavaScript · 6 min read

การเขียน TypeScript 7 ใหม่ด้วยภาษา Go ช่วยลดเวลาคอมไพล์ของ VS Code ลงถึง 11.9 เท่า เหลือเพียง 1.3 วินาที

Microsoft ได้สร้างคอมไพเลอร์ขึ้นมาใหม่ด้วยภาษา Go เพื่อแทนที่เอนจินเดิมที่ทำงานบน Node โดยการทำ parallel parsing และ type-checking ช่วยลดเวลาคอมไพล์ของ VS Code จาก 17.5 วินาที เหลือไม่ถึง 1.3 วินาที และยังช่วยลดการใช้หน่วยความจำลงได้สูงสุดถึง 26% ในโปรเจกต์ที่มีโค้ดขนาดใหญ่

JavaScript · 2 min read

เผยความล้มเหลวแบบเงียบ (Silent Failures) ของ Supabase-JS ผ่าน TypeScript Mutate Wrapper ตัวใหม่

TypeScript wrapper ขนาดเล็กที่บังคับให้นักพัฒนาต้องจัดการกับฟิลด์ `error` ที่ส่งกลับมาจาก supabase-js โดยจะทำการบันทึก (log) ทุกการเขียนข้อมูลที่ล้มเหลวไปยัง Sentry และช่วยป้องกันไม่ให้ UI แสดงเครื่องหมาย “success” ที่อาจปกปิดข้อมูลที่ไม่ได้มีการเปลี่ยนแปลงจริง

JavaScript · 4 min read

Vite 8 ลดเวลาการ Build ลงถึง 10 เท่าด้วย Rolldown ที่ขับเคลื่อนด้วย Rust

คู่มือ Vite 8: Build เร็วขึ้น 10 เท่า เวลาในการ Build สำหรับการพัฒนา Frontend ได้เปลี่ยนไปแล้วในเดือนมีนาคม 2026 Vite 8 มาพร้อมกับ Rolldown ซึ่งเป็น bundler ที่สร้างขึ้นด้วย Rust โดยจะเข้ามาแทนที่ทั้ง esbuild และ...

JavaScript · 3 min read

SolidJS 2.0 ช่วยให้ทีม React รักษาความเสถียรของ UI ได้แม้ในขณะที่กำลังรีเฟรชข้อมูล

SolidJS 2.0 นำเสนอโมเดล async-data แบบ native ที่ทำให้ promises เป็นค่า reactive แบบ first-class ส่งผลให้การแสดงผล fallback จะเกิดขึ้นเฉพาะในการโหลดครั้งแรกเท่านั้น ส่วนการรีเฟรชข้อมูลในครั้งต่อๆ ไปจะยังคงรักษา DOM เดิมไว้บนหน้าจอ ช่วยลดปัญหาการกะพริบของตัวโหลด (spinners) ที่มักพบใน React’s Suspense

JavaScript · 5 min read

ทีม React ลดค่า INP ให้ต่ำกว่า 200 ms ด้วยการแบ่ง Long Tasks และการใช้ startTransition

แม้จะมีคะแนน Lighthouse ที่สมบูรณ์แบบ แต่ค่า Interaction to Next Paint (INP) จากผู้ใช้งานจริงอาจสูงเกิน 500 ms ได้ ด้วยการแบ่ง long tasks ออกเป็นส่วนย่อยๆ ด้วย scheduler.yield, การครอบการอัปเดตที่ไม่เร่งด่วนด้วย startTransition และการตัด DOM ที่อยู่นอกหน้าจอออก คุณจะสามารถลดค่า INP ให้ต่ำกว่าเกณฑ์ "เร็ว" ที่ 200 ms ได้

JavaScript · 2 min read

TypeScript 7 ช่วยลดเวลาการ Build Monorepo ด้วยการตรวจสอบ Declaration แบบขนาน

โหมด isolated declarations แบบใหม่ช่วยกระจายการตรวจสอบไฟล์ .d.ts ไปยัง CPU core ต่างๆ ช่วยลดรอบการคอมไพล์สำหรับ repository ที่มีแพ็กเกจหลายร้อยรายการ และช่วยประหยัดทรัพยากรบน CI agents ที่ทำงานบนฮาร์ดแวร์แบบ multi-core ได้ทันที

JavaScript · 2 min read

pnpm v12 Alpha ลดเวลาการติดตั้งแบบ Warm จาก 381 ms เหลือเพียง 12 ms ด้วยการเขียนใหม่ด้วยภาษา Rust

ไบนารี Rust แบบ Native ตัวใหม่ช่วยลดเวลาการติดตั้งแบบ Warm ลงถึง 30 เท่า ลดการติดตั้งแบบไม่มีแคชเหลือเพียง 40 ms และลดการติดตั้งแบบ full-tree ลงเหลือ 2.2 วินาที ซึ่งช่วยให้ CI pipelines ทำงานได้เร็วขึ้นอย่างมหาศาล โดยที่ยังคงใช้ CLI flags และรูปแบบ lockfile เดิม

JavaScript · 2 min read

กล่องสีดำที่ใช้ปกปิดข้อมูลอาจไม่ปลอดภัยอย่างที่คิด – วิธีการใหม่เปลี่ยนหน้าที่มีข้อมูลอ่อนไหวให้เป็นรูปภาพ

ตัวแก้ไขทำงานบนเบราว์เซอร์ทั้งหมด โดยจะเปลี่ยนเฉพาะหน้าที่มีการปกปิดข้อมูลให้เป็นบิตแมปที่มีขนาดขยายขึ้น 3 เท่า ในขณะที่ส่วนที่เหลือของเอกสารยังคงเป็นรูปแบบเวกเตอร์ เพื่อให้ยังคงความสามารถในการค้นหาและรักษาขนาดไฟล์ให้เล็กอยู่เสมอ

JavaScript · 3 min read

Auto-Animate เพิ่มแอนิเมชันรายการแบบไม่ต้องเขียนโค้ดให้กับ Marko 6

แพ็กเกจ @formkit/auto-animate/marko ตัวใหม่สามารถติดตั้งผ่าน npm ได้ทันที เพียงแค่ครอบ parent ของ list ด้วย <AutoAnimate> และใช้ MutationObserver เพื่อสร้างแอนิเมชันเมื่อมีการเพิ่ม ลบ หรือจัดลำดับรายการใหม่ โดยไม่ต้องใช้ JavaScript หรือ lifecycle hooks เพิ่มเติม

JavaScript · 2 min read

ทุกทีมพัฒนาต่างก็มีเรื่องราวแบบนี้ Pull request ถูกเปิดค้างไว้ครึ่งวัน ไม่ใช่เพราะตรรกะผิดพลาด...

ทุกทีมพัฒนาต่างก็มีเรื่องราวแบบนี้ Pull request ถูกเปิดค้างไว้ครึ่งวัน ไม่ใช่เพราะตรรกะผิดพลาดหรือ API contract เปลี่ยนแปลง แต่เป็นเพราะผู้รีวิวสองคนมีความเห็นไม่ตรงกัน...

JavaScript · 3 min read

คอขวดของ DOM ที่ไม่มีใครพูดถึง

คอขวดของ DOM ที่ไม่มีใครพูดถึง ลองจินตนาการถึงแดชบอร์ดสนับสนุนที่ดึงข้อมูลบันทึก (log entries) เข้ามาถึงหนึ่งหมื่นรายการ หรือระบบ CRM ที่พยายามแสดงรายชื่อผู้ติดต่อทั้งหมดในตารางเดียวที่เลื่อนดูได้ ใน...

JavaScript · 7 min read

โปรแกรมที่มีประโยชน์ทุกโปรแกรมย่อมต้องมาถึงจุดที่ต้องตัดสินใจในที่สุด ปุ่มนี้ควรจะส่งฟอร์มหรือแสดงข้อผิดพลาด? ผู้ใช้...

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

JavaScript · 3 min read