Vue 元件開發規範
---
description: Vue 元件開發規範
globs: *.vue
alwaysApply: false
---
# Vue 開發規範
## 元件命名
- 元件名稱應始終使用多字組合,避免與 HTML 元素衝突
- 使用 PascalCase 命名元件:`TodoItem.vue`、`UserProfile.vue`
- 基礎元件應使用特定前綴,如 `Base`、`App` 或 `V`
- 元件名稱應具有描述性,避免過於簡略
## 元件結構
- 使用 `` 語法糖
- 使用組合式 API (Composition API)
- 組件選項/屬性順序:
1. name
2. components
3. props
4. emits
5. setup()
6. data()
7. computed
8. methods
9. 生命週期鉤子
- 使用單一檔案元件 (SFC) 格式
## Props 規範
- Prop 名使用 camelCase
- Prop 需定義類型和預設值
- 避免使用陣列或物件的預設值,應使用工廠函數傳回預設值
- Prop 應盡可能詳細定義,包括類型、是否必要和驗證函數
## 事件命名
- 事件名應使用 kebab-case,如 `item-click`、`menu-select`
- 自訂事件應具有明確含義,表示發生了什麼
- 避免使用容易混淆的事件名稱
## 樣式指南
- 優先使用 scoped CSS
- 避免使用 !important
- 組件特定樣式應具有特定前綴
- 考慮使用 CSS 變數實現主題
## 效能優化
- 使用 `v-show` 代替 `v-if` 進行頻繁切換
- 長列表使用虛擬滾動
- 避免在計算屬性中進行複雜操作
- 使用 keep-alive 快取元件
- 合理使用非同步組件和懶加載
## 狀態管理
- 使用 Pinia 進行狀態管理
- store 應依功能模組劃分
- 保持 store 簡單,避免過度設計
## 路由
- 路由名稱應與元件名稱相符
- 使用懶加載減少初始載入時間
- 路由守衛應簡潔,避免複雜邏輯
## 通用建議
- 避免使用 `this.$parent` 或 `this.$refs` 直接操作 DOM
- 優先使用計算屬性而不是複雜的模板表達式
- 使用 v-for 時必須提供 key
- 請勿在同一元素上同時使用 v-if 和 v-for
- 重複使用元件時使用 key 確保完全重新渲染