GitHub Flavored Markdown (GFM)
GitHub Flavored Markdown (GFM) เป็นเวอร์ชัน Markdown ที่ปรับปรุงโดย GitHub พร้อมคุณสมบัติเพิ่มเติมที่ออกแบบมาโดยเฉพาะสำหรับการพัฒนาซอฟต์แวร์และการทำงานร่วมกัน คู่มือนี้ครอบคลุมส่วนขยายไวยากรณ์พิเศษทั้งหมดที่มีอยู่บน GitHub
GitHub Flavored Markdown (GFM) คืออะไร?
GitHub Flavored Markdown ขยายไวยากรณ์ Markdown พื้นฐานด้วยคุณสมบัติที่ทำให้มีประโยชน์มากขึ้นสำหรับ:
- เอกสาร (READMEs, wikis)
- การติดตามปัญหา (Issue tracking)
- Pull requests
- การตรวจสอบโค้ด
- การจัดการโครงการ
คุณสมบัติหลักของ GFM
1. Fenced Code Blocks
GFM รองรับ fenced code blocks พร้อมการเน้นไวยากรณ์เฉพาะภาษา:
```javascript
function calculateSum(numbers) {
return numbers.reduce((sum, num) => sum + num, 0);
}
const result = calculateSum([1, 2, 3, 4, 5]);
console.log(result); // Output: 15
```function calculateSum(numbers) {
return numbers.reduce((sum, num) => sum + num, 0);
}
const result = calculateSum([1, 2, 3, 4, 5]);
console.log(result); // Output: 152. การเน้นไวยากรณ์
GitHub รองรับการเน้นไวยากรณ์สำหรับ数百ภาษา บางภาษาที่พบบ่อย ได้แก่:
# Bash script
echo "Hello GitHub!"# Python script
def greet(name):
return f"Hello, {name}!"// Java code
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello GitHub!");
}
}3. รายการงาน
สร้างรายการงานแบบโต้ตอบด้วยช่องทำเครื่องหมาย:
- [x] ดำเนินการตรวจสอบผู้ใช้ให้เสร็จสมบูรณ์
- [x] ดำเนินการ API endpoints
- [ ] เขียน unit tests
- [ ] Backend tests
- [ ] Frontend tests
- [ ] Deploy ขึ้น production- [x] ดำเนินการตรวจสอบผู้ใช้ให้เสร็จสมบูรณ์
- [x] ดำเนินการ API endpoints
- [ ] เขียน unit tests
- [ ] Backend tests
- [ ] Frontend tests
- [ ] Deploy ขึ้น production
4. ตาราง
GFM ให้ไวยากรณ์อย่างง่ายสำหรับการสร้างตาราง:
| คุณสมบัติ | รองรับ | คำอธิบาย |
|-------------------|--------|--------------------------------|
| Fenced Code | ✅ | การเน้นไวยากรณ์เฉพาะภาษา |
| Task Lists | ✅ | ช่องทำเครื่องหมายแบบโต้ตอบ |
| Tables | ✅ | การแสดงข้อมูลที่มีโครงสร้าง |
| Mentions | ✅ | การแจ้งเตือนผู้ใช้และทีม |
| Emoji | ✅ | การแสดงออกทางภาพ || คุณสมบัติ | รองรับ | คำอธิบาย |
|---|---|---|
| Fenced Code | ✅ | การเน้นไวยากรณ์เฉพาะภาษา |
| Task Lists | ✅ | ช่องทำเครื่องหมายแบบโต้ตอบ |
| Tables | ✅ | การแสดงข้อมูลที่มีโครงสร้าง |
| Mentions | ✅ | การแจ้งเตือนผู้ใช้และทีม |
| Emoji | ✅ | การแสดงออกทางภาพ |
5. การกล่าวถึง
กล่าวถึงผู้ใช้หรือทีมเพื่อแจ้งเตือนพวกเขา:
@username - กล่าวถึงผู้ใช้เฉพาะ
@team-name - กล่าวถึงทีม6. Emoji
เพิ่ม emoji โดยใช้ shortcodes:
:smile: - 😊
:thumbsup: - 👍
:heart: - ❤️
:rocket: - 🚀
:warning: - ⚠️😄 - 😊 👍 - 👍 ❤️ - ❤️ 🚀 - 🚀 ⚠️ - ⚠️
7. การเชื่อมโยงอัตโนมัติ
GFM เชื่อมโยงเนื้อหาบางประเภทโดยอัตโนมัติ:
หมายเลข Issue และ Pull Request
#123 - ลิงก์ไปยัง issue 123
PR #456 - ลิงก์ไปยัง pull request 456Hash SHA
a1b2c3d - ลิงก์ไปยัง commit ที่มี SHA นี้การกล่าวถึงผู้ใช้ใน Issues/PRs
@username - ลิงก์ไปยังโปรไฟล์ผู้ใช้โดยอัตโนมัติURLs
https://github.com - กลายเป็นลิงก์โดยอัตโนมัติ8. ขีดฆ่า
GFM รองรับข้อความขีดฆ่า:
~~ข้อความนี้ถูกขีดฆ่า~~ข้อความนี้ถูกขีดฆ่า
9. การอ้างอิงลิงก์อัตโนมัติ
GFM สร้างลิงก์โดยอัตโนมัติสำหรับ:
- HTTP/HTTPS URLs
- ที่อยู่อีเมล
- หมายเลข issue/PR ของ GitHub
- Commit SHAs
https://github.com/markdownlang/markdownlang.com
user@example.com
#123
PR #456
a1b2c3d4e5f610. การเน้นบรรทัดในบล็อกโค้ด
เน้นบรรทัดเฉพาะในบล็อกโค้ด:
```javascript{2,4}
function calculateSum(numbers) {
return numbers.reduce((sum, num) => sum + num, 0); // Highlighted
}
const result = calculateSum([1, 2, 3, 4, 5]); // Highlighted
console.log(result);
```function calculateSum(numbers) {
return numbers.reduce((sum, num) => sum + num, 0); // Highlighted
}
const result = calculateSum([1, 2, 3, 4, 5]); // Highlighted
console.log(result);11. การเน้นไวยากรณ์ Diff
เน้นการเปลี่ยนแปลงในโค้ดด้วยไวยากรณ์ diff:
```diff
- const oldFunction = () => {
- return "old value";
- };
+
+ const newFunction = () => {
+ return "new value";
+ };
```- const oldFunction = () => {
- return "old value";
- };
+
+ const newFunction = () => {
+ return "new value";
+ };12. เครื่องหมายเฉพาะของ GitHub
การแจ้งเตือน
ใช้ไวยากรณ์พิเศษสำหรับการแจ้งเตือนในเอกสาร GitHub:
> [!NOTE]
> นี่คือการแจ้งเตือนบันทึก
> [!TIP]
> นี่คือการแจ้งเตือนเคล็ดลับ
> [!IMPORTANT]
> นี่คือการแจ้งเตือนสำคัญ
> [!WARNING]
> นี่คือการแจ้งเตือนคำเตือน
> [!CAUTION]
> นี่คือการแจ้งเตือนระวังNOTE
นี่คือการแจ้งเตือนบันทึก
TIP
นี่คือการแจ้งเตือนเคล็ดลับ
IMPORTANT
นี่คือการแจ้งเตือนสำคัญ
WARNING
นี่คือการแจ้งเตือนคำเตือน
CAUTION
นี่คือการแจ้งเตือนระวัง
ลิงก์สัมพัทธ์
ใช้ลิงก์สัมพัทธ์เพื่อนำทางระหว่างไฟล์ใน repository เดียวกัน:
[README](/README.md)
[แนวทางการมีส่วนร่วม](/CONTRIBUTING.md)
[เอกสาร API](/docs/api.md)ลิงก์รูปภาพพร้อมข้อความโฮเวอร์
การใช้ GFM ขั้นสูง
1. รายการซ้อนกับรายการงาน
รวมรายการซ้อนกับรายการงาน:
## แผนภาพโครงการ
### ระยะที่ 1: การวางแผน
- [x] กำหนดขอบเขตโครงการ
- [x] ระบุความต้องการ
- [x] ความต้องการด้านฟังก์ชัน
- [x] ความต้องการด้านที่ไม่ใช่ฟังก์ชัน
- [x] สร้างไทม์ไลน์
### ระยะที่ 2: การพัฒนา
- [x] ตั้งค่าโครงสร้างโครงการ
- [ ] ดำเนินการคุณสมบัติหลัก
- [x] การตรวจสอบ
- [ ] Dashboard
- [ ] การผสานรวม API2. ตารางพร้อม Emoji และลิงก์
ปรับปรุงตารางด้วย emoji และลิงก์:
| ส่วนประกอบ | สถานะ | ผู้ดูแล |
|------------|-------|---------|
| การตรวจสอบ | ✅ คงที่ | @johndoe |
| ฐานข้อมูล | ⚠️ ต้องอัปเดต | @janedoe |
| API | 🚧 กำลังดำเนินการ | @bobsmith |
| UI | ✅ คงที่ | @alicesmith || ส่วนประกอบ | สถานะ | ผู้ดูแล |
|---|---|---|
| การตรวจสอบ | ✅ คงที่ | @johndoe |
| ฐานข้อมูล | ⚠️ ต้องอัปเดต | @janedoe |
| API | 🚧 กำลังดำเนินการ | @bobsmith |
| UI | ✅ คงที่ | @alicesmith |
3. บล็อกโค้ดในรายการ
รวมบล็อกโค้ดในรายการ:
1. ติดตั้ง dependencies:
```bash
npm installรัน development server:
bashnpm run devBuild สำหรับ production:
bashnpm run build
### 4. บล็อกคำพูดพร้อมโค้ด
รวมคำพูดกับบล็อกโค้ด:
```markdown
> **เคล็ดลับมืออาชีพ:** ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะ Git ของคุณอย่างรวดเร็ว:
>
> ```bash
> git status
> ```เคล็ดลับมืออาชีพ: ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะ Git ของคุณอย่างรวดเร็ว:
bashgit status
GFM ในบริบท GitHub ที่แตกต่างกัน
ไฟล์ README
ไฟล์ README รองรับคุณสมบัติ GFM ทั้งหมดและจะถูกแสดงผลโดยอัตโนมัติบนหน้า repository
Issues และ Pull Requests
- ใช้รายการงานเพื่อติดตามความคืบหน้า
- กล่าวถึงสมาชิกในทีมเพื่อการทำงานร่วมกัน
- รวม snippet โค้ดพร้อมการเน้นไวยากรณ์
- อ้างอิง issues/PRs ที่เกี่ยวข้องโดยใช้ไวยากรณ์
#123
ความคิดเห็น
- ใช้ emoji เพื่อปฏิกิริยาอย่างรวดเร็ว
- อ้างอิงบรรทัดในโค้ดด้วยความคิดเห็นบรรทัด
- ใช้บล็อกคำพูดเพื่อตอบสนองต่อประเด็นเฉพาะ
Wikis
- จัดระเบียบเนื้อหาด้วยหน้าซ้อน
- ใช้ตารางสำหรับข้อมูลที่มีโครงสร้าง
- รวมตัวอย่างโค้ดพร้อมการเน้นไวยากรณ์
แนวทางปฏิบัติที่ดีที่สุด
1. สไตล์โค้ด
<!-- ✅ ดี -->
```javascript
// ใช้ชื่อฟังก์ชันที่สื่อความหมาย
function calculateTotal(items) {
return items.reduce((sum, item) => sum + item.price, 0);
}function f(i){return i.reduce((a,b)=>a+b.p,0)}```2. การออกแบบตาราง
<!-- ✅ ดี -->
| คุณสมบัติ | คำอธิบาย | สถานะ |
|-----------|----------|-------|
| คุณสมบัติ 1 | คำอธิบายสั้น | ✅ |
| คุณสมบัติ 2 | คำอธิบายอื่น | 🚧 |
<!-- ❌ หลีกเลี่ยง -->
| คุณสมบัติ | คำอธิบาย | สถานะ | | | |
|-----------|----------|-------|---|---|---|
| คุณสมบัติ 1 | คำอธิบายนี้ยาวเกินไปและทำให้ตารางอ่านยากบนอุปกรณ์มือถือ | ✅ | | | |3. การใช้รายการงาน
<!-- ✅ ดี -->
## Sprint Backlog
- [x] ทำหน้าโปรไฟล์ผู้ใช้ให้เสร็จสมบูรณ์
- [ ] ดำเนินการฟังก์ชันการค้นหา
- [x] Backend API
- [ ] Frontend component
- [ ] เขียนเอกสาร
<!-- ❌ หลีกเลี่ยง -->
- [ ] งาน 1
- [ ] งาน 2
- [ ] งาน 3
- [ ] งาน 4
- [ ] งาน 5
(งานมากเกินไปโดยไม่มีการจัดระเบียบ)GFM เทียบกับ Markdown มาตรฐาน
| คุณสมบัติ | Markdown มาตรฐาน | GitHub Flavored Markdown |
|---|---|---|
| Fenced Code Blocks | ❌ | ✅ |
| การเน้นไวยากรณ์ | ❌ | ✅ |
| รายการงาน | ❌ | ✅ |
| ตาราง | ❌ | ✅ |
| ขีดฆ่า | ❌ | ✅ |
| Emoji | ❌ | ✅ |
| การกล่าวถึง | ❌ | ✅ |
| การเชื่อมโยงอัตโนมัติ | จำกัด | กว้างขวาง |
เครื่องมือสำหรับทำงานกับ GFM
โปรแกรมแก้ไขในเครื่อง
- Visual Studio Code - ดูตัวอย่าง GFM และส่วนขยาย
- Typora - การแสดงผล GFM แบบเรียลไทม์
- Mark Text - รองรับ GFM
เครื่องมือออนไลน์
- GitHub Gist - สร้างและแชร์ snippet GFM
- Dillinger - โปรแกรมแก้ไข GFM ออนไลน์
- StackEdit - รองรับ GFM พร้อมซิงค์คลาวด์
เครื่องมือบรรทัดคำสั่ง
- glow - โปรแกรมแสดงผล GFM Terminal
- pandoc - แปลง GFM เป็นรูปแบบอื่น
- marked - โปรแกรมแยกวิเคราะห์ GFM Node.js
ปัญหาทั่วไปและการแก้ไข
1. บล็อกโค้ดไม่มีการเน้น
ปัญหา: บล็อกโค้ดไม่แสดงการเน้นไวยากรณ์
การแก้ไข: ตรวจสอบให้แน่ใจว่าคุณระบุภาษาที่ถูกต้อง:
<!-- ✅ ถูกต้อง -->
```javascript
console.log("Hello");console.log("Hello"); // ใช้ jsx แทน javascript สำหรับโค้ดที่ไม่ใช่ JSX
### 2. ช่องทำเครื่องหมายรายการงานไม่ทำงาน
**ปัญหา:** ช่องทำเครื่องหมายรายการงานไม่โต้ตอบ
**การแก้ไข:** ตรวจสอบให้แน่ใจว่าใช้ไวยากรณ์ที่ถูกต้อง (มีช่องว่างระหว่าง `-` และ `[ ]`):
```markdown
<!-- ✅ ถูกต้อง -->
- [ ] งาน
<!-- ❌ ไม่ถูกต้อง -->
-[ ] งาน (ไม่มีช่องว่าง)
-[x] งาน (ไม่มีช่องว่าง)3. ตารางไม่แสดงผลถูกต้อง
ปัญหา: คอลัมน์ตารางไม่ตรงกัน
การแก้ไข: ตรวจสอบให้แน่ใจว่า pipe ถูกจัดเรียงอย่างถูกต้อง:
<!-- ✅ ถูกต้อง -->
| Column 1 | Column 2 |
|----------|----------|
| Data 1 | Data 2 |
<!-- ❌ ไม่ถูกต้อง -->
|Column 1|Column 2|
|--|--|
|Data 1|Data 2|ขั้นตอนถัดไป
- เรียนรู้ไวยากรณ์ Markdown พื้นฐาน
- ดูชีทสรุปไวยากรณ์
- ฝึกฝนกับ GitHub Gist
- อ่านเอกสาร GFM ทางการของ GitHub
GitHub Flavored Markdown เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการสื่อสารและการทำงานร่วมกันในการพัฒนาซอฟต์แวร์ โดยการเชี่ยวชาญคุณสมบัติเหล่านี้ คุณสามารถสร้างเอกสารที่มีประสิทธิภาพมากขึ้น ติดตามปัญหาได้ดีขึ้น และทำงานร่วมกันกับทีมของคุณได้อย่างมีประสิทธิภาพมากขึ้น