我的Vue代码规范

110 阅读2分钟

从个人的编码历程总结一些经验。如有收获,还请关注——猩猩伸手.jpg

文件结构

文件命名

• 小写 kebab-case:如data-input.vue

npm 模块以及内置的 JavaScript 标准模块都默认使用 kebab-case。那么为什么要偏离它呢?

文件夹为最小单元

• 默认vue文件以index.vue即可

只需要对外展示文件夹名称为模块即可复用,且可在内部自行建立common文件夹管理index中的其他组件

单文件格式

<template> 、<script> 和 <style> 标签的顺序保持一致。

统一项目阅读习惯

vue路由

• 小写kebab-case

• 以导航栏模块为开头+"/"+模块功能

• 可选:是否需要以list等页面提示语为模块功能的结尾

• 路由name:可使用模块.组件的形式

• 类属性形式:Module.add

自定义组件

名称

应为多个单词,为了和常规标签区分。

组件名应该倾向于完整单词而不是缩写。

• 基础组件名约定——Basexxx

• 单例组件名约定——Thexxx

template模板使用

<PascalCase /> 在模板中更明显地表明了这是一个 Vue 组件,而不是原生 HTML 元素。

父子组件

和父组件紧密耦合的子组件应该以父组件名作为前缀命名—— 叠层关系

vue代码编写

有些是通用常见的,相信很多人都知道,就当复习一遍吧。

• 组件数据data必须是个函数

• 总是用 key 配合 v-for

• 永远不要把 v-if 和 v-for 同时用在同一个元素上。

• 组件样式设置作用域scoped

prop 的定义

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

单纯遵循每个语言的约定。

在 JavaScript 中更自然的是 camelCase。而在 HTML 中则是 kebab-case

props: {
  greetingText: String
}
<WelcomeMessage greeting-text="hi"/>

属性注入

• 多个 attribute 的元素应该分多行撰写,每个 attribute 一行。

• 非空 HTML attribute 值应该始终带引号 (单引号或双引号,以 JS 中未使用的为准)

模板展示表达式

组件模板应该只包含简单的表达式,复杂的表达式则应该重构为计算属性或方法

应该把复杂计算属性分割为尽可能多的、更简单的 property。

computed: {
 basePricefunction () {
   return this.manufactureCost / (1 - this.profitMargin)
 },
 discountfunction () {
   return this.basePrice * (this.discountPercent || 0)
 },
 finalPricefunction () {
   return this.basePrice - this.discount
 }
}

指令缩写

  • 用 : 表示 v-bind:

  • 用 @ 表示 v-on:

  • 用 # 表示 v-slot:

    • 个人倾向v-slot,因为#符号在python里面是注释。

数据流传递

一个理想的 Vue 应用是 prop 向下传递,事件向上传递的。

优先通过 prop 和事件进行父子组件之间的通信,而不是 this.$parent 或变更 prop。

----END

推荐阅读

看完一篇文章就该休息了,别看了,推荐个毛啊。该走走动动,放松眼睛和拉伸身体。工作虽重要,但生活才是人生的重点