编辑器代码风格

  • 建议遵守prettier风格
  • 设置tabsize 为 2
  • 每行末尾添加分号
  • 双引号包裹字符串
  • 函数(名)和后面的括号之间加个空格

组件选项的顺序

  • 建议以此排序
export default {
  name: '',
  data() {},
  props: {},
  mixins: [],
  watch: {},
  computed: {},
  onLoad() {},
  created() {},
  onShow() {},
  mounted() {},
  destroyed() {},
  onHide() {},
  methods: {},
  components: {}
};

组件数据

  • 组件的 data 必须是一个函数。
export default {
  data () {
    return {
      foo: 'bar'
    }
  }
}

组件方法命名

  • 组件的 methods,命名建议为驼峰式命名法,getList(),setList()...
  • 命名建议语义化,on开头表示监听,get表示获取,set表示设置...

组件文件名称

  • 单文件组件的文件名 (kebab.vue)
  • 组合名(横线连接)(kebab-case.vue)
  • 组合名(横线连接)(kebab-case-a.vue)

  • 组合名组件引用时的命名
  • 推荐 <kebab></kebab>
  • 推荐 <kebab-case></kebab-case>
  • 推荐 <kebab-case-a></kebab-case-a>
  • 自闭合组件 <kebab/>

slot内容分发

  • slot name值 命名 建议全部使用驼峰式命名 如 headerInfo
  • 如果使用header-info 则小程序可能识别不了name值,导致slot失效(可能属于官方框架问题)

<slot name="headerInfo"></slot>


<kebab slot="headerInfo"></kebab>


Prop 名大小写

export default {
  props: {
    greetingText: String
  }
}
<welcome-message greeting-text="hi" />

Props 换行

<welcome
  foo="a"
  bar="b"
  baz="c"
>

Props 顺序

  • 标签的 Props 应该有统一的顺序,依次为指令、属性和事件
<my-component
  v-if="if"
  v-show="show"
  v-model="value"
  ref="ref"
  :key="key"
  :text="text"
  @input="onInput"
  @change="onChange"
/>

接口命名

  • 建议全部大写,语义化命名开头 以 _ 分隔 ,后面加上该接口名称
export function GET_CONFIG(data = {}, config = {}) {
  return $Request({
    url: "",
    data,
    ...config
  });
}