import{o as a,a as n,y as p}from"./vue-libs.b44bc779.js";const l={class:"van-doc-markdown-body"},t=p(`

\u98CE\u683C\u6307\u5357

\u4ECB\u7ECD

\u5728\u53C2\u4E0E Vant \u5F00\u53D1\u65F6\uFF0C\u8BF7\u9075\u5B88\u7EA6\u5B9A\u7684\u5355\u6587\u4EF6\u7EC4\u4EF6\u98CE\u683C\u6307\u5357\uFF0C\u6307\u5357\u5185\u5BB9\u8282\u9009\u81EA Vue \u5B98\u65B9\u98CE\u683C\u6307\u5357\u3002

\u7EC4\u4EF6\u6570\u636E

\u7EC4\u4EF6\u7684 data \u5FC5\u987B\u662F\u4E00\u4E2A\u51FD\u6570\u3002

// bad
export default {
  data: {
    foo: 'bar',
  },
};

// good
export default {
  data() {
    return {
      foo: 'bar',
    };
  },
};

\u5355\u6587\u4EF6\u7EC4\u4EF6\u6587\u4EF6\u540D\u79F0

\u5355\u6587\u4EF6\u7EC4\u4EF6\u7684\u6587\u4EF6\u540D\u5E94\u8BE5\u8981\u4E48\u59CB\u7EC8\u662F\u5355\u8BCD\u5927\u5199\u5F00\u5934 (PascalCase)\uFF0C\u8981\u4E48\u59CB\u7EC8\u662F\u6A2A\u7EBF\u8FDE\u63A5 (kebab-case)\u3002

// bad
mycomponent.vue
myComponent.vue

// good
my-component.vue
MyComponent.vue

\u7D27\u5BC6\u8026\u5408\u7684\u7EC4\u4EF6\u540D

\u548C\u7236\u7EC4\u4EF6\u7D27\u5BC6\u8026\u5408\u7684\u5B50\u7EC4\u4EF6\u5E94\u8BE5\u4EE5\u7236\u7EC4\u4EF6\u540D\u4F5C\u4E3A\u524D\u7F00\u547D\u540D\u3002

// bad
components/
|- TodoList.vue
|- TodoItem.vue
\u2514\u2500 TodoButton.vue

// good
components/
|- TodoList.vue
|- TodoListItem.vue
\u2514\u2500 TodoListItemButton.vue

\u81EA\u95ED\u5408\u7EC4\u4EF6

\u5728\u5355\u6587\u4EF6\u7EC4\u4EF6\u4E2D\u6CA1\u6709\u5185\u5BB9\u7684\u7EC4\u4EF6\u5E94\u8BE5\u662F\u81EA\u95ED\u5408\u7684\u3002

<!-- bad -->
<my-component></my-component>

<!-- good -->
<my-component />

Prop \u540D\u5927\u5C0F\u5199

\u5728\u58F0\u660E prop \u7684\u65F6\u5019\uFF0C\u5176\u547D\u540D\u5E94\u8BE5\u59CB\u7EC8\u4F7F\u7528 camelCase\uFF0C\u800C\u5728\u6A21\u677F\u4E2D\u5E94\u8BE5\u59CB\u7EC8\u4F7F\u7528 kebab-case\u3002

// bad
export default {
  props: {
    'greeting-text': String,
  },
};

// good
export default {
  props: {
    greetingText: String,
  },
};
<!-- bad -->
<welcome-message greetingText="hi" />

<!-- good -->
<welcome-message greeting-text="hi" />

\u6307\u4EE4\u7F29\u5199

\u6307\u4EE4\u7F29\u5199\uFF0C\u7528 : \u8868\u793A v-bind: \uFF0C\u7528 @ \u8868\u793A v-on:

<!-- bad -->
<input v-bind:value="value" v-on:input="onInput" />

<!-- good -->
<input :value="value" @input="onInput" />

Props \u987A\u5E8F

\u6807\u7B7E\u7684 Props \u5E94\u8BE5\u6709\u7EDF\u4E00\u7684\u987A\u5E8F\uFF0C\u4F9D\u6B21\u4E3A\u6307\u4EE4\u3001\u5C5E\u6027\u548C\u4E8B\u4EF6\u3002

<my-component
  v-if="if"
  v-show="show"
  v-model="value"
  ref="ref"
  :key="key"
  :text="text"
  @input="onInput"
  @change="onChange"
/>

\u7EC4\u4EF6\u9009\u9879\u7684\u987A\u5E8F

\u7EC4\u4EF6\u9009\u9879\u5E94\u8BE5\u6709\u7EDF\u4E00\u7684\u987A\u5E8F\u3002

export default {
  name: '',

  components: {},

  props: {},

  emits: [],

  setup() {},

  data() {},

  computed: {},

  watch: {},

  created() {},

  mounted() {},

  unmounted() {},

  methods: {},
};

\u7EC4\u4EF6\u9009\u9879\u4E2D\u7684\u7A7A\u884C

\u7EC4\u4EF6\u9009\u9879\u8F83\u591A\u65F6\uFF0C\u5EFA\u8BAE\u5728\u5C5E\u6027\u4E4B\u95F4\u6DFB\u52A0\u7A7A\u884C\u3002

export default {
  computed: {
    formattedValue() {
      // ...
    },

    styles() {
      // ...
    },
  },

  methods: {
    onInput() {
      // ...
    },

    onChange() {
      // ...
    },
  },
};

\u5355\u6587\u4EF6\u7EC4\u4EF6\u9876\u7EA7\u6807\u7B7E\u7684\u987A\u5E8F

\u5355\u6587\u4EF6\u7EC4\u4EF6\u5E94\u8BE5\u603B\u662F\u8BA9\u9876\u7EA7\u6807\u7B7E\u7684\u987A\u5E8F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4E14\u6807\u7B7E\u4E4B\u95F4\u7559\u6709\u7A7A\u884C\u3002

<template> ... </template>

<script>
  /* ... */
</script>

<style>
  /* ... */
</style>
`,12),c=[t],i={__name:"style-guide.zh-CN",setup(e,{expose:s}){return s({frontmatter:{}}),(h,d)=>(a(),n("div",l,c))}};export{i as default};