GitHub Blocks: โค้ด JavaScript ในไฟล์ Markdown

Nov 27 2022
หรือแอปเล็กๆ น้อยๆ ที่คุณปรับใช้กับ GitHub
หนึ่งในการประกาศที่เงียบกว่าในงาน GitHub Universe ล่าสุดคือ GitHub Blocks ซึ่งนำเสนอเป็นการทดลองโดย Kyle Daigle รองประธานฝ่ายกลยุทธ์ แม้ว่าโครงการจะก้าวหน้าเพียงพอที่นักพัฒนาสามารถลงทะเบียนในรายการรอได้ การบล็อกช่วยให้นักพัฒนารวม JavaScript ไว้ในไฟล์ที่เก็บเพื่อให้กลายเป็นเอกสารสด สามารถทำสิ่งต่างๆ เช่น แสดงเนื้อหาหรือนำเสนอการวิเคราะห์ที่เกี่ยวข้องกับที่เก็บ

หนึ่งในการประกาศที่เงียบกว่าในงาน GitHub Universe ล่าสุดคือ GitHub Blocks ซึ่งนำเสนอเป็นการทดลองโดย Kyle Daigle รองประธานฝ่ายกลยุทธ์ แม้ว่าโครงการจะก้าวหน้าเพียงพอที่นักพัฒนาสามารถลงทะเบียนในรายการรอได้

การบล็อกช่วยให้นักพัฒนารวม JavaScript ไว้ในไฟล์ที่เก็บเพื่อให้กลายเป็นเอกสารสด สามารถทำสิ่งต่างๆ เช่น แสดงเนื้อหาหรือนำเสนอการวิเคราะห์ที่เกี่ยวข้องกับที่เก็บ Daigle อธิบายว่าเป็น "วิธีการมีส่วนร่วมกับ repos ของคุณโดยตรงและมีการโต้ตอบ"

Kyle Daigle รองประธานฝ่ายกลยุทธ์ นำเสนอ Blocks at Universe

แนวคิดนี้ถูกนำเสนอเป็นหลักสำหรับเอกสารที่สมบูรณ์ยิ่งขึ้น “บล็อกคือองค์ประกอบที่ปรับแต่งวิธีการโต้ตอบกับเนื้อหาของคุณ” Daigle จาก Universe กล่าว และเสริมว่าบล็อก “อาจมีประสิทธิภาพพอๆ กับ live code sandbox สำหรับโปรแกรมแก้ไขแบบ WYSIWYG” — หรืออีกนัยหนึ่งคือวิธีการเรียกใช้และสาธิต โค้ดในที่เก็บทำอะไรได้บ้างภายในที่เก็บเอง คุณสามารถนึกถึง Blocks ได้ Daigle กล่าวว่าเป็น "แอปเล็ก ๆ ที่คุณปรับใช้โดยการพุชไปที่ GitHub"

เอกสารสำหรับที่เก็บ GitHub ส่วนใหญ่มักจัดรูปแบบด้วย Markdown ซึ่งเป็นวิธีง่ายๆ ในการเพิ่มมาร์กอัปที่ตั้งใจให้เขียนและอ่านง่ายในรูปแบบข้อความล้วน ขณะเดียวกันก็ให้การจัดรูปแบบที่จำเป็น เช่น ส่วนหัว รายการ รูปภาพ และตัวอย่างโค้ด

Markdown มีหลายตัวแปรและมีการระบุเวอร์ชันของ GitHub ซึ่งเรียกว่า GFM (GitHub Flavoured Markdown) ที่นี่ซึ่งเป็นส่วนเสริมของ Markdown

การแสดงแบบอักษรและสีในบล็อก GitHub

แนวคิดของการเพิ่ม JavaScript ให้กับ Markdown ค่อนข้างตรงข้ามกับแนวคิด Markdown แม้ว่าแนวคิดนี้จะไม่ใช่เรื่องใหม่ก็ตาม GitHub Blocks ทำให้นึกถึงR Markdownซึ่งช่วยให้ผู้เขียนโค้ดสามารถฝังโค้ดภาษา R และวิดเจ็ตShinyได้ Shiny เป็นส่วนประกอบที่รัน JavaScript, HTML และ CSS

กรณีการใช้งานที่นำเสนอโดย Daigle รวมถึงการแสดงแบบอักษรและสี การแสดงข้อมูล JSON ในตารางที่จัดรูปแบบ การแสดงการวิเคราะห์พื้นที่เก็บข้อมูล เช่น ผู้ร่วมให้ข้อมูล สถิติปัญหา การส่งคำขอและการดึงข้อมูล การแสดงไดอะแกรม และการสาธิตคุณลักษณะของแอปพลิเคชันแบบไดนามิก คุณสมบัติสุดท้ายนี้เหมาะสมที่สุดสำหรับแอปพลิเคชันที่เขียนโค้ดเองใน JavaScript หรือ TypeScript ซึ่งมักจะเป็นเช่นนั้น ความเป็นไปได้อีกอย่างคือการสร้างการค้นหารหัสและการจัดทำดัชนีจากภายในเอกสาร

GitHub มี REST API อยู่แล้ว และในแง่หนึ่ง Blocks ก็แค่นำสิ่งนี้มารวมกับแนวคิดในการเปิดใช้งาน JavaScript และ HTML เพื่อแสดงผลจาก GFM แนวคิดนี้ขัดกับแนวคิดที่ว่า repository มีไว้สำหรับโค้ด และการคอมไพล์และรันโค้ดจะเกิดขึ้นที่อื่น เนื่องจากในกรณีนี้โค้ดรันโดยตรงจาก repository

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