Skip to content

Vue2 组件结构规范

文件结构

ComponentName/
├── index.vue          # 组件入口文件
├── components/        # 子组件
├── composables/       # 组合式函数
├── styles/           # 样式文件
└── types/            # TypeScript 类型定义

组件文件结构

vue
<template>
  <!-- 模板内容 -->
</template>

<script>
// 导入语句
import { Component, Vue } from 'vue-property-decorator'
import { Prop, Watch } from 'vue-property-decorator'

@Component({
  name: 'ComponentName',
  components: {
    // 子组件注册
  }
})
export default class ComponentName extends Vue {
  // Props 定义
  @Prop({ type: String, required: true }) readonly title!: string

  // 数据属性
  private data = {
    // 数据定义
  }

  // 计算属性
  get computedValue() {
    return this.data.someValue
  }

  // 方法
  private handleClick() {
    // 方法实现
  }

  // 生命周期钩子
  mounted() {
    // 挂载后的逻辑
  }
}
</script>

<style lang="scss" scoped>
// 样式定义
</style>

命名规范

  1. 组件名使用 PascalCase
  2. 文件名与组件名保持一致
  3. 基础组件名以 Base 开头
  4. 单例组件名以 The 开头
  5. 紧密耦合的子组件以父组件名作为前缀

组件设计原则

  1. 单一职责原则
  2. 组件应该是可复用的
  3. 保持组件的独立性
  4. 合理使用 props 和 events
  5. 避免过度设计

Props 规范

  1. 始终使用详细的 props 定义
  2. 指定 props 的类型
  3. 使用 camelCase 命名 props
  4. 为必需的 props 添加 required 标记
  5. 为 props 提供默认值

事件规范

  1. 使用 kebab-case 命名事件
  2. 事件名应该是动词或动词短语
  3. 提供详细的事件参数说明
  4. 避免事件名冲突

样式规范

  1. 使用 scoped 样式
  2. 使用 BEM 命名规范
  3. 避免使用 !important
  4. 合理使用 CSS 变量
  5. 保持样式的可维护性

Released under the MIT License.