# Vue 命名规范 > 本规范适用于 Vue2 和 Vue3。两者在命名规范上基本一致,主要区别在于 API 风格(Options API vs Composition API)。 ## 规则 1. **文件名**: - 组件文件使用大驼峰命名法(PascalCase)。 - 示例:`UserProfile.vue`、`OrderList.vue` - 视图页面文件使用 `View` 后缀:`UserListView.vue`、`OrderDetailView.vue` 2. **组件名(Component Name)**: - 在 `components` 目录中的组件使用多单词命名,避免与 HTML 标签冲突。 - 示例:`BaseButton.vue`、`ThemePicker.vue`、`UserAvatar.vue` - 视图组件使用 `View` 后缀。 3. **模板中组件引用**: - 在模板中使用大驼峰(PascalCase)或短横线(kebab-case)均可,建议统一使用大驼峰。 - 示例:`` 或 `` 4. **Props 命名**: - 声明时使用小驼峰(camelCase)。 - 在模板中传递时使用短横线(kebab-case)。 - 示例: ```javascript // 声明 props: { userName: String, orderList: Array } ``` ```html ``` 5. **Emits 命名**: - 使用短横线(kebab-case)。 - 示例:`update:user-name`、`delete-order` 6. **数据属性(Data Properties)**: - 使用小驼峰(camelCase)。 - 避免与 props 同名。 - 示例:`searchQuery`、`isLoading` 7. **方法名(Methods)**: - 使用小驼峰(camelCase)。 - 动词开头,清晰表达动作。 - 示例:`handleSubmit`、`fetchOrders`、`toggleMenu` 8. **计算属性(Computed)**: - 使用小驼峰(camelCase)。 - 名词或名词短语表示派生数据。 - 示例:`formattedName`、`filteredOrders`、`isLoading` 9. ** watchers**: - 方法名与被监听的属性同名。 - 示例:`watch: { searchQuery(newValue) { ... } }` 10. **CSS 类名**: - 使用短横线连接(kebab-case)。 - 若使用 scoped CSS,建议添加组件名前缀。 - 示例:`.user-profile-header`、`.order-list-item` 11. **组合式函数(Composition API - Vue3 特有)**: - 文件名以 `use` 开头,使用小驼峰。 - 示例:`useFetch.js`、`useMouse.js` - 函数名以 `use` 开头,使用小驼峰。 - 示例:`function useFetch(url) { ... }` 12. **响应式变量(Composition API)**: - 使用小驼峰(camelCase)。 - ref 变量:`count`、`userName` - reactive 对象:`state`、`form` 13. **Provide / Inject**: - 使用 Symbol 或字符串常量。 - 命名清晰表达提供的功能。 - 示例:`provide('currentUser', user)`、`inject('currentUser')` ## Vue2 与 Vue3 的差异说明 | 项目 | Vue2 (Options API) | Vue3 (Composition API) | |------|-------------------|----------------------| | **数据定义** | `data()` 返回对象 | `ref()` 或 `reactive()` | | **方法定义** | `methods` 选项 | 直接在 `setup()` 中定义 | | **计算属性** | `computed` 选项 | `computed()` 函数 | | **侦听器** | `watch` 选项 | `watch()` 或 `watchEffect()` 函数 | | **命名规范** | ✅ 相同 | ✅ 相同 | > **结论**:Vue2 和 Vue3 在命名规范上没有本质差异,仅 API 使用方式不同。 ## 示例 ### 正确示例 ```vue ``` ### Composition API 示例(Vue3) ```vue ``` ### 错误示例 ```vue ``` ## 适用范围 - Vue2 项目(Options API) - Vue3 项目(Options API 和 Composition API) - Vue 组合式函数(Composables)