นักพัฒนาเลือกใช้ Astro และ MDX เป็นทางเลือกที่เหนือกว่า Custom Elements ที่ใช้ร่วมกับ Markdown

ทีมชุมชน BigGo
นักพัฒนาเลือกใช้ Astro และ MDX เป็นทางเลือกที่เหนือกว่า Custom Elements ที่ใช้ร่วมกับ Markdown

ชุมชนนักพัฒนาเว็บกำลังสำรวจวิธีการใหม่ๆ ในการผสมผสานความเรียบง่ายของ Markdown เข้ากับพลังของคอมโพเนนต์แบบอินเทอร์แอคทีฟ แม้ว่า custom elements จะเป็นแนวทางหนึ่งในการแก้ไขปัญหานี้ แต่นักพัฒนากำลังหันไปใช้โซลูชันที่มีความเป็นผู้ใหญ่และมีฟีเจอร์ที่หลากหลายมากขึ้น ซึ่งสามารถแก้ไขปัญหาทั่วไปในการสร้างเนื้อหาและการสร้างเว็บไซต์

Static Site Generators นำการนวัตกรรม

Static site generators สมัยใหม่ได้กลายเป็นโซลูชันที่นักพัฒนาต้องการสำหรับการผสมผสานความเรียบง่ายของ Markdown เข้ากับสถาปัตยกรรมแบบคอมโพเนนต์ Astro ได้รับความสนใจเป็นพิเศษด้วยแนวทางที่เข้าใจง่ายในการผสม TypeScript, JSX-like syntax และการรองรับ MDX แพลตฟอร์มนี้ช่วยให้นักพัฒนาสร้างเนื้อหาแบบสแตติกได้ในขณะที่เพิ่มเกาะแบบอินเทอร์แอคทีฟโดยใช้เฟรมเวิร์กยอดนิยมอย่าง React, Vue หรือ SolidJS เฉพาะในจุดที่จำเป็นเท่านั้น

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

โซลูชัน Markdown + Component ยอดนิยม

เครื่องมือ คุณสมบัติหลัก เหมาะสำหรับ
Astro ไวยากรณ์ TypeScript + JSX, รองรับ MDX, Framework-agnostic islands เว็บไซต์แบบ Static ที่มีการโต้ตอบเฉพาะส่วน
MDX คอมโพเนนต์ JSX ใน Markdown, รองรับระบบนิเวศที่หลากหลาย เว็บไซต์เอกสารและเนื้อหา
Markdoc ขยายขนาดระดับองค์กร, พัฒนาโดย Stripe โปรเจกต์เอกสารขนาดใหญ่
Nuxt Content การรวม Vue.js, รองรับโมดูล MDC แอปพลิเคชันที่ใช้ Vue
Pandoc ตัวแปลงเอกสารแบบสากล, รองรับรูปแบบที่หลากหลาย การเขียนเชิงวิชาการและเทคนิค

MDX ได้รับการยอมรับอย่างแพร่หลาย

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

Custom elements เหมาะสำหรับเอดิเตอร์และนักพัฒนามาก คุณสามารถให้ชุดของ primitives ที่หลากหลายที่เอดิเตอร์สามารถใช้เพื่อแสดงเนื้อหาบางอย่าง

โซลูชันระดับองค์กรก็ได้เกิดขึ้นในพื้นที่นี้เช่นกัน Stripe ได้พัฒนา Markdoc โดยเฉพาะเพื่อแก้ไขปัญหาความสามารถในการขยายตัวในโครงการเอกสารขนาดใหญ่ ในขณะที่บริษัทอื่นๆ ได้สร้าง toolchains แบบกำหนดเองที่ผสมผสานเทคโนโลยีอย่าง Nuxt Content กับ Markdown processors เฉพาะทาง

ความท้าทายทางเทคนิคขับเคลื่อนการพัฒนาเครื่องมือ

การอภิปรายเผยให้เห็นข้อจำกัดทางเทคนิคหลายประการที่ได้กำหนดทิศทางการพัฒนาเครื่องมือ Custom elements ไม่สามารถใช้ไวยากรณ์ self-closing เมื่อส่งเนื้อหาระหว่างแท็ก และ Markdown processors มีปัญหากับ HTML attributes หลายบรรทัด ข้อจำกัดเหล่านี้ได้ผลักดันให้นักพัฒนาไปสู่โซลูชันที่จัดการกับกรณีขอบเขตเหล่านี้ได้อย่างสง่างามมากขึ้น

Progressive enhancement ยังคงเป็นหัวข้อที่มีการโต้เถียง โดยนักพัฒนาบางคนสนับสนุนการใช้ fallbacks ที่ไม่ขึ้นอยู่กับ JavaScript ในขณะที่คนอื่นๆ โต้แย้งว่าแอปพลิเคชันเว็บสมัยใหม่สามารถคาดหวังให้มี JavaScript ได้อย่างสมเหตุสมผล ความแตกแยกทางปรัชญานี้มีอิทธิพลต่อการเลือกเครื่องมือและกลยุทธ์การดำเนินการ

การเปรียบเทียบ Custom Elements กับทางเลือกอื่น

ข้อจำกัดของ Custom Elements:

  • ไม่สามารถใช้ syntax แบบปิดตัวเองกับเนื้อหาได้
  • โปรแกรมประมวลผล Markdown มีปัญหากับ attributes หลายบรรทัด
  • ต้องใช้ JavaScript เพื่อให้มีฟังก์ชันการทำงาน
  • ระบบนิเวศของเครื่องมือมีจำนวนจำกัด

ข้อดีของ MDX/Astro:

  • ระบบนิเวศของ plugin ที่เป็นผู้ใหญ่
  • การสนับสนุน IDE และเครื่องมือที่ดีกว่า
  • ตัวเลือกการรวมเข้ากับ framework
  • ความสามารถในการปรับปรุงแบบค่อยเป็นค่อยไป
  • การยอมรับและสนับสนุนในระดับองค์กร

คำแนะนำจากชุมชนชี้ไปที่ระบบนิเวศที่เป็นผู้ใหญ่

ชุมชนนักพัฒนาแนะนำโซลูชันที่ผ่านการทดสอบในสนามรบอย่างสม่ำเสมอมากกว่าแนวทางเชิงทดลอง Astro, MDX และ Markdown processors ที่มีชื่อเสียงอย่าง Pandoc ได้รับการกล่าวถึงบ่อยครั้งเนื่องจากความน่าเชื่อถือและระบบนิเวศปลั๊กอินที่กว้างขวาง เครื่องมือเหล่านี้เสนอฟังก์ชันคล้ายคอมโพเนนต์ที่นักพัฒนาต้องการในขณะที่หลีกเลี่ยงความซับซ้อนและปัญหาความเข้ากันได้ที่เกี่ยวข้องกับมาตรฐานเว็บใหม่ๆ

แนวโน้มแสดงให้เห็นว่าแม้ว่า custom elements กับ Markdown จะเป็นความเป็นไปได้ทางเทคนิคที่น่าสนใจ แต่ความต้องการในการพัฒนาจริงได้รับการตอบสนองได้ดีกว่าด้วย static site generators และเฟรมเวิร์กการประมวลผลเนื้อหาที่สร้างขึ้นเป็นพิเศษที่ได้พัฒนาขึ้นมาโดยเฉพาะเพื่อแก้ไขกรณีการใช้งานเหล่านี้

อ้างอิง: The Joy of Mixing Custom Elements, Web Components, and Markdown