项目规范

1 阅读5分钟

规则配置参考:

# 项目规范

- 使用 TypeScript
- 代码风格遵循 ESLint 配置
- 所有函数需要添加注释
- 测试覆盖率需达到 80% 以上

一、目标

  • 统一团队编码风格,提升可读性和维护性
  • 减少低级错误和潜在 Bug
  • 提高协作效率,便于 Code Review 和自动化流程集成

二、技术栈约定(示例)

类别推荐技术
语言JavaScript (ES6+) / TypeScript(推荐)
框架React / Vue / Node.js(根据项目定)
包管理npm / yarn / pnpm
构建工具Vite / Webpack / Rollup
代码格式化Prettier
代码检查ESLint
Git 提交Commitlint + Husky(可选)
版本控制Git

✅ 建议优先使用 TypeScript 提升类型安全。


三、代码风格规范

1. 变量与声明

  • 使用 const / let,禁止使用 var
  • 优先使用 const,仅在需要重新赋值时用 let
  • 所有变量必须先声明再使用
// ✅ 正确
const userName = "Alice";
let count = 0;

// ❌ 错误
var oldStyle = true;
name = "Bob"; // 未声明

2. 命名规则

类型规则示例
变量、函数驼峰命名法(camelCase)getUserInfo, isLoading
常量全大写 + 下划线(UPPER_CASE)MAX_RETRY_COUNT
类、构造函数大驼峰(PascalCase)class UserProfile {}
私有成员前缀 _(约定俗成)_privateMethod()
类型/接口(TS)PascalCaseinterface UserConfig {}

3. 字符串

  • 使用单引号 ',除非字符串中包含单引号
  • 拼接字符串使用模板字符串(反引号 ` `${}` `
// ✅
const message = `Hello, ${name}`;
const path = '/api/users';

// ❌
const msg = "Hello " + name;

4. 对象与数组

  • 使用字面量创建对象和数组
  • 属性简写、计算属性合理使用
  • 解构赋值提升可读性
// ✅
const user = { name, age };
const [first, second] = list;
const { username, email } = userInfo;

// ❌ 不推荐
const obj = new Object();
const arr = new Array();

5. 函数

  • 优先使用箭头函数(尤其是回调)
  • 普通函数用于方法定义或需绑定 this 的场景
  • 参数默认值代替 || 判断
// ✅
const fetchUser = async (id = 1) => { ... };
list.map(item => item.name);

// ❌
function() { ... }.bind(this)
if (!id) id = 1;

6. 异步处理

  • 使用 async/await 替代 .then().catch()
  • 必须用 try/catch 包裹异步操作
  • 不要忽略 Promise 的错误
// ✅
try {
  const res = await api.getData();
} catch (err) {
  console.error('请求失败:', err);
}

// ❌
fetch('/api').then(...).catch(...) // 嵌套深,不易读

7. 比较与条件判断

  • 使用严格相等:===!==
  • 避免隐式类型转换
  • 条件判断尽量简洁
// ✅
if (status === 'active') { ... }

// ❌
if (status == 1) { ... }

四、目录结构建议(通用)

src/
├── components/        # 通用组件(React/Vue)
├── pages/             # 页面级组件
├── utils/             # 工具函数
│   ├── request.js     # 封装的 HTTP 请求
│   └── helpers.js     # 格式化、校验等
├── services/          # API 接口服务层
├── store/             # 状态管理(Redux/Vuex/Pinia)
├── assets/            # 静态资源(图片、字体)
├── styles/            # 公共样式
├── routes/            # 路由配置
├── constants/         # 常量定义
└── App.js             # 主应用入口

💡 根据框架调整,如 Vue 项目可用 views/ 替代 pages/


五、代码质量保障

1. ESLint 配置(.eslintrc.js 示例)

module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:import/recommended'
  ],
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module'
  },
  rules: {
    'no-var': 'error',
    'prefer-const': 'error',
    'eqeqeq': ['error', 'always'],
    'curly': 'error'
  }
};

2. Prettier 配置(.prettierrc

{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "printWidth": 80
}

3. 编辑器集成

  • 安装 VS Code 插件:
    • ESLint
    • Prettier
  • 开启保存时自动格式化:
// settings.json
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
}

六、Git 提交规范

1. 分支命名

分支类型命名规则示例
主分支main / mastermain
开发分支developdevelop
功能分支feat/功能名feat/user-login
修复分支fix/问题描述fix/header-bug
发布分支release/v1.2.0release/v1.3.0

2. 提交信息格式(Conventional Commits)

格式:<type>(<scope>): <description>

类型说明
feat新功能
fix修复 bug
docs文档更新
style格式调整(不影响逻辑)
refactor重构代码
perf性能优化
test测试相关
chore构建或工具变更

✅ 示例:

feat(login): add social login buttons
fix(header): prevent overflow on mobile
refactor(api): split user service into modules

❌ 错误:

update file
fixed something

✅ 推荐使用 Commitlint + Husky 自动校验提交格式。


七、注释与文档

1. 注释原则

  • 函数必须有注释说明用途、参数、返回值
  • 复杂逻辑添加行内注释
  • 避免无意义注释(如 i++ // i 加 1
/**
 * 获取用户信息
 * @param {number} userId - 用户 ID
 * @returns {Promise<Object>} 用户数据
 */
async function fetchUserInfo(userId) { ... }

2. 文件头部注释(可选)

/**
 * @fileOverview 用户登录模块
 * @author zhangsan
 * @since 2025-04-05
 */

八、测试规范(推荐)

类型工具建议要求
单元测试Jest / Vitest核心工具函数覆盖率 ≥ 80%
组件测试React Testing Library / Vue Test Utils关键交互需覆盖
E2E 测试Cypress / Playwright主流程自动化验证

✅ 建议:每个新功能都应配套测试用例。


九、安全性注意事项

  • 防止 XSS:对用户输入进行转义或使用框架的安全机制
  • 避免 eval()new Function()
  • 敏感信息不硬编码在前端(如 API Key)
  • 使用 HTTPS 加载资源
  • 第三方库定期审计(可用 npm audit

十、部署与 CI/CD 建议

  • 使用 GitHub Actions / GitLab CI / Jenkins 实现自动化构建
  • 流程建议:
    1. 提交代码 → 触发 CI
    2. 运行 Lint + Test
    3. 构建打包
    4. 部署到预发布环境
    5. 手动确认后上线生产
# .github/workflows/deploy.yml 示例片段
- run: npm run lint
- run: npm run test
- run: npm run build

十一、附录:推荐工具清单

用途工具
代码格式化Prettier
语法检查ESLint
提交校验Commitlint + Husky
包依赖分析BundlePhobia / depcheck
类型检查TypeScript
日志调试console.log → 生产移除(可用 vite-plugin-remove-console

十二、结语

“规范不是束缚,而是自由的护栏。”
—— 统一的规范让团队走得更快、更稳。

请所有开发者遵守本规范。如有例外情况,需在 PR 中说明并获得团队认可。


📄 文档输出建议

  • 存为 PROJECT_GUIDE.md 放入项目根目录
  • 配合 .eslintrc, .prettierrc, commitlint.config.js 等配置文件一起使用
  • 新成员入职必读

下一步建议
你可以将此规范导出为 PDF 或 Wiki 页面,并在项目初始化时集成以下脚本:

# 初始化 husky 和 commitlint(示例)
npx husky-init
npm install --save-dev @commitlint/config-conventional @commitlint/cli
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js

是否需要我为你生成一个可下载的 Markdown 文件PDF 版本?也可以根据你的项目类型(React/Vue/Node)定制专属规范模板。欢迎继续提问!