# 项目中的问题

# 样式相关


1.禁用行内样式(style="width:100px")
<div class="product" style="width:100px"></div>

2.类名命名常用规则
  - 单词全部小写 中间以横线间隔开
  - 命名时要体现层级关系
<div class="product">
  <div class="product-content">
    <div class="product-content-list"> 
      <div class="product-list-item"></div>
      <div class="product-list-item"></div>
      <div class="product-list-item"></div>
    </div>
    ...other
  </div>
</div>

<style lang="scss/less" scoped>
  .product{
    &-content{
      &-list{
        &-item{

        }
      }
    }
  }
</style>

# 方法命名 & 常量命名


<script>
/**
*  常量 - 死值
*  1. 声明用const
*  2. 命名以大写加下划线方式命名
*  3. 一般这种变量的存放位置在 export default { } 上面
*/
const PRODUCT_CODE = '22PR852372'
const PRODUCT_CODE_LIST = {
  '22PR852372':'产品1',
  '22PR852373':'产品2',
  '22PR852374':'产品3',
}

/**
*  方法和普通变量
*  1. 小驼峰命名(首字母小写,后续每个单词首字母大写)
*/
data(){
  return {
    productList:null
  }
}

function getProductList(){
}

/**
*  1. const使用场景:object,array, function
*  2. let使用场景:string,number,boolean
*  3. var使用场景:禁用.
*  4. 不知道用什么声明 默认用const
*/

// info 不可变,info内key对应的值可以变
const info = {
  name:'张三',
  age:11,
}

// name,age,isGirl 可变 const 声明则都不可变
let name = '张三'
let age = 11
let isGirl = false


</script>

# 组件声明

<script>
export default {
  components: {
    'dia-log': Dialog, // 问题命名不规范,组件需要两级命名
    'dialog-batch-import': DialogBatchImport // 不需要key:value 形式,
  }
}

// 优化 1
export default {
  components: {
    'home-dialog': Dialog,
    DialogBatchImport // 使用的时候 直接 dialog-batch-import 或者 DialogBatchImport
  }
}


// 推荐的使用方式
<template>
  <div>
    // 项目内的组件直接大写更容易识别。
    <HomeDialog />
  	<DialogBatchImport />
    // 依赖的组件 建议小写。
    <el-button>elementui</el-button>
  </div>
</template>
// 组件引用,推荐大驼峰方式命名
import HomeDialog from './Dialog.vue'  // Dialog.vue 命名应该一步到位  HomeDialog.vue
import DialogBatchImport from './DialogBatchImport.vue'

// 优化 2
export default {
  name:AppHome,
  components: {
    HomeDialog,
    DialogBatchImport
  }
}
</script>

# 逻辑判断


<script>
// if 判断
if (this.fileContent) {
  if (fileType === 'xlsx' || fileType === 'xls') {

  } else {
    this.$message({
      type: 'warning',
      message: '附件格式错误,请重新上传!'
    })
  }
} else {
  this.$message({
    type: 'warning',
    message: '请上传附件!'
  })
}


// 优化
if (!this.fileContent) {
  this.$message({
    type: 'warning',
    message: '请上传附件!'
  })
  return
}

if (!(fileType === 'xlsx' || fileType === 'xls')) {
  this.$message({
    type: 'warning',
    message: '附件格式错误,请重新上传!'
  })
}
</script>

# 组件存放规范

// 组件文件位置
// 组件命名规范:大驼峰命名, 首字母大写,每个单词首字母大写。

├── src // 源码
     ├── components // 公共组件 多个地方引用的组件,具备高度可复用的特点
     │    ├── AppButton.vue 
     │    └── AppTitle.vue
     └── view
          └── insuranceScheme  // 保险方案
               ├── components //此处放保险方案相关的组件,拆分的业务组件
               │    ├── ListTable.vue // 保险方案列表表格组件
               │    └── ListAddUser.vue // 保险方案列表,添加,员工组件。
               └── list.vue  // 保险方案列表

# 工具类js / 公共js

// js 存放
├── src // 源码
     ├── utils // 所有不需要特殊分类的js 都推荐放到这里
     │    ├── common.js 
     │    └── date.js
     ├── router // 路由相关的js (特殊类举例)
     └── store  // 状态管理相关的js (特殊类举例)

# Vue计算属性

// 尽量使用计算属性代替方法进行计算
<div v-for="item in [1,2,3]">
  {{ getListName(item) }}
</div>


export default {
  computed: {
    // 推荐
    getListName() {
      return (item)=>{
        return '我的名字是:'+ item
      }
    }
  },
  methods:{
    // 不推荐
    getListName(item){
      return '我的名字是:' + item
    },
  },
}

# 合并代码注意事项。

// soucetree 默认填写的 说明不要删除自己写,可以体现冲突的地方,便于排查问题。

// 自动填写的内容示例
Merge branch 'develop' into develop_zzg_router_tag

# Conflicts:
#	src/views/caseClaimModule/common/draggable.vue
#	src/views/login/login.vue

updated: 2/21/2023, 3:48:51 AM