vue.md

这篇博客探讨了Vue.js开发中的最佳实践,包括命名规范、组件数据、Prop定义和key值的使用。强调了避免在同一元素上使用v-if和v-for,以及组件样式的作用域。还推荐了组件拆分策略,如将组件拆分为单独文件,并区分公共和局部组件,以提高代码可读性和复用性。
摘要由CSDN通过智能技术生成

(个人记录)


必要

命名

  • 组件名必写
  • 组件名为多个单词
  • 组件名为大驼峰
export default {
  name: 'TodoItem',
  // ...
}

组件数据

  • data必须是函数
export default {
  data () {
    return {
      foo: 'bar'
    }
  }
}

Prop定义

  • 尽可能详细,写出类型和默认值
props: {
  status: {
    type: String,
    default: 'syncing'
  }
}

key值

  • 在使用v-for时,必须写key值
  • 尽可能使用后台主键或唯一值作为key
  • 实在没办法选择使用index
<ul>
  <li v-for="todo in todos" 
      :key="todo.id">
    {{ todo.text }}
  </li>
</ul>
//不推荐
<ul>
  <li v-for="(todo,index) in todos" 
      :key="index">
    {{ todo.text }}
  </li>
</ul>

v-if和v-for禁止同时使用在同一元素

<ul v-if="isAdd">
  <li
    v-for="user in users"
    :key="user.id"
  >
    {{ user.name }}
  </li>
</ul>
//反例
<ul>
  <li
    v-for="user in users"
    v-if="isAdd"
    :key="user.id"
  >
    {{ user.name }}
  </li>
</ul>

组件样式设置作用域

/* scoped属性 */
<style scoped>
.button {
  border: none;
  border-radius: 2px;
}

.button-close {
  background-color: red;
}
</style>
/* css module */
<style scoped>
.button {
  border: none;
  border-radius: 2px;
}

.button-close {
  background-color: red;
}
</style>
/* BEM */
.button_content--primary {
    background-color: red;
}
<template>
    <div class="home"> 
        ...
    </div>
</template>
<style lang="scss">
.home {
  border: none;
  border-radius: 2px;
  .button-close {
    background-color: red;
  }
}
</style>

推荐

能拆分组件,尽量拆分组件

尽量不要让单文件超过500行,否则阅读起来非常困难,想办法提取组件

将组件拆分成单独文件,不要写在同一文件

// 反例
Vue.component('TodoList', {
  // ...
})

组件分为公共组件和局部组件

  • 公共组件放入components文件夹中,通过Vue.use全局引入,方便使用
  • 局部组件放入局部的文件夹内,防止影响别人的阅读
components/
|- TodoList/
    |- TodoItem.vue
    |- index.vue
views/
|- Home/
    |- Nav.vue
    |- index.vue

文件大小写

尽量用大驼峰或者-联接线

components/
|- MyComponent.vue
components/
|- my-component.vue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值