前端项目规范

287 阅读2分钟

css相关

  1. 使用less
  2. 类名统一使用遵循 kebab-case(短横线分隔命名) 约定
  3. 分类区别
  4. 尽量减少使用calc函数,加速页面渲染

Js相关

  1. 页面统一采用小驼峰命名,首字母小写

  2. 组件也采用小驼峰命名,但首字母需大写

    组件名应该始终是多个单词的,根组件 App 除外

    有意义的名词、简短、具有可读性

    命名遵循 PascalCase(单词首字母大写命名) 约定

    • 公用组件以 CP (项目名缩写简称) 开头,如(CPDatePicker,AbcdTable)

    • 页面内部组件以组件模块名简写为开头,Item 为结尾,如(StaffBenchToChargeItem,StaffBenchAppNotArrItem)

    • 使用遵循 kebab-case(短横线分隔命名) 约定

    在页面中使用组件需要前后闭合,并以短线分隔,如(<abcd-date-picker></abcd-date-picker><abcd-table></abcd-table>

    导入及注册组件时,遵循 PascalCase(单词首字母大写命名) 约定

    同时还需要注意:必须符合自定义元素规范: 切勿使用保留字。

  3. 采用eslint-standard规范

  4. 提交需遵守commitlint规范

❯ feat:         🌟  一个新功能
  fix:           🐛  一个 bug 修复
  perf:         🚀  提升性能的代码更改
  style:       🎨  对代码含义无影响的改动(空格,格式化,等,非 UI 变动)
  docs:         📝  只有文档发生改变
  test:         🔧  添加一些缺失的测试或者修正已存在的测试
  refactor: 🔨  既不是修复 bug 也不是添加新功能的代码更改
|-- cp-web项目结构
    |-- .editorconfig 编辑器规则
    |-- .gitignore git忽视列表
    |-- .gitlab-ci.yml gitlab-ci流水线
    |-- CHANGELOG.md 变更文档
    |-- README.md
    |-- package.json
    |-- vue.config.js
    |-- config
    |   |-- nginx.conf nginx反向代理
    |-- public
    |   |-- favicon.ico
    |   |-- index.html
    |   |-- loading.gif 加载动画
    |-- src
        |-- App.vue
        |-- main.js
        |-- mock.js
        |-- api 请求封装在这里
        |-- assets 静态资源(一般不用,存储在阿里云oss,cdn)
        |-- components 通用组件 使用说明参考组件内
        |-- router
        |   |-- index.js
        |-- utils 通用工具函数
        |   |-- initJsBridge.js 初始化jsbridge
        |   |-- jsBridgeMethods.js jsbridge具体方法,在文件内查看使用说明
        |   |-- utils.js 通用工具函数
        |-- views 页面

注释规范

  1. 公共组件使用说明
  2. 各组件中重要函数或者类说明
/**
 * 函数描述
 *
 * @param {string} p1 参数1的说明
 * @param {string} p2 参数2的说明,比较长
 *     那就换行了.
 * @param {number=} p3 参数3的说明(可选)
 * @return {Object} 返回值描述
 */
function foo(p1, p2, p3) {
    var p3 = p3 || 10;
    return {
        p1: p1,
        p2: p2,
        p3: p3
    };
}

  1. 复杂的业务逻辑处理说明
  2. 特殊情况的代码处理说明,对于代码中特殊用途的变量、存在临界值、函数中使用的hack、使用了某种算法或思路等需要进行注释描述
  3. 注释块必须以/(至少两个星号)开头/;
  4. 单行注释使用//;
  5. 多重 if 判断语句