ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?
Apidog ตอบสนองทุกความต้องการของคุณ และ มาแทนที่ Postman ในราคาที่เข้าถึงได้มากกว่ามาก!
สำหรับนักพัฒนาส่วนหน้า (frontend devs) ความต้องการอินเทอร์เฟซผู้ใช้ที่สวยงาม ประสิทธิภาพสูง และปรับแต่งได้ลึกซึ้งนั้นไม่เคยมีมากเท่านี้มาก่อน นักพัฒนากำลังค้นหาเครื่องมือที่ช่วยเร่งขั้นตอนการทำงานโดยไม่ลดทอนคุณภาพหรือการควบคุมเชิงสร้างสรรค์อยู่เสมอ ในขณะที่ไลบรารีส่วนประกอบ UI แบบ monolithic ได้ให้บริการชุมชนมาอย่างดีเป็นเวลาหลายปี กระบวนทัศน์ใหม่กำลังเกิดขึ้น—กระบวนทัศน์ที่ให้ความสำคัญกับการเป็นเจ้าของของนักพัฒนา ความเป็นโมดูล และการผสานรวมกับเฟรมเวิร์กสมัยใหม่ได้อย่างราบรื่น HeroUI ได้สร้างพื้นที่เฉพาะของตนเองขึ้นภายในกระบวนทัศน์ใหม่นี้
HeroUI ไม่ใช่แค่ไลบรารีส่วนประกอบทั่วไป แต่เป็นชุดส่วนประกอบ UI ที่นำมาใช้ซ้ำได้ซึ่งได้รับการสร้างสรรค์อย่างพิถีพิถัน ออกแบบมาเพื่อผสานรวมเข้ากับโปรเจกต์ของคุณโดยตรง มันสนับสนุนปรัชญาที่ให้นักพัฒนาควบคุมโค้ดเบสของตนได้อย่างเต็มที่ แทนที่จะนำเข้าส่วนประกอบที่ไม่โปร่งใสจาก node module คุณใช้ HeroUI Command Line Interface (CLI) เพื่อเพิ่มซอร์สโค้ดจริงของส่วนประกอบที่คุณต้องการลงในโปรเจกต์ของคุณ วิวัฒนาการแบบ "คัดลอกและวาง" นี้หมายความว่าทุกปุ่ม การ์ด และกล่องโต้ตอบจะกลายเป็นส่วนหนึ่งของแอปพลิเคชันของคุณเอง พร้อมที่จะปรับแต่ง จัดสไตล์ใหม่ และปรับให้เข้ากับความต้องการเฉพาะของคุณ
สร้างขึ้นบนพื้นฐานของยักษ์ใหญ่เช่น React, Tailwind CSS และ Next.js, HeroUI มอบบล็อกอาคารสำหรับการสร้างอินเทอร์เฟซผู้ใช้ที่สวยงาม เข้าถึงได้ และตอบสนอง มันถูกออกแบบมาสำหรับนักพัฒนาสมัยใหม่ที่ให้ความสำคัญทั้งความเร็วและความเฉพาะเจาะจง โดยนำเสนอจุดเริ่มต้นที่แข็งแกร่งซึ่งไม่จำกัดคุณอยู่ในระบบการออกแบบที่ตายตัว บทความนี้จะทำหน้าที่เป็นคู่มือที่ครอบคลุมเพื่อทำความเข้าใจหลักการหลักของ HeroUI การติดตั้งในโปรเจกต์ของคุณ การปรับแต่งรูปลักษณ์และความรู้สึก และการใช้ประโยชน์จาก CLI ที่ทรงพลังเพื่อสร้างเว็บแอปพลิเคชันยุคใหม่
ส่วนที่ 1: เจาะลึก HeroUI - ปรัชญาและคุณสมบัติหลัก
ก่อนที่จะลงลึกในรายละเอียดทางเทคนิคของการติดตั้งและการใช้งาน สิ่งสำคัญคือต้องทำความเข้าใจ "ทำไม" เบื้องหลัง HeroUI มันแก้ปัญหาอะไร และอะไรที่ทำให้เป็นตัวเลือกที่น่าสนใจในตลาดเครื่องมือ UI ที่มีการแข่งขันสูง
ปรัชญา: การเป็นเจ้าของและการปรับแต่งที่ไม่ลดทอน
ความแตกต่างพื้นฐานระหว่าง HeroUI และไลบรารี UI แบบดั้งเดิม เช่น Material-UI หรือ Ant Design อยู่ที่แนวคิดของการเป็นเจ้าของ เมื่อคุณติดตั้งไลบรารีแบบดั้งเดิม คุณกำลังเพิ่ม dependency ลงใน package.json
ของคุณ แอปพลิเคชันของคุณจะนำเข้าส่วนประกอบที่คอมไพล์ไว้ล่วงหน้าจากแพ็กเกจนี้ แม้ว่าจะสะดวก แต่ก็มีข้อเสียหลายประการ:
- การปรับแต่งที่จำกัด: การ override สไตล์อาจซับซ้อน มักจะต้องต่อสู้กับสไตล์เริ่มต้นของไลบรารีด้วยแท็ก
!important
หรือการตั้งค่า theme provider ที่ซับซ้อน - ส่วนประกอบแบบกล่องดำ (Black Box Components): ตรรกะภายในของส่วนประกอบถูกซ่อนอยู่ในโฟลเดอร์
node_modules
การดีบักพฤติกรรมที่ไม่คาดคิดหรือทำความเข้าใจการทำงานภายในจะยากขึ้นอย่างมาก - Bundle Size Bloat: คุณมักจะนำเข้าไลบรารีทั้งหมด หรืออย่างน้อยก็เป็นส่วนสำคัญของมัน แม้ว่าคุณจะใช้เพียงส่วนประกอบไม่กี่ตัว ซึ่งอาจเพิ่มขนาด bundle สุดท้ายของแอปพลิเคชันของคุณ
- Dependency Hell: คุณต้องขึ้นอยู่กับวงจรการอัปเดตของไลบรารีและ dependencies ของมัน การเปลี่ยนแปลงที่ทำให้เกิด breaking change ในไลบรารีอาจบังคับให้ต้อง refactor ครั้งใหญ่ในแอปพลิเคชันของคุณ
HeroUI หลีกเลี่ยงปัญหาเหล่านี้ทั้งหมด ด้วยการให้ CLI วางซอร์สโค้ดของส่วนประกอบโดยตรงลงในไดเร็กทอรีโปรเจกต์ของคุณ (เช่น /components/ui
) มันช่วยเสริมพลังให้คุณในหลายด้านที่สำคัญ:
- คุณเป็นเจ้าของโค้ด: ส่วนประกอบนั้นเป็นของคุณแล้ว คุณสามารถเปลี่ยนโครงสร้าง สไตล์ ตรรกะ—อะไรก็ได้ ไม่มีข้อจำกัดเทียม หากคุณต้องการปุ่มที่มีแอนิเมชันเฉพาะตัวหรือโครงสร้างภายในที่แตกต่างกันเล็กน้อย คุณก็สามารถแก้ไขไฟล์ได้เลย
- ความโปร่งใสทั้งหมด: คุณสามารถอ่านโค้ดสำหรับทุกส่วนประกอบที่คุณใช้ นี่เป็นสิ่งที่มีค่าอย่างยิ่งสำหรับการเรียนรู้ การดีบัก และการทำความเข้าใจอย่างลึกซึ้งถึงวิธีการสร้างองค์ประกอบ UI ที่เข้าถึงได้และแข็งแกร่ง
- ไม่มีโค้ดที่ไม่ได้ใช้เลย: Bundle ของแอปพลิเคชันของคุณจะรวมเฉพาะโค้ดสำหรับส่วนประกอบที่คุณได้เพิ่มไว้อย่างชัดเจนเท่านั้น ไม่มีอะไรเกินนั้น
- แยกส่วนและพร้อมสำหรับอนาคต: เนื่องจากส่วนประกอบเป็นส่วนหนึ่งของโค้ดเบสของคุณ คุณจึงไม่ถูกผูกมัดกับการกำหนดเวอร์ชันของ HeroUI ในลักษณะเดียวกัน คุณสามารถอัปเดตส่วนประกอบตามกำหนดเวลาของคุณเอง หรือเลือกที่จะไม่อัปเดตเลยก็ได้
ปรัชญานี้มุ่งเป้าไปที่นักพัฒนาและทีมที่ต้องการสร้างระบบการออกแบบที่ไม่เหมือนใครสำหรับผลิตภัณฑ์ของตนโดยไม่ต้องเริ่มต้นจากศูนย์ มันมอบพื้นฐานที่เป็น primitive ที่ไม่มีสไตล์ (หรือมีสไตล์เล็กน้อย) และคุณเป็นผู้ให้เอกลักษณ์ของแบรนด์
คุณสมบัติหลักโดยสรุป
HeroUI เป็นมากกว่าแค่วิธีการติดตั้ง มันมาพร้อมกับคุณสมบัติที่ออกแบบมาสำหรับเวิร์กโฟลว์การพัฒนาที่ทันสมัย
- คอลเลกชันส่วนประกอบที่หลากหลาย: HeroUI มีชุดส่วนประกอบ UI ที่จำเป็นที่สุดอย่างครบถ้วน รวมถึงปุ่ม ฟอร์ม กล่องโต้ตอบ ดรอปดาวน์ ตารางข้อมูล และอื่นๆ ส่วนประกอบแต่ละตัวได้รับการออกแบบอย่างรอบคอบโดยคำนึงถึงการเข้าถึง (แอตทริบิวต์ ARIA) และประสบการณ์ผู้ใช้
- ขับเคลื่อนโดย Tailwind CSS: หัวใจสำคัญของความสามารถในการจัดสไตล์ของ HeroUI คือ Tailwind CSS ซึ่งเป็นเฟรมเวิร์ก CSS แบบ utility-first นี่หมายความว่าการปรับแต่งไม่ได้ทำผ่านการ override คลาส CSS แต่โดยการประกอบคลาส utility วิธีการนี้รวดเร็ว ใช้งานง่าย และช่วยรักษาระบบภาษาการออกแบบที่สอดคล้องกัน HeroUI ใช้ความสามารถในการกำหนดธีมของ Tailwind อย่างเต็มที่ ทำให้สามารถเปลี่ยนแปลงทั้งโปรเจกต์ได้ด้วยการกำหนดค่าเพียงไม่กี่บรรทัด
- การกำหนดธีมและการปรับแต่งที่ลึกซึ้ง: รูปลักษณ์และความรู้สึกทั้งหมดของส่วนประกอบสามารถควบคุมได้ผ่านการกำหนดค่าธีมส่วนกลาง ซึ่งรวมถึงสี ฟอนต์ รัศมีขอบ ระยะห่าง และอื่นๆ ทั้งหมดนี้ขับเคลื่อนโดยตัวแปร CSS ซึ่งทำให้การกำหนดธีมแบบไดนามิก เช่น การใช้งานโหมดมืด เป็นเรื่องง่ายอย่างเหลือเชื่อ
- Command Line Interface (CLI) ที่ทรงพลัง:
heroui-cli
เป็นเครื่องมือหลักของคุณสำหรับการโต้ตอบกับระบบนิเวศของ HeroUI มันจัดการการเริ่มต้นโปรเจกต์ การเพิ่มส่วนประกอบใหม่ และการตรวจสอบให้แน่ใจว่าโปรเจกต์ของคุณได้รับการกำหนดค่าอย่างถูกต้อง ช่วยประหยัดเวลาในการตั้งค่าด้วยตนเองได้หลายชั่วโมง - การผสานรวมแบบ Framework-First: HeroUI ได้รับการออกแบบมาเพื่อผสานรวมกับเฟรมเวิร์กสมัยใหม่ได้อย่างราบรื่น เอกสารประกอบให้การสนับสนุนและคำแนะนำระดับเฟิร์สคลาสสำหรับ Next.js ซึ่งแสดงให้เห็นถึงความมุ่งมั่นในการทำงานได้ดีภายในเครื่องมือยอดนิยมที่สุดของระบบนิเวศ React มันถูกสร้างขึ้นด้วย React และสามารถปรับให้เข้ากับเฟรมเวิร์กอื่นๆ ที่ใช้ React เช่น Vite หรือ Create React App
- โหมดมืดโดยค่าเริ่มต้น: โหมดมืดไม่ใช่สิ่งที่ถูกมองข้าม ระบบทั้งหมดถูกสร้างขึ้นโดยคำนึงถึงโหมดมืด โดยใช้ประโยชน์จากตัวแปร CSS และ Tailwind's
dark:
variant เพื่อให้การใช้งานเป็นเรื่องง่าย - TypeScript และ RSC Support: HeroUI เขียนด้วย TypeScript ทำให้มีความปลอดภัยของประเภทข้อมูลที่ยอดเยี่ยมตั้งแต่เริ่มต้น นอกจากนี้ยังเข้ากันได้กับ React Server Components (RSC) ซึ่งสอดคล้องกับความก้าวหน้าล่าสุดในระบบนิเวศ Next.js และ React
HeroUI เหมาะสำหรับใคร?
HeroUI เป็นตัวเลือกที่เหมาะสมสำหรับนักพัฒนาและโปรเจกต์ประเภทเฉพาะ:
- นักพัฒนาที่ต้องการควบคุม: หากคุณเคยรู้สึกหงุดหงิดกับความยืดหยุ่นของไลบรารีส่วนประกอบ HeroUI จะให้ความรู้สึกเหมือนอากาศบริสุทธิ์
- โปรเจกต์ที่มีเอกลักษณ์แบรนด์ที่แข็งแกร่งและไม่เหมือนใคร: มันมอบพื้นฐานที่สมบูรณ์แบบสำหรับการสร้างระบบการออกแบบที่กำหนดเองซึ่งไม่เหมือนเว็บไซต์อื่นๆ ทั่วไป
- สตาร์ทอัพและทีมผลิตภัณฑ์: ทีมที่ต้องการเคลื่อนไหวอย่างรวดเร็ว แต่ก็ต้องการสร้างสถาปัตยกรรมส่วนหน้าที่ปรับขนาดได้และดูแลรักษาง่าย จะพบว่า HeroUI เป็นตัวเร่งความเร็วที่ทรงพลัง
- การเรียนรู้และการพัฒนา: เนื่องจากคุณได้รับซอร์สโค้ด มันจึงเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเรียนรู้วิธีสร้างส่วนประกอบ React คุณภาพสูงและเข้าถึงได้
มันอาจไม่เหมาะสำหรับผู้เริ่มต้นอย่างแท้จริงที่ชอบโซลูชันแบบ "พร้อมใช้งานทันที" ที่มีการกำหนดค่าน้อยที่สุด พลังของ HeroUI อยู่ที่ความสามารถในการกำหนดค่า ซึ่งต้องอาศัยความเข้าใจพื้นฐานเกี่ยวกับ Tailwind CSS และสภาพแวดล้อมการพัฒนาส่วนหน้าสมัยใหม่
ส่วนที่ 2: เริ่มต้นใช้งาน - คำแนะนำโดยละเอียดเกี่ยวกับการติดตั้งและการตั้งค่า
เมื่อเราเข้าใจปรัชญาแล้ว มาลงมือปฏิบัติจริงกัน ส่วนนี้จะให้คำแนะนำทีละขั้นตอนอย่างละเอียดสำหรับการผสานรวม HeroUI เข้ากับโปรเจกต์ใหม่หรือที่มีอยู่ วิธีการที่แนะนำและมีประสิทธิภาพที่สุดคือการใช้ HeroUI CLI อย่างเป็นทางการ
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเริ่มต้น ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการพัฒนาของคุณตรงตามข้อกำหนดต่อไปนี้:
- Node.js: คุณต้องติดตั้ง Node.js เวอร์ชันล่าสุด (โดยทั่วไปคือเวอร์ชัน 18 หรือใหม่กว่า) คุณสามารถตรวจสอบเวอร์ชันของคุณได้โดยเรียกใช้
node -v
ในเทอร์มินัลของคุณ - Package Manager: คุณจะต้องมี package manager เช่น
npm
,yarn
หรือpnpm
คู่มือนี้จะใช้npx
ซึ่งรวมอยู่ในnpm
- โปรเจกต์ React Framework: HeroUI ได้รับการออกแบบมาเพื่อเพิ่มลงในโปรเจกต์ที่สร้างด้วยเฟรมเวิร์ก React คู่มือหลักเน้นที่ Next.js แต่สามารถปรับใช้กับเฟรมเวิร์กอื่น ๆ เช่น Vite หรือ Create React App ได้ เพื่อประสบการณ์ที่ดีที่สุด เราจะถือว่าคุณกำลังเริ่มต้นด้วยโปรเจกต์ Next.js ใหม่ คุณสามารถสร้างได้ด้วยคำสั่ง: Bash
npx create-next-app@latest my-heroui-app
ในระหว่างการตั้งค่า Next.js ขอแนะนำให้เลือก TypeScript และ Tailwind CSS เนื่องจากสิ่งเหล่านี้เป็นพื้นฐานสำหรับระบบนิเวศของ HeroUI
คำสั่ง `init` ของ HeroUI CLI: จุดเริ่มต้นของคุณ
คำสั่ง init
เป็นจุดเริ่มต้นที่มหัศจรรย์เข้าสู่โลกของ HeroUI มันจะตรวจสอบโปรเจกต์ของคุณอย่างชาญฉลาด ถามคำถามหลายข้อ แล้วกำหนดค่าทุกอย่างที่คุณต้องการโดยอัตโนมัติ
นำทางไปยังไดเร็กทอรีโปรเจกต์ของคุณ:Bash
cd my-heroui-app
ตอนนี้ รันคำสั่งเริ่มต้น:Bash
npx heroui-cli@latest init
CLI จะนำคุณเข้าสู่กระบวนการตั้งค่า มาดูรายละเอียดคำถามแต่ละข้อที่มันถามและความหมายของตัวเลือกของคุณ
1. "Which style would you like to use?"
- ตัวเลือก:
Default
,New York
- คำอธิบาย: ตัวเลือกนี้กำหนดสุนทรียภาพพื้นฐานของส่วนประกอบ
Default
เป็นสไตล์ที่ทันสมัยและเรียบง่ายกว่า ในขณะที่New York
ให้รูปลักษณ์ที่ดูเป็นทางการและดั้งเดิมกว่าเล็กน้อย ตัวเลือกนี้มีผลหลักต่อสไตล์เริ่มต้น เช่น รัศมีขอบและระยะห่าง ที่ CLI จะตั้งค่า คุณไม่ได้ถูกผูกมัดกับตัวเลือกนี้ มันเป็นเพียงจุดเริ่มต้นที่สามารถปรับแต่งได้อย่างเต็มที่ในภายหลัง สำหรับการเริ่มต้นที่สะอาดตาDefault
มักเป็นตัวเลือกที่ดี
2. "Which color would you like to use as a base color?"
- ตัวเลือก:
Slate
,Gray
,Zinc
,Neutral
,Stone
- คำอธิบาย: ระบบสีทั้งหมดของ HeroUI ใช้เฉดสีกลางเป็นพื้นฐาน ตัวเลือกนี้กำหนดพาเล็ตหลักสำหรับพื้นหลัง ข้อความ ขอบ และสถานะของส่วนประกอบ ตัวอย่างเช่น การเลือก
Slate
จะทำให้ UI ของคุณมีโทนสีเทาอมฟ้าที่เย็นตา ในขณะที่Stone
จะให้ความรู้สึกที่อบอุ่นและเป็นธรรมชาติมากขึ้น CLI จะสร้างสเปกตรัมเต็มรูปแบบของตัวแปร CSS โดยอัตโนมัติตามที่คุณเลือก
3. "Where is your global CSS file?"
- ค่าเริ่มต้น:
app/globals.css
(สำหรับ Next.js App Router) หรือstyles/globals.css
(สำหรับ Pages Router) - คำอธิบาย: CLI จำเป็นต้องรู้ว่าจะฉีดตัวแปร CSS หลักและคำสั่ง Tailwind ไว้ที่ใด โดยปกติแล้วมันจะฉลาดพอที่จะตรวจจับพาธที่ถูกต้องในโปรเจกต์ Next.js มาตรฐาน คุณควรเปลี่ยนเฉพาะในกรณีที่คุณมีโครงสร้างโปรเจกต์ที่ไม่เป็นมาตรฐาน
4. "Do you want to use CSS variables for colors?"
- ค่าเริ่มต้น:
Yes
- คำอธิบาย: คุณควรตอบว่า ใช่ เกือบทุกครั้ง การใช้ตัวแปร CSS เป็นรากฐานสำคัญของระบบการกำหนดธีมของ HeroUI มันช่วยให้คุณกำหนดพาเล็ตสีของคุณในที่เดียว (
globals.css
) และให้มันนำไปใช้กับทุกที่โดยอัตโนมัติ ที่สำคัญกว่านั้น มันคือสิ่งที่ทำให้คุณสมบัติแบบไดนามิกเช่นโหมดมืดเป็นไปได้
5. "Where is your tailwind.config.js
file?"
- ค่าเริ่มต้น:
tailwind.config.js
- คำอธิบาย: CLI จำเป็นต้องแก้ไขการกำหนดค่า Tailwind ของคุณเพื่อรวมค่าที่ตั้งไว้ล่วงหน้าและปลั๊กอินของ HeroUI อีกครั้ง มันควรจะตรวจจับสิ่งนี้ได้โดยอัตโนมัติ
6. "Configure import alias for components:"
- ค่าเริ่มต้น:
@/components
- คำอธิบาย: Path aliases เป็นแนวทางปฏิบัติที่ดีที่สุดสำหรับการ import ที่สะอาดตา แทนที่จะเขียน
import { Button } from '../../../components/ui/button'
คุณสามารถเขียนimport { Button } from '@/components/ui/button'
ได้ CLI จำเป็นต้องรู้ว่าคุณต้องการใช้ alias ใดสำหรับส่วนประกอบ เพื่อให้สามารถกำหนดค่าในtsconfig.json
(หรือjsconfig.json
) ของคุณได้ ค่าเริ่มต้น@/components
เป็นตัวเลือกที่สมเหตุสมผล
7. "Configure import alias for utils:"
- ค่าเริ่มต้น:
@/lib/utils
- คำอธิบาย: HeroUI อาศัยฟังก์ชันยูทิลิตี้บางอย่าง โดยเฉพาะฟังก์ชันสำหรับรวมคลาส Tailwind แบบมีเงื่อนไข (มักเรียกว่า
cn
) CLI จะสร้างไฟล์ยูทิลิตี้นี้ให้คุณ และจำเป็นต้องรู้ว่าจะวางไว้ที่ใดและใช้ alias ใด ค่าเริ่มต้น@/lib/utils
เป็นมาตรฐาน
8. "Are you using React Server Components?"
- ค่าเริ่มต้น: มันจะตรวจจับอัตโนมัติตามเวอร์ชันและการตั้งค่า Next.js ของคุณ
- คำอธิบาย: นี่เป็นสิ่งสำคัญสำหรับแอปพลิเคชัน Next.js สมัยใหม่ที่ใช้ App Router การตอบว่า
Yes
ทำให้แน่ใจว่าส่วนประกอบที่เพิ่มโดย CLI มีคำสั่ง"use client"
ที่จำเป็น คำสั่งนี้จะทำเครื่องหมายส่วนประกอบที่ต้องการการโต้ตอบฝั่งไคลเอนต์ (เช่น การจัดการเหตุการณ์onClick
หรือการใช้ hooks เช่นuseState
) ทำให้เข้ากันได้กับ React Server Components
เมื่อคุณตอบคำถามทั้งหมดแล้ว CLI จะดำเนินการตามความมหัศจรรย์ มันจะ:
- ติดตั้ง dependencies ที่จำเป็น (
tailwindcss-animate
,class-variance-authority
,lucide-react
, ฯลฯ) - สร้างไฟล์
components.json
ใน root ของโปรเจกต์ของคุณ - แก้ไขไฟล์
tailwind.config.js
ของคุณด้วยการตั้งค่าธีมที่ถูกต้อง - เติมไฟล์
globals.css
ของคุณด้วยสไตล์พื้นฐานและตัวแปร CSS ทั้งหมดสำหรับธีมสีที่คุณเลือก - อัปเดตไฟล์
tsconfig.json
หรือjsconfig.json
ของคุณด้วย path aliases ที่คุณกำหนดค่าไว้ - สร้างไฟล์
lib/utils.ts
พร้อมฟังก์ชันยูทิลิตี้cn
โปรเจกต์ของคุณได้รับการกำหนดค่าอย่างสมบูรณ์และพร้อมสำหรับ HeroUI แล้ว
โครงสร้างของการเปลี่ยนแปลง
มาดูไฟล์หลักที่ CLI ได้แก้ไขหรือสร้างขึ้นอย่างใกล้ชิด
components.json
ไฟล์นี้เป็น manifest สำหรับ HeroUI ภายในโปรเจกต์ของคุณ มันเก็บตัวเลือกที่คุณทำระหว่างกระบวนการ init
และบอก CLI ว่าโปรเจกต์ของคุณได้รับการกำหนดค่าอย่างไรJSON
{
"style": "default",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "app/globals.css",
"baseColor": "slate",
"cssVariables": true
},
"aliases": {
"utils": "@/lib/utils",
"components": "@/components"
}
}
คุณแทบจะไม่จำเป็นต้องแก้ไขไฟล์นี้ด้วยตนเอง แต่มันมีประโยชน์ที่จะเข้าใจวัตถุประสงค์ของมัน มันคือสมองเบื้องหลังการทำงานของ CLI
tailwind.config.js
การกำหนดค่า Tailwind ของคุณจะถูกขยายให้มีลักษณะเช่นนี้ การเพิ่มเติมที่สำคัญคือส่วนขยาย theme
และปลั๊กอิน tailwindcss-animate
JavaScript
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: ["class"],
content: [
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
],
theme: {
container: {
center: true,
padding: "2rem",
screens: {
"2xl": "1400px",
},
},
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
// ... and many more color definitions linked to CSS variables
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
// ...
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
keyframes: {
// ... keyframes for animations
},
animation: {
// ... animation utilities
},
},
},
plugins: [require("tailwindcss-animate")],
}
สังเกตว่าสีเช่น primary
ไม่ได้ถูกกำหนดด้วยรหัส hex แต่ด้วย hsl(var(--primary))
นี่บอกให้ Tailwind ใช้ตัวแปร CSS ชื่อ --primary
ซึ่งถูกกำหนดไว้ใน global CSS ของคุณ
app/globals.css
ไฟล์นี้คือหัวใจสำคัญของธีมระบบการออกแบบของคุณ มันจะประกอบด้วยคำสั่ง Tailwind พื้นฐานและบล็อกขนาดใหญ่ของตัวแปร CSSCSS
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
/* ... many more variables for the light theme */
--radius: 0.5rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
/* ... many more variables for the dark theme */
}
}
ที่นี่คุณจะเห็นพลังของการตั้งค่านี้ สีทั้งหมดของธีมสว่างของคุณถูกกำหนดในขอบเขต :root
และสีทั้งหมดของธีมมืดของคุณถูกกำหนดภายในขอบเขตคลาส .dark
เมื่อคลาส .dark
ถูกเพิ่มไปยังองค์ประกอบ <html>
เบราว์เซอร์จะใช้ตัวแปรธีมมืดโดยอัตโนมัติ
ส่วนที่ 3: การปรับแต่งขั้นสูง - การกำหนดธีม, เลย์เอาต์, และโหมดมืด
เมื่อ HeroUI ถูกเริ่มต้นแล้ว ความสนุกที่แท้จริงก็เริ่มต้นขึ้น: การทำให้เป็นของคุณเอง สถาปัตยกรรมได้รับการออกแบบมาอย่างชัดเจนสำหรับการปรับแต่งที่ลึกซึ้งและใช้งานง่าย
ศิลปะแห่งการกำหนดธีมด้วยตัวแปร CSS
การกำหนดธีมใน HeroUI แตกต่างจากออบเจกต์ธีมที่ใช้ JavaScript ที่ซับซ้อนที่คุณอาจพบในไลบรารีอื่น ๆ มันง่ายกว่า ทรงพลังกว่า และใช้ประโยชน์จากคุณสมบัติ CSS สมัยใหม่ ธีมทั้งหมด—สี รัศมีขอบ ฟอนต์—ถูกควบคุมโดยตัวแปร CSS ที่กำหนดไว้ในไฟล์ globals.css
ของคุณ
การเปลี่ยนสี
สมมติว่าคุณต้องการเปลี่ยนสีแบรนด์หลักของคุณ คุณไม่จำเป็นต้องเข้าไปในการกำหนดค่า Tailwind คุณเพียงแค่ค้นหาตัวแปร CSS ที่เกี่ยวข้องใน globals.css
และเปลี่ยนค่าของมัน
สีถูกกำหนดโดยใช้ค่า HSL (Hue, Saturation, Lightness) แต่ไม่มี wrapper hsl()
ตัวอย่างเช่น:CSS
:root {
/* ... */
--primary: 221.2 83.2% 53.3%;
--primary-foreground: 210 40% 98%;
/* ... */
}
.dark {
/* ... */
--primary: 217.2 91.2% 59.8%;
--primary-foreground: 210 40% 98%;
/* ... */
}
หากต้องการเปลี่ยนสีหลักของคุณเป็นสีเขียวสดใส คุณสามารถใช้เครื่องมือเลือกสีออนไลน์เพื่อค้นหาค่า HSL สำหรับเฉดสีที่คุณเลือกและอัปเดตตัวแปร:CSS
/* In globals.css */
:root {
/* ... */
--primary: 142.1 76.2% 36.3%; /* New Green Primary Color */
--primary-foreground: 355.7 100% 97.3%; /* A contrasting light color for text on the primary color */
/* ... */
}
.dark {
/* ... */
--primary: 142.1 70.2% 46.3%; /* A slightly different green for dark mode */
--primary-foreground: 355.7 100% 97.3%;
/* ... */
}
เมื่อคุณบันทึกไฟล์นี้ ส่วนประกอบทุกตัวที่ใช้สี "primary" (เช่น <Button>
) จะอัปเดตทันทีทั่วทั้งแอปพลิเคชันของคุณเพื่อสะท้อนสีเขียวใหม่นี้ นี่เป็นสิ่งที่มีพลังอย่างเหลือเชื่อ
การเปลี่ยนรัศมีขอบ (Border Radius)
ความโค้งของมุมบนส่วนประกอบเช่นการ์ดและอินพุตถูกควบคุมโดยตัวแปร CSS ตัวเดียว: --radius
CSS
/* In globals.css */
:root {
/* ... */
--radius: 0.5rem; /* The default value */
}
หากคุณต้องการรูปลักษณ์ที่คมชัดและเป็นเหลี่ยมมากขึ้น คุณสามารถลดค่านี้ได้:CSS
:root {
--radius: 0.25rem; /* Less rounded */
}
หรือสำหรับสุนทรียภาพที่นุ่มนวลและโค้งมนมาก คุณสามารถเพิ่มค่าได้:CSS
:root {
--radius: 1.5rem; /* Very rounded */
}
การเปลี่ยนแปลงเพียงบรรทัดเดียวนี้จะส่งผลต่อเนื่องไปยังส่วนประกอบทั้งหมดของคุณ ทำให้มั่นใจได้ว่ารัศมีขอบจะสอดคล้องกันทั่วทั้ง UI ของคุณ
การเพิ่มสีใหม่
คุณไม่ได้ถูกจำกัดอยู่แค่สีที่ได้รับจากคำสั่ง init
คุณสามารถเพิ่มสีเชิงความหมายของคุณเองได้อย่างง่ายดาย ตัวอย่างเช่น มาเพิ่มสีแบรนด์ "พิเศษ" กัน
กำหนดตัวแปร CSS ใน globals.css
:CSS
/* In globals.css */
:root {
/* ... */
--special: 320 86% 59%;
--special-foreground: 330 100% 98%;
}
.dark {
/* ... */
--special: 320 80% 69%;
--special-foreground: 330 100% 98%;
}
เปิดเผยให้ Tailwind ใน tailwind.config.js
:JavaScript
// In tailwind.config.js
// ...
extend: {
colors: {
// ...
special: {
DEFAULT: "hsl(var(--special))",
foreground: "hsl(var(--special-foreground))",
},
},
},
// ...
ตอนนี้คุณสามารถใช้สีเหล่านี้ในส่วนประกอบของคุณด้วยคลาส utility ของ Tailwind เช่น bg-special
และ text-special-foreground
การสร้างเลย์เอาต์ที่ตอบสนอง
ส่วนประกอบ HeroUI สร้างขึ้นด้วย Tailwind CSS ซึ่งหมายความว่ามันตอบสนองโดยธรรมชาติ คุณสามารถใช้ responsive prefixes ของ Tailwind (sm:
, md:
, lg:
, xl:
) บนคลาส utility ใดก็ได้เพื่อเปลี่ยนสไตล์ของส่วนประกอบในขนาดหน้าจอที่แตกต่างกัน
ลองจินตนาการถึงการสร้างเลย์เอาต์หน้าเว็บง่ายๆ ที่มีแถบด้านข้างซึ่งมองเห็นได้บนเดสก์ท็อป แต่จะยุบตัวลงบนมือถือ ในขณะที่ HeroUI มีส่วนประกอบระดับต่ำ (Card
, Button
) คุณมีหน้าที่ในการประกอบส่วนประกอบเหล่านั้นเข้าด้วยกันเป็นเลย์เอาต์ที่ใหญ่ขึ้น
นี่คือตัวอย่างวิธีการจัดโครงสร้างนี้ในส่วนประกอบหน้า Next.js:TypeScript
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
export default function DashboardPage() {
return (
<div className="flex min-h-screen flex-col md:flex-row">
{/* Sidebar */}
<aside className="w-full border-b bg-muted p-4 md:w-64 md:border-b-0 md:border-r">
<h2 className="text-lg font-semibold">Navigation</h2>
<nav className="mt-4 flex flex-row space-x-2 md:flex-col md:space-x-0 md:space-y-2">
<Button variant="ghost" className="justify-start">Dashboard</Button>
<Button variant="ghost" className="justify-start">Settings</Button>
<Button variant="ghost" className="justify-start">Profile</Button>
</nav>
</aside>
{/* Main Content */}
<main className="flex-1 p-8">
<h1 className="text-4xl font-bold tracking-tight">Dashboard</h1>
<p className="mt-2 text-muted-foreground">
Welcome to your dashboard.
</p>
<div className="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<Card>
<CardHeader>
<CardTitle>Revenue</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">$45,231.89</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Subscriptions</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">+2350</p>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Active Users</CardTitle>
</CardHeader>
<CardContent>
<p className="text-3xl font-bold">+573</p>
</CardContent>
</Card>
</div>
</main>
</div>
);
}
ในตัวอย่างนี้:
- คอนเทนเนอร์หลักเป็นคอนเทนเนอร์
flex
บนมือถือ (flex-col
) แถบด้านข้างจะอยู่ด้านบน บนหน้าจอขนาดกลางขึ้นไป (md:flex-row
) มันจะเปลี่ยนเป็นเลย์เอาต์แบบเคียงข้างกัน aside
มีความกว้างเต็มบนมือถือ (w-full
) แต่มีความกว้างคงที่บนเดสก์ท็อป (md:w-64
)- พื้นที่เนื้อหาหลักใช้เลย์เอาต์
grid
ที่ปรับจำนวนคอลัมน์ตามขนาดหน้าจอ (sm:grid-cols-2
,lg:grid-cols-3
)
สิ่งนี้แสดงให้เห็นถึงหลักการสำคัญ: HeroUI มอบ primitive ที่มีการจัดสไตล์ (Card
, Button
) และคุณใช้พลังทั้งหมดของ Tailwind CSS เพื่อจัดเรียงพวกมันให้เป็นเลย์เอาต์ที่ซับซ้อนและตอบสนอง
การใช้งานโหมดมืดที่สมบูรณ์แบบ
หนึ่งในคุณสมบัติที่สง่างามที่สุดของ HeroUI คือการรองรับโหมดมืดในตัว เนื่องจากคำสั่ง init
ได้ตั้งค่าตัวแปรสีสำหรับทั้งธีมสว่าง (:root
) และธีมมืด (.dark
) ไว้แล้ว การใช้งานจึงง่ายอย่างน่าประหลาดใจ
แนวทางที่พบบ่อยที่สุดคือการใช้แพ็กเกจ next-themes
ซึ่งจัดการการสลับธีมและคงการเลือกของผู้ใช้ไว้ใน local storage
ติดตั้ง next-themes
:Bash
npm install next-themes
สร้าง Theme Provider:
สร้างไฟล์ใหม่ เช่น ที่ components/theme-provider.tsxTypeScript
"use client";
import * as React from "react";
import { ThemeProvider as NextThemesProvider } from "next-themes";
import { type ThemeProviderProps } from "next-themes/dist/types";
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
}
ห่อ Root Layout ของคุณด้วย Provider:
ใน root layout ของ Next.js ของคุณ (app/layout.tsx) นำเข้าและใช้ ThemeProviderTypeScript
import { ThemeProvider } from "@/components/theme-provider";
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
<body className={inter.className}>
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
{children}
</ThemeProvider>
</body>
</html>
);
}
props ที่สำคัญในที่นี้คือ:
attribute="class"
: บอกnext-themes
ให้สลับธีมโดยการเพิ่ม/ลบคลาสไปยังองค์ประกอบ<html>
defaultTheme="system"
: ตั้งค่าธีมโดยอัตโนมัติตามการตั้งค่าระบบปฏิบัติการของผู้ใช้enableSystem
: เปิดใช้งานตัวเลือกธีม "system"
สร้างปุ่มสลับธีม:
ตอนนี้ คุณเพียงแค่ต้องการองค์ประกอบ UI เพื่อให้ผู้ใช้สามารถสลับธีมได้TypeScript
"use client";
import * as React from "react";
import { Moon, Sun } from "lucide-react";
import { useTheme } from "next-themes";
import { Button } from "@/components/ui/button";
export function ModeToggle() {
const { setTheme, theme } = useTheme();
const toggleTheme = () => {
setTheme(theme === "light" ? "dark" : "light");
};
return (
<Button variant="outline" size="icon" onClick={toggleTheme}>
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
<span className="sr-only">Toggle theme</span>
</Button>
);
}
ส่วนประกอบนี้1 ใช้ hook useTheme
จาก next-themes
เพื่อตรวจสอบธีมปัจจุบันและตั้งค่าธีมใหม่ ไอคอนพระอาทิตย์และพระจันทร์ที่หมุนได้ให้การเปลี่ยนภาพที่สวยงาม เพียงแค่วางส่วนประกอบ <ModeToggle />
นี้ไว้ที่ใดที่หนึ่งใน UI ของคุณ (เช่น ในส่วนหัว) และคุณก็จะมีปุ่มสลับโหมดมืดที่ทำงานได้อย่างสมบูรณ์และคงอยู่
ส่วนที่ 4: HeroUI CLI และเวิร์กโฟลว์ที่เน้นส่วนประกอบ
heroui-cli
เป็นมากกว่าแค่โปรแกรมติดตั้ง มันเป็นเครื่องมือหลักที่คุณจะใช้ในการจัดการและขยายไลบรารีส่วนประกอบของคุณ วัตถุประสงค์หลักหลังจากเริ่มต้นคือการเพิ่มส่วนประกอบใหม่เข้าในโปรเจกต์ของคุณ
การเพิ่มส่วนประกอบ: เวิร์กโฟลว์หลัก
สมมติว่าคุณต้องการ modal dialog สำหรับแอปพลิเคชันของคุณ แทนที่จะเขียนเองตั้งแต่ต้น คุณสามารถขอให้ CLI เพิ่มส่วนประกอบ Dialog
ที่ HeroUI สร้างไว้ล่วงหน้าและเข้าถึงได้
คำสั่งนั้นง่ายมาก:Bash
npx heroui-cli@latest add dialog
CLI จะดำเนินการดังต่อไปนี้:
- มันจะอ่านไฟล์
components.json
ของคุณเพื่อทำความเข้าใจโครงสร้างโปรเจกต์ของคุณ (path aliases, การใช้ TypeScript ฯลฯ) - มันจะดึงซอร์สโค้ดล่าสุดสำหรับส่วนประกอบ
Dialog
และ dependencies ใดๆ ของมัน (เช่นDialog
อาจขึ้นอยู่กับButton
) - มันจะวางไฟล์ส่วนประกอบโดยตรงในไดเร็กทอรีส่วนประกอบของคุณ เช่น:
components/ui/dialog.tsx
- มันจะแจ้งให้คุณทราบเกี่ยวกับ dependencies อื่นๆ ที่คุณอาจต้องติดตั้ง
ตอนนี้ คุณมีไฟล์ dialog.tsx
ในโปรเจกต์ของคุณ คุณสามารถตรวจสอบโค้ด เรียนรู้จากมัน และแม้กระทั่งแก้ไขมัน หาก Dialog
เริ่มต้นมี transition ที่คุณไม่ชอบ คุณสามารถเปิดไฟล์และเปลี่ยนคลาส Tailwind ที่ควบคุมแอนิเมชันได้ การควบคุมระดับนี้เป็นรากฐานสำคัญของประสบการณ์ HeroUI
คุณสามารถเพิ่มส่วนประกอบหลายรายการพร้อมกันได้:Bash
npx heroui-cli@latest add card button input label
คำสั่งนี้จะเพิ่มส่วนประกอบทั้งสี่ตัวและ dependencies ของพวกมันเข้าในโปรเจกต์ของคุณในครั้งเดียว
ทำความเข้าใจ CLI API: components.json
ไฟล์ components.json
เป็นสัญญาผูกมัดระหว่างโปรเจกต์ของคุณและ HeroUI CLI มาทบทวนคุณสมบัติของมันเพื่อทำความเข้าใจว่ามันมีอิทธิพลต่อพฤติกรรมของ CLI อย่างไร
style
: เตือน CLI ว่าควรใช้สไตล์พื้นฐานใด (default
หรือnew-york
) เมื่อดึงโค้ดส่วนประกอบ เพื่อให้มั่นใจถึงความสอดคล้องของสไตล์rsc
: กำหนดว่า CLI ควรเพิ่มคำสั่ง"use client"
ให้กับส่วนประกอบหรือไม่ นี่เป็นสิ่งสำคัญสำหรับการเข้ากันได้กับ Next.js App Routertsx
: บอก CLI ว่าจะดึงไฟล์ส่วนประกอบเวอร์ชัน TypeScript (.tsx
) หรือ JavaScript (.jsx
)tailwind
:config
: พาธไปยังไฟล์tailwind.config.js
ของคุณ CLI อาจต้องการสิ่งนี้สำหรับการอัปเดตหรือการวิเคราะห์ในอนาคตcss
: พาธไปยังไฟล์ CSS ทั่วโลกของคุณที่เก็บตัวแปรไว้baseColor
: พาเล็ตสีกลางที่คุณเลือกในระหว่างinit
cssVariables
: ยืนยันว่าโปรเจกต์ของคุณถูกตั้งค่าให้ใช้ตัวแปร CSS สำหรับการกำหนดธีมaliases
:utils
: กำหนด import path สำหรับ utilities ที่ใช้ร่วมกัน เช่น ฟังก์ชันcn
เมื่อ CLI เพิ่มส่วนประกอบที่ต้องการ utility นี้ มันจะใช้ alias นี้ในคำสั่ง importcomponents
: กำหนด import path สำหรับส่วนประกอบ UI เอง สิ่งนี้ช่วยให้ส่วนประกอบสามารถ import ส่วนประกอบอื่น ๆ ได้ (เช่นDialog
อาจ importButton
) โดยใช้พาธที่สะอาดและสอดคล้องกัน
ด้วยการทำความเข้าใจการกำหนดค่านี้ คุณยังสามารถปรับพฤติกรรมของ CLI ด้วยตนเองได้ หากคุณตัดสินใจที่จะ refactor โครงสร้างโปรเจกต์ของคุณ ตัวอย่างเช่น โดยการย้ายไดเร็กทอรีส่วนประกอบของคุณจาก @/components
ไปยัง @/ui
บทสรุป: สร้างในแบบของคุณด้วย HeroUI
HeroUI แสดงถึงการเปลี่ยนแปลงที่สำคัญในวิธีที่นักพัฒนาสามารถคิดและใช้ไลบรารี UI มันก้าวออกจากโมเดลแบบสำเร็จรูป กล่องดำ และมุ่งสู่ประสบการณ์นักพัฒนาที่โปร่งใส เสริมพลัง และปรับแต่งได้อย่างลึกซึ้ง ด้วยการนำเสนอส่วนประกอบที่ไม่มีสไตล์และเข้าถึงได้โดยตรงในรูปแบบซอร์สโค้ด มันสร้างความสมดุลที่สมบูรณ์แบบระหว่างการพัฒนาที่รวดเร็วและการออกแบบที่กำหนดเอง
จุดแข็งหลักของ HeroUI นั้นชัดเจน:
- การเป็นเจ้าของอย่างเต็มที่: ส่วนประกอบคือโค้ดของคุณ คุณสามารถแก้ไข ขยาย และปรับเปลี่ยนได้โดยไม่มีข้อจำกัด
- การปรับแต่งที่ลึกซึ้ง: ระบบการกำหนดธีมที่ทรงพลังซึ่งใช้ตัวแปร CSS ทำให้ง่ายต่อการเปลี่ยนสี ระยะห่าง และรัศมีทั่วทั้งแอปพลิเคชันของคุณ
- สถาปัตยกรรมสมัยใหม่: สร้างขึ้นด้วย TypeScript, Tailwind CSS และการรองรับระดับเฟิร์สคลาสสำหรับ Next.js และ React Server Components มันเป็นเครื่องมือที่ออกแบบมาเพื่ออนาคตของการพัฒนาเว็บ
- เครื่องมือที่ใช้งานง่ายสำหรับนักพัฒนา: CLI ที่ชาญฉลาดช่วยให้กระบวนการตั้งค่าที่น่าเบื่อเป็นไปโดยอัตโนมัติ และทำให้การเพิ่มส่วนประกอบใหม่เป็นประสบการณ์ที่ราบรื่น
HeroUI เหมาะสำหรับนักสร้างสรรค์ ช่างฝีมือ และทีมที่เชื่อว่าอินเทอร์เฟซผู้ใช้เป็นส่วนสำคัญของเอกลักษณ์ผลิตภัณฑ์ของตน มันไม่ได้ให้บ้านสำเร็จรูปแก่คุณ แต่มอบวัสดุคุณภาพสูงสุดและเวิร์กช็อปที่จัดระเบียบอย่างสมบูรณ์แบบเพื่อสร้างบ้านในฝันของคุณ สำหรับโปรเจกต์ถัดไปของคุณที่ต้องการส่วนหน้าที่ไม่เหมือนใคร ขัดเกลา และดูแลรักษาง่าย ไม่ต้องมองหาที่ไหนไกลนอกจาก HeroUI มันอาจเป็นเครื่องมือที่ช่วยให้คุณสร้าง UI ที่ยอดเยี่ยมที่สุดของคุณได้
ต้องการแพลตฟอร์มแบบครบวงจรสำหรับทีมพัฒนาของคุณเพื่อทำงานร่วมกันด้วย ประสิทธิภาพสูงสุด หรือไม่?
Apidog ตอบสนองทุกความต้องการของคุณ และ มาแทนที่ Postman ในราคาที่เข้าถึงได้มากกว่ามาก!