web前端开发规范文档
前端开发规范文档
版本:V1.0
适用范围:Web 前端开发(HTML/CSS/JS/TS/Vue/React)
目的:统一团队编码风格、提升代码可读性与可维护性、降低协作成本、减少线上 Bug、保障项目质量与性能
一、通用原则
- 可读性优先:代码首先给人看,其次给机器执行
- 语义化:优先使用标准、有含义的写法,拒绝“能跑就行”
- 可维护性:结构清晰、命名规范、注释得当、便于迭代
- 一致性:团队内风格统一,不随意个人化写法
- 性能与安全:编码时兼顾加载速度、运行效率、安全风险
二、文件与目录命名规范
2.1 文件夹命名
- 统一使用 小写字母 + 短横线(kebab-case)
- 禁止中文、空格、特殊字符、驼峰、下划线
1
2
3
4
5
6
7
8
9src/
├── assets/ # 静态资源
├── components/ # 公共组件
├── views/ # 页面组件
├── utils/ # 工具函数
├── api/ # 接口请求
├── styles/ # 全局样式
├── router/ # 路由
└── store/ # 状态管理
2.2 文件命名
- 页面/视图文件:
kebab-case.vue/kebab-case.jsx1
2
3
4views/
├── home.vue
├── user-center.vue
└── login.vue - 公共组件:大驼峰(PascalCase)
1
2
3
4components/
├── HeaderBar.vue
├── UserTable.vue
└── FormItem.vue - 工具/JS/TS 文件:
kebab-case.js/camelCase.js1
2
3
4utils/
├── request.js
├── date-utils.js
└── validator.js - 样式文件:
kebab-case.scss/kebab-case.css - 图片/静态资源:小写、语义化,禁止
1.png、test.jpg1
logo.png、user-avatar-default.jpg、bg-banner.png
三、HTML 开发规范
3.1 基础语法
- 统一使用 2 空格缩进,禁止 Tab
- 标签名、属性名全小写
- 自闭合标签必须加
/(Vue/JSX 规范)1
2<img src="logo.png" alt="logo" />
<input type="text" /> - 属性使用 双引号,禁止单引号
- 禁止冗余闭合、空属性
3.2 语义化优先
- 优先使用 HTML5 语义标签:
1
<header> <nav> <main> <section> <article> <footer> - 禁止通篇
div+span堆砌 - 图片必须加
alt,a 标签禁止空href
3.3 结构规范
- 一个页面只允许一个
<h1> - 结构层级清晰:
head只放元信息,body只放内容 - 禁止行内样式、行内事件(特殊场景除外)
1
2<!-- 不推荐 -->
<div style="color:red" onclick="login()"></div>
四、CSS / SCSS 开发规范
4.1 基础规范
- 统一 2 空格缩进
- 属性末尾必须加分号
- 选择器、属性之间空一行
- 禁止使用
!important(公共覆盖除外)
4.2 命名规范(BEM 推荐)
- 块(Block):
user-card - 元素(Element):
user-card__name - 修饰符(Modifier):
user-card--active - 禁止无意义命名:
a1、box2、tt
4.3 属性书写顺序(统一风格)
- 定位 / 显示
- 盒模型
- 文本样式
- 视觉样式(背景、阴影等)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.box {
/* 定位 */
position: absolute;
top: 0;
left: 0;
display: flex;
/* 盒模型 */
width: 100px;
height: 100px;
padding: 10px;
margin: 0;
border: 1px solid #ccc;
/* 文本 */
font-size: 14px;
color: #333;
text-align: center;
/* 视觉 */
background: #fff;
border-radius: 4px;
}
4.4 预处理器(SCSS)规范
- 嵌套层级不超过 3 层
- 公共变量统一管理:
$color-primary、$font-size-base - 公共混合宏(mixin)统一放在
styles/mixins.scss - 禁止嵌套过深导致样式冗余
五、JavaScript / TypeScript 规范
5.1 变量命名
- 普通变量:小驼峰(camelCase)
1
2const userName = '张三'
const userList = [] - 常量:全大写 + 下划线
1
2const MAX_COUNT = 100
const BASE_URL = 'https://xxx.com' - 布尔值:以
is/has/can开头1
2const isLoading = true
const hasPermission = false
5.2 函数命名
- 小驼峰,动词 + 名词
1
2
3function getUserInfo() {}
function handleSubmit() {}
function formatDate() {} - 事件处理函数:
handle + 动作1
handleClick、handleChange、handleSubmit
5.3 语法规范
- 优先使用 **ES6+**:
let/const替代var - 箭头函数、解构赋值、模板字符串优先
- 异步优先:
async/await替代回调地狱 - 禁止隐式全局变量
- 禁止
==,统一使用===
5.4 禁止写法
- 禁止
eval() - 禁止
with(){} - 禁止修改原生对象原型
- 禁止超长函数(单个函数不超过 80 行)
六、Vue 开发规范(团队通用)
6.1 组件命名
- 单文件组件:PascalCase
- 组件使用:
kebab-case1
<UserList />
6.2 代码顺序(强制统一)
1 | |
6.3 Props 规范
- 必须类型校验 + 默认值
- 禁止裸写 props
1
2
3
4
5
6
7props: {
userName: {
type: String,
default: '',
required: true
}
}
6.4 其他规范
- 禁止在
template写复杂表达式 - 事件名使用
kebab-case:@user-change - 计算属性优先,避免 methods 做纯计算
- 禁止 v-if 和 v-for 同节点使用
七、Git 规范
7.1 分支命名
main/master:生产分支dev:开发分支feature/xxx:功能分支bugfix/xxx:修复分支release/x.x.x:发布分支
7.2 提交信息(Angular 规范)
1 | |
feat: 新功能fix: 修复 Bugstyle: 格式调整refactor: 重构docs: 文档perf: 性能优化chore: 构建/工具1
2feat(user): 新增用户列表页
fix(login): 修复登录密码错误提示
八、注释规范
8.1 文件注释
每个文件顶部必须标注:用途、作者、创建时间
1 | |
8.2 函数注释
1 | |
8.3 业务注释
- 复杂逻辑必须加注释
- 禁止无用注释:
// 这是变量 - 注释使用中文,简洁明确
九、性能规范
- 图片必须压缩,使用 WebP/AVIF
- 路由懒加载、组件懒加载
- 防抖节流处理高频事件
- 避免频繁操作 DOM
- 合理使用虚拟列表(长列表)
- 开启 Gzip,配置缓存
- 减少包体积,剔除无用代码
十、安全规范
- 防止 XSS:对用户输入转义,不直接渲染 HTML
- 防止 CSRF:请求带 Token
- 敏感信息不放在 localStorage
- 接口请求统一错误处理
- 禁止前端硬编码密钥、Token
十一、工具与编码环境
- 编辑器:VS Code
- 格式化:Prettier(统一配置)
- 代码检查:ESLint
- Git 工具:GitLens
- 保存时自动格式化、自动修复 ESLint
十二、异常与兼容性
- 接口请求必须
try/catch - 边界值处理:空、0、undefined、数组越界
- 兼容主流浏览器:Chrome、Edge、Firefox
- 移动端兼容微信、支付宝、App Webview
附则
- 本规范为团队基础规范,可根据项目类型微调
- 新成员必须遵守,代码合并前需符合规范
- 规范定期迭代更新,保持实用性与先进性
web前端开发规范文档
https://cszy.top/2017-07-31 web前端开发规范文档/