前端开发规范

一、基本原则

  1. 语义化

    1. HTML/CSS 使用语义化标签和类名(如 <header> 而非 <div class="top">
  2. 模块化

    1. 组件按功能拆分,遵循单一职责原则
  3. 性能优先

    1. 减少重绘、压缩资源、按需加载

二、目录结构与文件规范

项目目录

bash 复制代码
src/  
├── assets/          # 静态资源  
├── components/      # 通用组件 (Button, Input)  
├── views/           # 页面级组件  
├── styles/          # 全局样式与变量  
├── utils/           # 工具函数  
├── api/             # 接口封装  
├── router/          # 路由配置  
└── store/           # 状态管理

文件命名

  • HTML/CSS:小写短横线(login-page.css)。
  • JS类/Vue/React组件:大驼峰(PrimaryButton.vue)。
  • 图片:描述性命名(banner-home.png)。

三、HTML 规范

  1. 语法

    1. 属性双引号:<div class="container">
    2. 自闭合标签加斜线:<img src="..." />
  2. 属性顺序

bash 复制代码
class > id > data-* > src/type/href > alt/title
csharp 复制代码
ref > props > event

<CustomComponent ref="test" prop1="1" @click="test" />
  1. 语义化示例
xml 复制代码
 <!-- Bad -->
<div onclick="submit()">Submit</div>

<!-- Good -->
<button type="submit" class="btn-primary">Submit</button>

四、CSS/SCSS 规范

  1. 命名

    1. 外套 wrap ------------------用于最外层

    2. 头部 header ----------------用于头部

    3. 主要内容 main ------------用于主体内容(中部)

    4. 左侧 main-left -------------左侧布局

    5. 右侧 main-right -----------右侧布局

    6. 导航条 nav -----------------网页菜单导航条

    7. 内容 content ---------------用于网页中部主体

    8. 底部 footer -----------------用于底部

    9. 文件中CSS命名规范

      • 1.所有命名以中划线'-'连接
      • 2.文件最外层类名
    10. 项目名-文件夹名-文件名-wrap,例如:labour-roster-wrap{}

  2. 属性顺序

css 复制代码
.selector {
  /* 布局 */
  display: flex;
  position: absolute;

  /* 盒模型 */
  width: 100%;
  padding: 10px;

  /* 视觉 */
  background: #fff;
  color: #333;

  /* 文本 */
  font-size: 16px;
  line-height: 1.5;

  /* 其他 */
  z-index: 10;
}
  1. 嵌套层级

属性层级尽量不要超过三级

markdown 复制代码
.card {
  .header {
    .title { ... }
  }
}

五、JavaScript规范

  1. 语法

    1. 代码行尾加分号;
    2. 相等判断尽量使用 ===
    3. 变量声明优先级 const > let > var
  2. 命名

    1. 变量/函数:小驼峰(getUserInfo)。
    2. 类/组件:大驼峰(UserModel)。
    3. 常量:全大写(API_TIMEOUT = 5000)。
  3. 模块化

javascript 复制代码
 // utils/auth.js
export const login = (username, password) => { ... };

// 使用
import { login } from '@/utils/auth';

六、组件设计规范

  1. props设计

必填项提供默认值

arduino 复制代码
props: {
    size: { type: String, default: 'medium' }
}
  1. API命名
  • 事件:onClickonChange
  1. 避免props臃肿

复杂场景用插槽(Slot)替代嵌套Props

xml 复制代码
<Modal>
  <template #header> Custom Header </template>
</Modal>

七、工作流与提交规范

  1. Git 分支策略

main:生产分支

test:测试分支

dev:开发分支(暂无开发环境可无此分支)

feat-*:功能分支

hotfix-*: 线上问题临时分支

功能分支和hotfixf分支在测试通过上线后随即删除,保持git仓库分支清晰简洁

  1. Commit Message

commit message 写清楚此次提交的内容

八、注释

注释统一

  1. 文件注释

    xml 复制代码
    <!--
     * @Description:
     * @Author: suer
     * @Date: 2021-12-13 17:45:53
     * @LastEditTime: 2021-12-14 13:45:53
     * @LastEditors: user
     * @Usage:  组件使用说明
    -->
  2. 函数注释

    php 复制代码
    /**
      * @description: 方法描述
      * @param {参数类型} 参数名称
      * @param {参数类型} 参数名称
      * @return 没有返回信息写 void / 有返回信息 {返回类型} 描述信息
      */
  3. 变量注释

    csharp 复制代码
    const userName = '' // 用户姓名
    
    form: {
        contractNum: "", //合同编号
        contractDate: "", //签约日期
        contractTime: "", //合同期限
        contractPath: "", //合同附件
        contractStauts: "", //合同状态
    }

九、工具链推荐

用途 工具
代码格式化 ESLint + Prettier
CSS 预处理 Sass(SCSS语法)
状态管理 Vuex/Pinia(Vue) / Redux(React)
UI 库 elementui/elementplus/antdesign
相关推荐
前端小巷子15 分钟前
跨域问题解决方案:JSONP
前端·javascript·面试
eric*168823 分钟前
尚硅谷张天禹老师课程配套笔记
前端·vue.js·笔记·vue·尚硅谷·张天禹·尚硅谷张天禹
程序员爱钓鱼39 分钟前
Go语言中的反射机制 — 元编程技巧与注意事项
前端·后端·go
GIS之路1 小时前
GeoTools 结合 OpenLayers 实现属性查询(二)
前端·信息可视化
烛阴1 小时前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
AA-代码批发V哥1 小时前
HTML之表单结构全解析
前端·html
聪聪的学习笔记1 小时前
【1】确认安装 Node.js 和 npm版本号
前端·npm·node.js
小磊哥er2 小时前
【前端工程化】你知道前端编码规范包含哪些内容吗
前端
菌菇汤2 小时前
uni-app实现单选,多选也能搜索,勾选,选择,回显
前端·javascript·vue.js·微信小程序·uni-app·app
Ramos丶2 小时前
【ABAP】 从无到有 新建一个Webdynpro程序
java·前端·javascript