Vue2使用规范

vue规范

组件数据

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

Prop 定义

在你提交的代码中,prop 的定义应该尽量详细,至少需要指定其类型

// good
props: {
  status: String
}

// better
props: {
  status: {
    type: String,
    default: ''
  }
}

v-for 设置键值

在组件上总是必须用 key 配合 v-for,以便维护内部组件及其子树的状态。并且key值唯一。

<ul>
  <li
          v-for="todo in todos"
          :key="todo.id"
  >
    {{ todo.text }}
  </li>
</ul>

v-ifv-for

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

为组件样式设置作用域

对于应用来说,顶级 App 组件和布局组件中的样式可以是全局的,但是其它所有组件都应该是有作用域的。

<!-- 使用 `scoped` attribute -->
<style scoped>
  .button {
    border: none;
    border-radius: 2px;
  }

  .button-close {
    background-color: red;
  }
</style>

文件名

单文件组件的文件名应该要么始终是单词大写开头

完整单词的组件名

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

基础组件名

基础组件即底层封装通用组件,加上前缀Base,如BaseTable.vue

组件名中的单词顺序

组件名应该以高级别的 (通常是一般化描述的) 单词开头,如Set,以描述性的修饰词结尾,如Dialog.Button

SetUser.vue
UpdateUserDialog.vue

组件标签

使用kebab-case,如果不涉及solt,使用自闭方式。

<!-- 在所有地方 -->
<my-button />

<!-- solt -->
<base-button :id='id' :type='type'>确定</base-button>

组件注册与使用

组件名应该始终是 PascalCase 的

Vue.component('MyComponent', {
// ...
})

Prop 名大小写

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

// 命名
props: {
  greetingText: String
}

// 模板
<WelcomeMessage greeting-text="hi"/>

多个 attribute 的元素

<img
        src="https://vuejs.org/images/logo.png"
        alt="Vue Logo"
>

模板中简单的表达式

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

带双引号的 attribute 值

非空 HTML attribute 值应该始终带引号,同时如个多个属性必须空格

<app-sidebar :style="{ width: sidebarWidth + 'px' }">

指令缩写

指令缩写 (用 : 表示 v-bind:、用 @ 表示 v-on: 和用 # 表示 v-slot:) 应该要么都用要么都不用。

单文件组件的顶级元素的顺序

单文件组件]应该总是让 <script><template><style> 标签的顺序保持一致。且 <style> 要放在最后,template在最前面。

<!-- ComponentA.vue -->

<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>

隐性的父子组件通信

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

非 Flux 的全局状态管理

应该优先通过Vuex管理全局状态,而不是通过 this.$root 或一个全局事件总线。

文件模板

<template>
  <div></div>
</template>

<script>
// import

export default {
  // 注册
  components: {},
  // 定义变量
  data() {
    return {}
  },
  // 计算属性 当里面的数据发生变化时,会自动触发重新计算
  computed: {},
  // 监控data中的变量变化
  watch: {},
  // 方法集合
  methods: {},
  // 创建完成(可以访问当前this实例)
  created() {},
  // 挂载完成(可以访问DOM元素)
  mounted() {},
  // 创建之前
  beforeCreate() {},
  // 挂载之前
  beforeMount() {},
  // 更新之前
  beforeUpdate() {},
  // 更新之后
  updated() {},
  // 销毁之前
  beforeDestroy() {},
  // 销毁完成
  destroyed() {},
  // 如果页面有keep-alive缓存功能,这个函数会触发
  activated() {}
}
</script>

<style lang="scss" scoped></style>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值