- ภาษา UI ที่ยึดเว็บมาตรฐาน HTML, CSS และ JavaScript เป็นศูนย์กลาง มุ่งสร้างอินเทอร์เฟซที่กระชับและขยายต่อได้มากกว่าเฟรมเวิร์กเดิม
- ต่างจาก React ตรงที่ แยก logic ออกจาก style และใช้ไฟล์ design system ภายนอกแทน CSS-in-JS ทำให้ดูแลรักษาได้ง่าย
- แม้จะสร้างคอมโพเนนต์ที่ซับซ้อน โค้ดก็ยังเรียบง่ายและขนาด JS bundle เล็ก เช่น ตารางที่มีฟังก์ชันเรียงลำดับ/กรองมีขนาด 3.9KB
- การสลับธีมดีไซน์ก็ทำได้ด้วย การแก้ CSS เพียง 32 บรรทัด โดยไม่ต้องแก้คอมโพเนนต์ และสามารถเปลี่ยน design system ได้
- ทำงานบน Bun พร้อมความสามารถด้านการ bundle ที่รวดเร็ว ความเข้ากันได้กับมาตรฐาน และเป็นฐานสำหรับการสร้าง UI สำหรับโมเดล AI จึงเป็น เฟรมเวิร์กที่มองไปข้างหน้า
Introducing Hyper
- Hyper คือภาษา markup แบบใหม่สำหรับสร้าง UI บนพื้นฐานของเว็บมาตรฐาน HTML/CSS/JS
- แม้เป็น UI ที่ซับซ้อนก็สามารถเขียนได้ด้วยไวยากรณ์ที่สะอาดและเรียบง่าย
- ต่างจาก React ตรงที่ แยกการแสดงผล logic และ style ออกจากกัน
Project goals
- Standards first: สร้างบนมาตรฐาน HTML, CSS และ JS
- Simplicity: โครงสร้างการประกอบที่เรียบง่ายโดยไม่มี abstraction ที่ซับซ้อน
- Design Systems: ชั้นดีไซน์ที่แยกออกจากกันสำหรับทั้งนักออกแบบและนักพัฒนา
- Scalability: คงความเรียบง่ายไว้ได้แม้แอปพลิเคชันจะเติบโต
เปรียบเทียบ React vs Hyper
- React เป็นโครงสร้างแบบ monolithic ที่ผสม logic โครงสร้าง และ style เข้าด้วยกัน ขณะที่ Hyper มุ่งเน้นไปที่ view layer แบบล้วน ๆ
- Simple components
- มีตัวอย่างการสร้างคอมโพเนนต์ตารางเดียวกันด้วย Modern React, Old-school React และ Hyper
- Modern React: ใช้ไลบรารีคอมโพเนนต์อย่าง ShadCN, Material UI, Tailwind Catalyst ในการสร้าง UI และมีจุดเด่นด้านการรองรับเครื่องมือ AI
- Old-school React: วิธีการยุคแรกที่แยก style ออกจากโค้ดคอมโพเนนต์
- Hyper: ตัวอย่างที่กระชับและยึดตามเว็บมาตรฐาน พร้อมการแยกโครงสร้างและ style อย่างชัดเจน
- Hyper แสดงผลได้ด้วย โครงสร้างบน HTML ล้วนและเมธอดง่าย ๆ โดยไม่ต้องมี class หรือ state hook ที่ไม่จำเป็น
- ในตัวอย่างง่าย ๆ ความต่างอาจมีไม่มาก แต่เมื่อความซับซ้อนเพิ่มขึ้น แนวทางของ Hyper และ React จะต่างกันชัดเจนขึ้น
- Complex components
- React ที่อิง ShadCN: JS bundle 91.3KB
- Hyper: 3.9KB (1.2KB + 2.7KB)
- Hyper ใช้ JS เท่าที่จำเป็น จึงดูแลรักษาได้ง่าย
- Design systems
- เมื่อเปลี่ยนสไตล์แดชบอร์ดด้วย Hyper สามารถสลับธีมทั้งหมดได้ด้วย การเพิ่ม CSS เพียง 32 บรรทัดโดยไม่ต้องแก้โค้ดคอมโพเนนต์
- ในทางกลับกัน ShadCN บน React มีโค้ด TSX หลายพันบรรทัดที่ซ้ำกันตามแต่ละธีม
- ปรัชญา design system ของ Hyper
- ตัดการผูกกันระหว่างดีไซน์กับคอมโพเนนต์ออกอย่างสิ้นเชิง ไม่ว่าจะเป็น CSS-in-JS, Tailwind, inline style
- รวมกฎ typography และ style ทั้งหมดไว้ใน ไฟล์ CSS ภายนอก
- ทำให้เกิด การนำกลับมาใช้ซ้ำได้เต็มรูปแบบ, design system แบบรวมศูนย์ และ zero boilerplate
- Scalability
- แนวทางของ Hyper ยังคงความเรียบง่ายได้แม้โปรเจกต์จะใหญ่ขึ้น
- โครงสร้างเรียบง่าย และขนาดโค้ดเล็ก
คำถามที่พบบ่อย
- ต่างจาก Svelte, Vue อย่างไร?
- ทั้งคู่เบากว่า React แต่ยังคงชวนให้ผูกดีไซน์กับคอมโพเนนต์ผ่าน scoped CSS, Tailwind เป็นต้น
- Hyper บังคับให้ใช้ design system ที่แยกออกจากกันอย่างสมบูรณ์
- What is Nue?
- Nue คือเครื่องมือสร้างเว็บไซต์/เว็บแอปที่อิงกับ Nue JS template
- Hyper คือวิวัฒนาการรุ่นถัดไปของ Nue JS และอยู่ภายใต้ monorepo เดียวกัน
- Hyperlink (อยู่ระหว่างพัฒนา) คือโซลูชัน router ที่สื่อถึงการเชื่อมต่ออย่างใกล้ชิดกับเว็บมาตรฐาน
- ต่างจากเฟรมเวิร์กเดิมอย่างไร?
- เป้าหมายหลักของ Hyper ไม่ใช่การเพิ่ม เครื่องมือ abstraction แบบใหม่ แต่คือการกลับไปหามาตรฐานและ ฟื้นคืนความเรียบง่าย
- มีแค่ความรู้ CSS, HTML และ JS ก็สร้างแอประดับโปรได้
- ทำไมเว็บมาตรฐานจึงสำคัญ?
- เทคโนโลยีที่ไร้กาลเวลา: เป็นฐานเทคโนโลยีที่ยังใช้ได้อีกหลายสิบปี
- ผลิตภัณฑ์ที่ยั่งยืน: ดูแลรักษาได้ยาวนานโดยไม่ต้องเปลี่ยนเฟรมเวิร์ก
แผนต่อจากนี้
- Full-stack applications (ภายใน 3 เดือน)
- มีแผนเพิ่ม routing, การสื่อสารระหว่างคอมโพเนนต์, การเชื่อมต่อ DB, การ deploy ขึ้นคลาวด์ และความสามารถในการสลับธีมดีไซน์
- Generative UIs (ภายใน 4~5 เดือน)
- เฟรมเวิร์ก UI ที่ AI สร้างได้บนพื้นฐานของการประกอบ HTML/CSS
- รวม accessibility, responsiveness และ documentation แบบอัตโนมัติ
- จะชนะ React ได้อย่างไร?
- ตั้งเป้าขยายส่วนแบ่งอย่างค่อยเป็นค่อยไป
- ผลักดันให้ การรับรู้ของนักพัฒนาเปลี่ยนไปอย่างเป็นขั้นตอน
- มอบ โครงสร้างที่เรียบง่ายและดูแลรักษาได้
- วางแผนเติบโตด้วยการพิสูจน์ พลังของเทคโนโลยีพื้นฐาน
- ปัญหาชื่อซ้ำ?
- แม้จะมีโปรเจกต์ Rust และ Electron ที่ใช้ชื่อเดียวกันอยู่ก่อนแล้ว แต่คนละบริบทจึงไม่มีปัญหา
เป้าหมายสูงสุด
- เป้าหมายสุดท้ายคือการสร้าง เว็บสแตกที่เรียบง่ายอย่างพลิกเกม
7 ความคิดเห็น
โดยทั่วไปแล้วมันเหมือนเมินประวัติศาสตร์แล้วหยิบวงล้อเก่ากลับมาใช้อีกครั้ง
บางไอเดียก็ดูไม่เลว (วิธีใช้ Markdown) แต่เมื่อเทียบกับเครื่องมืออื่น ๆ แล้วก็ดูเหมือนไม่มีข้อได้เปรียบที่ชัดเจนนัก
พอดูจากที่ถกกันใน Hacker News
อย่างแรกเลยคือนักพัฒนาคนนี้มีความเข้าใจเกี่ยวกับ React ต่ำเกินไป
รู้สึกว่าอีกไม่นานคงจะเปลี่ยนชื่อแน่ ๆ... ในบทความก็เขียนไว้เหมือนกันว่ามีโปรเจ็กต์ Electron ชื่อซ้ำกันอยู่แล้ว... จำเป็นต้องใช้ชื่อนั้นจริง ๆ เหรอ
พอเทียบโค้ดดูแล้วก็น่าจะช่วยประหยัดโทเคนได้มากทีเดียว
svelte ดีที่สุด
Svelte เจ๋งที่สุด
ดูเหมือนว่าแต่ละคนจะมีรสนิยมต่างกัน แต่สำหรับผม ผมชอบ
.map((item) => <li>)ของ JSX ที่จัดการด้วย vanilla JS มากกว่า<li for>ของ Angular, Vue ฯลฯ (รวมถึงไลบรารีพวกนี้? มาร์กอัป?)ผมก็เห็นด้วยในส่วนนี้เหมือนกัน ถ้าลอจิกที่เพิ่มเข้าไปใน HTML ไม่ใช่ vanilla แต่เป็น syntax เฉพาะของตัวเอง นั่นเป็นอุปสรรคใหญ่ แม้การทำ UI แบบง่าย ๆ จะไม่มีปัญหา แต่ถ้าลอจิกซับซ้อนขึ้น ก็จะต่างกันในแง่ความยืดหยุ่นในการพัฒนา และมองข้าม learning curve ไม่ได้