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