การจัดทำเอกสารคอมโพเนนต์
คู่มือนี้ให้คำแนะนำที่ครอบคลุมในการจัดทำเอกสารคอมโพเนนต์สำหรับ Sprout Design System รวมถึงการสร้างหน้าเอกสารใหม่ การจัดโครงสร้างเนื้อหาด้วยตัวอย่าง API documentation และแนวทางปฏิบัติที่ดีที่สุด มันเน้นความสำคัญของการจัดระเบียบ ตัวอย่างที่ชัดเจน และเอกสาร API ที่ละเอียด
การตั้งค่า VitePress
เอกสารของเราใช้ VitePress ตรวจสอบให้แน่ใจว่าคุณตรงตามข้อกำหนดเบื้องต้น:
- Node.js เวอร์ชัน 18 หรือสูงกว่า
- ตัวแก้ไขข้อความที่มีการรองรับ Markdown (แนะนำ VSCode)
- ความรู้พื้นฐานเกี่ยวกับ Markdown และ Vue
โครงสร้างไฟล์
docs/
├─ .vitepress/
│ └─ config.ts # การกำหนดค่า VitePress
├─ guide/
│ ├─ basics/ # คู่มือพื้นฐาน
│ └─ contributing/ # คู่มือการมีส่วนร่วม
└─ documentation/
└─ components/ # เอกสารคอมโพเนนต์โครงสร้างหน้า
หน้าเอกสารทั่วไปประกอบด้วย:
- Frontmatter ที่มี outline, title และ description
- คำอธิบายคอมโพเนนต์และวัตถุประสงค์
- การใช้งานพื้นฐานพร้อมการสาธิตสด
- ตัวอย่างต่างๆ ที่แสดง variants และ props ของคอมโพเนนต์
- API reference พร้อมตารางสำหรับ props, events และ slots
- ส่วนการใช้งานในผลิตภัณฑ์ที่แสดงว่าคอมโพเนนต์ถูกใช้ที่ไหน
- การนำเข้าคอมโพเนนต์ในส่วน script setup
โครงสร้างหน้าพื้นฐาน
---
outline: 'deep'
title: คอมโพเนนต์ของคุณ
description: คำอธิบายโดยละเอียดว่าคอมโพเนนต์ทำอะไร จุดประสงค์ และเมื่อควรใช้
---
# คอมโพเนนต์ของคุณ
คำอธิบายที่ครอบคลุมว่าคอมโพเนนต์ทำอะไร จุดประสงค์ และกรณีการใช้งาน
## การใช้งานพื้นฐาน
<div class="spr-flex spr-items-center spr-gap-2">
<spr-your-component>ตัวอย่าง</spr-your-component>
</div>
```vue
<spr-your-component>ตัวอย่าง</spr-your-component>
```ตัวอย่าง Variants/Props
<spr-your-component variant="primary">หลัก</spr-your-component>
<spr-your-component variant="secondary">รอง</spr-your-component>API Reference
Props
| ชื่อ | คำอธิบาย | ประเภท | ค่าเริ่มต้น |
|---|---|---|---|
| variant | ควบคุมสไตล์ภาพของคอมโพเนนต์ | 'primary' | 'secondary' | 'primary' |
สำหรับตัวอย่างที่สมบูรณ์ โปรดดู เอกสาร Button
การสร้างหน้าใหม่
- สร้างไฟล์
.mdใหม่ในไดเรกทอรีที่เหมาะสม:
docs/
├── documentation/
│ ├── components/
│ │ └── your-component.md- เพิ่ม frontmatter ที่มี title, description และการตั้งค่า outline:
---
outline: 'deep'
title: คอมโพเนนต์ของคุณ
description: คำอธิบายโดยละเอียดว่าคอมโพเนนต์ทำอะไรและเมื่อควรใช้
---- เพิ่มหน้าลงในการกำหนดค่า VitePress:
// docs/.vitepress/config.ts
sidebar: {
'/documentation/': [
{
text: 'คอมโพเนนต์',
items: [
// ... รายการที่มีอยู่
{
text: 'คอมโพเนนต์ของคุณ',
link: '/documentation/components/your-component',
},
],
},
],
}ส่วนของหน้า
ใช้ Markdown Syntax ของ VitePress สำหรับการจัดรูปแบบที่สวยงามและมีประสิทธิภาพ
1. ชื่อและคำอธิบาย
---
outline: 'deep'
title: คอมโพเนนต์ของคุณ
description: คำอธิบายโดยละเอียดว่าคอมโพเนนต์ทำอะไร จุดประสงค์ และเมื่อควรใช้
---
# คอมโพเนนต์ของคุณ
คำอธิบายที่ครอบคลุมว่าคอมโพเนนต์ทำอะไร จุดประสงค์ และเมื่อควรใช้ สิ่งนี้ควรให้บริบทสำหรับนักพัฒนาและนักออกแบบเพื่อทำความเข้าใจเมื่อและวิธีการใช้คอมโพเนนต์2. การใช้งานพื้นฐาน
## การใช้งานพื้นฐาน
<div class="spr-flex spr-items-center spr-gap-2">
<spr-your-component>ตัวอย่างพื้นฐาน</spr-your-component>
</div>
```vue
<spr-your-component>ตัวอย่างพื้นฐาน</spr-your-component>
```3. Variants และ Props
แสดง variants, props และการกำหนดค่าต่างๆ พร้อมตัวอย่างภาพและโค้ด snippets:
## ขนาด
<div class="spr-flex spr-items-center spr-gap-2">
<spr-your-component size="small">เล็ก</spr-your-component>
<spr-your-component>กลาง</spr-your-component>
<spr-your-component size="large">ใหญ่</spr-your-component>
</div>
```vue
<spr-your-component size="small">เล็ก</spr-your-component>
<spr-your-component>กลาง</spr-your-component>
<spr-your-component size="large">ใหญ่</spr-your-component>
```4. API Reference
จัดทำเอกสาร API ของคอมโพเนนต์ในรูปแบบที่มีโครงสร้างโดยใช้ตาราง:
## API Reference
### Props
<table>
<thead>
<tr>
<th>ชื่อ</th>
<th>คำอธิบาย</th>
<th>ประเภท</th>
<th>ค่าเริ่มต้น</th>
</tr>
</thead>
<tbody>
<tr>
<td>size</td>
<td>ควบคุมขนาดคอมโพเนนต์ มีผลต่อ padding, ขนาดฟอนต์ และมิติโดยรวม</td>
<td>'small' | 'medium' | 'large'</td>
<td>'medium'</td>
</tr>
<tr>
<td>disabled</td>
<td>เมื่อ <code>true</code> ป้องกันการโต้ตอบของผู้ใช้และใช้สถานะภาพที่ปิดใช้งาน</td>
<td>boolean</td>
<td>false</td>
</tr>
</tbody>
</table>
### Events
<table>
<thead>
<tr>
<th>ชื่อ</th>
<th>คำอธิบาย</th>
<th>พารามิเตอร์</th>
</tr>
</thead>
<tbody>
<tr>
<td>click</td>
<td>เกิดขึ้นเมื่อคลิกคอมโพเนนต์และไม่ได้ปิดใช้งาน</td>
<td>(event: MouseEvent)</td>
</tr>
</tbody>
</table>
### Slots
<table>
<thead>
<tr>
<th>ชื่อ</th>
<th>คำอธิบาย</th>
</tr>
</thead>
<tbody>
<tr>
<td>default</td>
<td>เนื้อหาที่จะแสดงภายในคอมโพเนนต์</td>
</tr>
</tbody>
</table>5. การใช้งานในผลิตภัณฑ์
ส่วน "การใช้งานในผลิตภัณฑ์" เน้นว่าคอมโพเนนต์ถูกใช้และอย่างไรในผลิตภัณฑ์ Sprout ต่างๆ:
## การใช้งานในผลิตภัณฑ์
<div class="spr-flex spr-items-center spr-gap-4 spr-rounded">
<spr-logo name="hr" theme="dark" width="50px" />
<spr-logo name="payroll" theme="dark" width="50px" />
<spr-logo name="ecosystem" theme="dark" width="50px" />
<spr-logo name="sidekick" theme="dark" width="50px" />
</div>
<script lang="ts" setup>
import SprLogo from "@/components/logo/logo.vue";
import SprYourComponent from "@/components/your-component/your-component.vue";
</script>การพัฒนาในเครื่อง
- ติดตั้ง dependencies:
npm install- เริ่มเซิร์ฟเวอร์ dev:
npm run docs:dev- ทำการเปลี่ยนแปลงและดูตัวอย่างได้ที่
http://localhost:5173
แนวทางปฏิบัติที่ดีที่สุด
การจัดระเบียบ
- จัดกลุ่มคอมโพเนนต์ที่คล้ายกันในส่วนเดียวกัน
- ใช้ระดับหัวเรื่องที่สอดคล้องกัน
- รวมตัวอย่างที่เกี่ยวข้องทั้งหมด
- ปฏิบัติตามโครงสร้างเอกสารมาตรฐาน
ตัวอย่าง
- เริ่มด้วยตัวอย่างการใช้งานพื้นฐานก่อน
- สาธิตแต่ละ prop และ variant ด้วยตัวอย่างภาพ
- รวมกรณีการใช้งานที่ใช้งานได้จริงที่แสดงคอมโพเนนต์ในบริบท
- ใช้คลาส
spr-flexกับspr-items-centerและspr-gap-2สำหรับแสดงตัวอย่างหลายรายการ - รวม code snippets ที่สอดคล้องกันสำหรับแต่ละตัวอย่างเสมอ
Code Snippets
- รวมโค้ดสำหรับแต่ละตัวอย่างภาพ
- ใช้ syntax highlighting ที่ถูกต้องด้วย code blocks ของ ```vue
- แสดงทั้งการใช้งานแบบง่ายและซับซ้อน
- ตรวจสอบให้แน่ใจว่า code examples สมบูรณ์และทำงานได้
เอกสาร API
- จัดทำเอกสาร props, events และ slots ทุกอย่างในตาราง
- รวมข้อมูลประเภทที่ถูกต้อง
- ระบุค่าเริ่มต้น
- เพิ่มคำอธิบายโดยละเอียดสำหรับแต่ละรายการ อธิบายจุดประสงค์และการใช้งาน
- ใช้แท็ก
<code>เพื่อเน้นค่า prop ในคำอธิบาย
การนำเข้าคอมโพเนนต์
- นำเข้าคอมโพเนนต์เสมอที่ด้านล่างของไฟล์ในส่วน
<script lang="ts" setup> - ใช้เส้นทางนำเข้าที่ถูกต้องจาก "@/components/..."
- นำเข้าคอมโพเนนต์ที่จำเป็นทั้งหมด รวมถึง SprLogo สำหรับส่วน "การใช้งานในผลิตภัณฑ์"
- เมื่อแสดงไอคอน โปรดจำไว้ว่าต้องนำเข้า Icon component จาก '@iconify/vue'
- นำเข้าคอมโพเนนต์เสมอที่ด้านล่างของไฟล์ในส่วน
ความสอดคล้องของภาพ
- ใช้คลาส CSS มาตรฐานด้วยคำนำหน้า
spr- - ใช้ spacing ที่สอดคล้องกันระหว่างตัวอย่าง
- ตรวจสอบให้แน่ใจว่าตัวอย่างทั้งหมดจัดตำแหน่งอย่างถูกต้อง
- ใช้คลาส
spr-roundedสำหรับส่วน "การใช้งานในผลิตภัณฑ์"
- ใช้คลาส CSS มาตรฐานด้วยคำนำหน้า
การเข้าถึง
- รวมข้อมูลการเข้าถึงเมื่อเกี่ยวข้อง
- จัดทำเอกสาร attributes ARIA และการนำทางด้วย keyboard
- กล่าวถึงการรองรับ screen reader หากเกี่ยวข้อง