Vue风格指南

本文详述了Vue.js组件开发的多个方面,包括组件命名应为多个单词,组件必须是函数,详细定义Prop,避免在同一元素上使用v-if和v-for,使用组件样式作用域,使用__作为私有属性前缀,每个组件单独为文件,遵循组件命名规范,避免DOM模板中的自闭合组件,以及推荐使用Vuex管理全局状态等最佳实践。
摘要由CSDN通过智能技术生成

组件名为多个单词

除了根组件App之外,组件名应该始终是多个单词的,这样做可以避免和现有的以及未来的HTML元素冲突

组件的data必须是一个函数

如果不是函数,那么会在组件的所有实例之间共享,导致会被随意修改,且无法维护。

Vue.component('some-comp', {
  data: {
    foo: 'bar'
  }
})

export default {
   
  data: {
    foo: 'bar'
  }
}

我们希望每个组件实例都管理自己的数据,为了做到这一点,每个实例必须生成一个独立的数据对象,用函数返回这个对象就可以了。

Vue.component('some-comp', {
  data: function () {
    return {
      foo: 'bar'
    }
  }
})

export default {
   
  data () {
    return {
      foo: 'bar'
    }
  }

Prop定义应该尽量详细

这样做的好处:
1. 充当组件API
2. 开发环境中,如果提供格式不正确的prop,Vue会警告,帮助你捕获潜在的错误来源

// 更好的做法!
props: {
  status: {
    type: String,
    required: true,
    validator: function (value) {
   
      return [
        'syncing',
        'synced',
        'version-conflict',
        'error'
      ].indexOf(value) !== -1
    }
  }
}

v-for设置key

组件上必须用key配合v-for以便维护内部组件及其子树的状态。

避免v-ifv-for在同一个元素上

一般我们在两种常见的情况下会倾向于这样做:

  • 为了过滤一个列表中的项目 (比如v-for="user in users" v-if="user.isActive")。在这种情形下,请将users替换为一个计算属性 (比如 activeUsers),让其返回过滤后的列表。
computed: {
  activeUsers: function () {
   
    return this.users.filter(function (user) {
   
      return user.isActive
    })
  }
}
  • 为了避免渲染本应该被隐藏的列表 (比如v-for="user in users" v-if="shouldShowUsers")。这种情形下,请将v-if移动至容器元素上 (比如
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值