风格指南

    组件数据

    组件的 data 必须是一个函数。

    单文件组件文件名称

    单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)。

    1. mycomponent.vue
    2. myComponent.vue
    3. // good
    4. my-component.vue
    5. MyComponent.vue

    和父组件紧密耦合的子组件应该以父组件名作为前缀命名。

    1. // bad
    2. components/
    3. |- TodoList.vue
    4. |- TodoItem.vue
    5. └─ TodoButton.vue
    6. // good
    7. components/
    8. |- TodoList.vue
    9. |- TodoListItem.vue
    10. └─ TodoListItemButton.vue

    自闭合组件

    Prop 名大小写

    在声明 prop 的时候,其命名应该始终使用 camelCase,而在模板中应该始终使用 kebab-case。

    1. export default {
    2. props: {
    3. 'greeting-text': String,
    4. },
    5. };
    6. // good
    7. export default {
    8. props: {
    9. },
    10. };
    1. <!-- bad -->
    2. <welcome-message greetingText="hi" />
    3. <!-- good -->
    4. <welcome-message greeting-text="hi" />

    指令缩写,用 : 表示 v-bind: ,用 @ 表示 v-on:

    Props 顺序

    标签的 Props 应该有统一的顺序,依次为指令、属性和事件。

    1. <my-component
    2. v-if="if"
    3. v-show="show"
    4. v-model="value"
    5. ref="ref"
    6. :key="key"
    7. :text="text"
    8. @input="onInput"
    9. @change="onChange"
    10. />

    组件选项的顺序

    1. export default {
    2. name: '',
    3. components: {},
    4. props: {},
    5. emits: [],
    6. setup() {},
    7. data() {},
    8. computed: {},
    9. watch: {},
    10. created() {},
    11. mounted() {},
    12. unmounted() {},
    13. methods: {},
    14. };

    组件选项较多时,建议在属性之间添加空行。

    单文件组件顶级标签的顺序

    单文件组件应该总是让顶级标签的顺序保持一致,且标签之间留有空行。

    1. <template> ... </template>
    2. <script>
    3. /* ... */
    4. </script>
    5. <style>
    6. </style>