ฟีเจอร์คอมเมนต์สำหรับบล็อก GitHub ที่ทำได้โดยไม่ใช้ JS ฝั่งฟรอนต์เอนด์
(github.com/nemorize)เริ่มต้นจากการตั้งเป้าว่าจะทำบล็อกที่ไม่เสิร์ฟโค้ด JS ใด ๆ จากฝั่งฟรอนต์เอนด์เลย
บล็อกเดิมมีฟีเจอร์คอมเมนต์ที่ใช้ giscus อยู่
ดังนั้นการทำระบบคอมเมนต์โดยไม่ใช้ JS จึงเป็นอุปสรรคใหญ่ทีเดียว
ผมจึงใช้ Cloudflare Workers และ GitHub Actions เพื่อทำฟีเจอร์คอมเมนต์ขึ้นมา
มันทำงานตามลำดับด้านล่างนี้
- แสดงฟอร์มคอมเมนต์ที่โฮสต์อยู่บน Cloudflare Worker
- ผู้ใช้ล็อกอินด้วยบัญชี GitHub ผ่านฟอร์มคอมเมนต์นั้น แล้วส่งคอมเมนต์
- Worker จะ escape เนื้อหาคอมเมนต์ที่ส่งเข้ามา แล้วส่งต่อไปยัง GitHub ผ่าน workflow dispatches API ของ GitHub Actions
- GitHub Actions จะนำข้อมูลที่ได้รับมา เพิ่มโค้ดคอมเมนต์ลงในไฟล์ HTML ของโพสต์ และ commit การเปลี่ยนแปลงนั้น
- ผลลัพธ์ที่ถูก commit แล้วจะถูกนำขึ้นโปรดักชันตามขั้นตอน deploy ของ GitHub Pages Actions
จึงมีดีเลย์เล็กน้อยกว่าขั้นตอนข้อ 3-5 จะสะท้อนผล
ก็แก้แบบง่าย ๆ ด้วยการเพิ่มข้อความแจ้งไว้บรรทัดหนึ่ง บนแพลตฟอร์มบล็อกอย่าง WordPress มักมีฟีเจอร์ประมาณว่า "จะแสดงคอมเมนต์หลังผู้ดูแลตรวจสอบ" อยู่แล้ว ก็เลยทำเป็นว่าดีเลย์ระดับนั้นคือผู้ดูแลกำลังตรวจสอบอยู่ คุณที่กำลังอ่านบทความนี้ช่วยทำเป็นไม่รู้ไม่ชี้ก็พอ
แก้ปัญหาในมุม UX ได้...มั้งครับ ฮ่า ๆ
แนวทางนี้จะมีความหมายก็ต่อเมื่อเป็นบล็อกเล็ก ๆ ระดับบุคคลที่ยืนยันจะไม่ใช้ JS จริง ๆ เท่านั้น เลยมองกันแบบขำ ๆ สนุก ๆ ก็พอครับ 😅
ลองทดสอบได้โดยตรงจากลิงก์ด้านล่าง!
https://nemorize.me/blog/202507/blog-renewal
4 ความคิดเห็น
อัจฉริยะนี่นา..? 5555555555
จู่ ๆ ก็เกิดความสงสัยขึ้นมาว่า llm จะทำเรื่องแบบนี้ได้ไหมเหมือนกันนะ 555
วิธีแก้ปัญหาเวลาแฝงแปลกใหม่และน่าสนุกมาก 👏
เป็น CMS แบบ headless ประเภทหนึ่งหรือเปล่าครับ? น่าสนใจดีครับ