Skip to content
本页目录

代码规约

命名规范

1、项目、目录命名

采用小写方式,以中线“-”分隔

js
正例:pro-gic-web
   反例:proGicWeb  pro_gic_web
正例:pro-gic-web
   反例:proGicWeb  pro_gic_web
js
正例:/src/views/user-setting/
反倒:/src/views/userSetting/   /src/views/UserSetting/
正例:/src/views/user-setting/
反倒:/src/views/userSetting/   /src/views/UserSetting/

2、文件命名规范

一般文件命名: 小驼峰,首字母小写,每个单词首字母大写

js
正例:`userInfoPage.vue` `userInfoPage.tsx`

 反例:`user_Info_Page.vue` `user-info-page.tsx`
正例:`userInfoPage.vue` `userInfoPage.tsx`

 反例:`user_Info_Page.vue` `user-info-page.tsx`

3、组件命名:

组件命名:大驼峰,首字母大写,每个单词首字母大写

js
正例:`CustomeUpload.vue`
 反例:`customeUpload.vue` `custom-form.tsx`
正例:`CustomeUpload.vue`
 反例:`customeUpload.vue` `custom-form.tsx`

4、方法,事件命名规范

    1. 普通方法: 常用方法以动词 + 名词 小驼峰形式进行对方法进行语义命名 如: sendMessage()
    1. 类方法、类:大驼峰
    js
    class User {}
    function User() {}
    class User {}
    function User() {}
    1. 事件名:handle + 名称(可选)+ 动词
    js
    export default {
      methods: {
        handleItemClick() {
          //...
        },
        handleItemHover() {
          //...
        },
      },
    }
    export default {
      methods: {
        handleItemClick() {
          //...
        },
        handleItemHover() {
          //...
        },
      },
    }

附: 常用方法动词

js
get 获取/set 设置,
add 增加/remove 删除
create 创建/destory 移除
start 启动/stop 停止
open 打开/close 关闭,
load 载入/save 保存,
create 创建/destroy 销毁
begin 开始/end 结束,
import 导入/export 导出,
inject 注入/extract 提取,
view 查看/browse 浏览
edit 编辑/modify 修改,
copy 复制/paste 粘贴,
insert 插入/delete 移除,
add 加入/append 添加
clean 清理/clear 清除,
index 索引/sort 排序
find 查找/search 搜索,
increase 增加/decrease 减少
compile 编译/execute 执行,
debug 调试/trace 跟踪
build 构建/publish 发布
encode 编码/decode 解码
encrypt 加密/decrypt 解密,
compress 压缩/decompress 解压缩
send 发送/receive 接收
download 下载/upload 上传,
refresh 刷新/synchronize 同步
update 更新/revert 复原,
lock 锁定/unlock 解锁
check out 签出/check in 签入,
submit 提交/commit 交付
expand 展开/collapse 折叠
begin 起始/end 结束,
start 开始/finish 完成
get 获取/set 设置,
add 增加/remove 删除
create 创建/destory 移除
start 启动/stop 停止
open 打开/close 关闭,
load 载入/save 保存,
create 创建/destroy 销毁
begin 开始/end 结束,
import 导入/export 导出,
inject 注入/extract 提取,
view 查看/browse 浏览
edit 编辑/modify 修改,
copy 复制/paste 粘贴,
insert 插入/delete 移除,
add 加入/append 添加
clean 清理/clear 清除,
index 索引/sort 排序
find 查找/search 搜索,
increase 增加/decrease 减少
compile 编译/execute 执行,
debug 调试/trace 跟踪
build 构建/publish 发布
encode 编码/decode 解码
encrypt 加密/decrypt 解密,
compress 压缩/decompress 解压缩
send 发送/receive 接收
download 下载/upload 上传,
refresh 刷新/synchronize 同步
update 更新/revert 复原,
lock 锁定/unlock 解锁
check out 签出/check in 签入,
submit 提交/commit 交付
expand 展开/collapse 折叠
begin 起始/end 结束,
start 开始/finish 完成

5、变量,常量命名规范

  1. 变量:小驼峰
    • 普通变量 userId
    • 布尔变量:is/has 等表示含义 如: isVisible
    • 数组集合等: 以list/s结尾 如:userList/users
  2. 常量:单词字母大写,单词之间通过下划线连接
    • 如: const MAX_IMAGE_SIZE = 10 * 1024 * 1024;

6、注释规范

  1. 单行注释 双斜杠结尾: 行内注释
  2. 多行注释:函数注释,尤其是公用函数,变更、枚举使用
js
/**
 * 组件/方法 名称
 * @module 存放位置
 * @desc 描述
 * @author 作者
 * @date 时间
 * @param {Object} [title]    - 参数说明
 * @param {String} [columns] - 参数说明
 * @example 调用示例
 **/
/**
 * 组件/方法 名称
 * @module 存放位置
 * @desc 描述
 * @author 作者
 * @date 时间
 * @param {Object} [title]    - 参数说明
 * @param {String} [columns] - 参数说明
 * @example 调用示例
 **/

工具与插件

开发工具

推荐:VSCode

代码格式和代码质量的校验: EsLint + Prettier

  • 统一处理缩进、格式化、空格、括号、单双引约束、结尾封号等代码风格
  • 统一检查命名规范、申明引用、类型检查等质量约束

CSS 处理器:Less

  • 组件内样式 使用 scoped

Vue 规范

API 风格

推荐:组合式 AP vue3 默认支持两种不同的风格书写:选项式 API组合式 AP

Script setup

  • 自动注册子组件
  • 属性和方法无需返回
  • 推荐
js
<template>
  <button @click="count++">自加{{ count }}</button>
  <button @click="decrease">自减{{ count }}</button>
</template>
<script setup lang="ts">
import { ref } from 'vue';
let count = ref(0);

const decrease = ()=>{
   count.value --;
}

</script>
<style lang="less" scoped></style>
<template>
  <button @click="count++">自加{{ count }}</button>
  <button @click="decrease">自减{{ count }}</button>
</template>
<script setup lang="ts">
import { ref } from 'vue';
let count = ref(0);

const decrease = ()=>{
   count.value --;
}

</script>
<style lang="less" scoped></style>
  • 不推荐
js
<template>
  <button @click="count++">自加{{ count }}</button>
  <button @click="decrease">自减{{ count }}</button>
</template>
<script lang="ts">
import { ref } from 'vue';
export default defineComponent({
   setup(){
      let count = ref(0);
      const decrease = ()=>{
         count.value --;
      }

      return {count,decrease}
   }
})

</script>
<style lang="less" scoped></style>
<template>
  <button @click="count++">自加{{ count }}</button>
  <button @click="decrease">自减{{ count }}</button>
</template>
<script lang="ts">
import { ref } from 'vue';
export default defineComponent({
   setup(){
      let count = ref(0);
      const decrease = ()=>{
         count.value --;
      }

      return {count,decrease}
   }
})

</script>
<style lang="less" scoped></style>

文件拆分

文件代码量大时,可以单独定义数据代码 data.ts 和 逻辑代码 .servier.ts 文件目录结构

js
├── user-info
│ ├── index.data.ts    // 变量、数据
│ ├── index.service.ts // 逻辑、事件
│ └── index.vue        // 视图
├── user-info
│ ├── index.data.ts    // 变量、数据
│ ├── index.service.ts // 逻辑、事件
│ └── index.vue        // 视图

预算单位软件产品开发部