小工具知识网

当前位置: 首页 > 行业知识 > 浅谈前端代码规范

行业知识

浅谈前端代码规范

2026-11-15 05:07:31 来源:互联网转载

HTML规范

1、语义化标签

  1. 列表使用 ul li
  2. 文字使用 p span em cite 等
  3. 标题使用 h1 h2 等
  4. 布局使用 section aside header footer article 等 HTML5 布局标签

2、自定义标签

使用自闭合标签的写法 小写加下划线

  

3、多特性分行写

为提高可读性 组件应用时换行 按照 ref、class、传入、传出 顺序书写

  

4、行内使用表达式

在模版中 简单情况使用表达式 复杂情况使用计算属性或函数

        ...          ...  export default {  methods: {    /**    * ***显示判断    * @param data **    */    getTypeShow(data) {      return data.type && item.id === 10    }  }}

5、避免重复

避免过多重复代码 果超过三行类似的代码 配置数据再循环遍历

6、代码嵌套

根据元素嵌套规范 每个块状元素独立一行 内联元素可选

        

7、活用 v-if v-show

v-show 不会改变dom树 不会导致重新渲染 用于频繁的切换显示隐藏
v-if 会改变dom树 会导致重新渲染 用于只控制一次显示隐藏

8、注释规范

        ...      

CSS规范

1、避免使用

  1. 避免使用标签选择器 因为在 Vue 中 特别是在局部组件 使用标签选择器效率特别低 损耗性能 建议需要的情况直接定义 class
  2. 非特殊情况下 禁止使用 ID 选择器定义样式(有 JS 逻辑的情况除外)
  3. 避免使用important选择器
  4. 避免大量的嵌套规则 控制在3级之内 对于超过4级的嵌套 考虑重写或新建子项
  5. 避免使用ID选择器及全局标签选择器防止污染全局样式

2、推荐使用

  1. 提取公用样式进assets文件styles里 按模块/功能区分
  2. 使用 scoped 关键字 约束样式生效的范围
  3. 可复用属性尽量抽离为页面变量 易于统一维护
  4. 使用混合(mixin)根据功能定义模块 然后在需要使用的地方通过 @include 调用 避免编码时重复输入代码段

3、书写顺序

CSS 属性书写顺序 先决定定位宽高显示大小 再做局部细节修饰

定位属性(或显示属性 display) => 宽高属性 => 边距属性(margin padding) => 背景 颜色 字体等修饰属性的定义 这样定义为了更好的可读性 让别人只要看一眼就能在脑海中浮现最终显示的效果

.class-name {  position: fixed;  top: 100px;  left: 0;  right: 0;  bottom: 0;  display: block;  width: 100%;  height: 100%;  margin: 10px;  padding: 10px;  background-color: red;   border-radius: 2px;  font-size: 14px;  color: #000;  line-height: 1.42;}

4、样式覆盖

组件内部需要覆盖UI框架样式 必须在最外层组件加类名

        .input-container {  .name-input {    .el-input__inner {      font-size: 16px;    }  }}

5、注释规范

以 / 注释内容 / 格式注释 前后空格 嵌套子类需要一个回车分割开

css

复制代码

/* 注释内容 */.class-name {  width: 20px;     /* 这里需要换行 */  .class-name-l {    color: blue  }}

JS规范

1、用法规范

  1. 在vue-cli 脚手架使用架自带的指向 src 开发目录的 '@' 符号引入文件资源
  2. 使用 template 或计算属性规避 v-if 和 v-for 用在一起
  3. 统一使用单引号
  4. 坚持单一原则 函数内仅做该函数应该做的 尽量避免通过传入标记控制不同行为
  5. 优先考虑三目运算符 但不要写超过3层的三目运算符
  6. 对于无用代码必须及时删除 例如:一些调试的 console 语句、无用的弃用功能代码
  7. 请求数据的方法使用try catch 错误捕捉 注意执行回调

2、组件顺序规范

export default {  name: 'ExampleName',        // 这个名字推荐:大写字母开头驼峰法命名  props: {},                  // Props 定义  components: {},             // 组件定义  directives: {},             // 指令定义  mixins: [],                 // 混入 Mixin 定义。  data () {                   // Data 定义。    return {      dataProps: ''           // Data 属性的每一个变量都需要在后面写注释说明用途,就像这样    }},  computed: {},               // 计算属性定义。  watch: {},                  // 属性变化监听器。  created () {},              // 生命钩子函数,按照他们调用的顺序。  mounted () {},              // 挂载到元素。  activated () {},            // 使用 keep-alive 包裹的组件激活触发的钩子函数。  deactivated () {},          // 使用 keep-alive 包裹的组件离开时触发的钩子函数  methods: {                  // 组件方法定义。    publicbFunction () {}     // 公共方法的定义,可以提供外面使用    _privateFunction () {}    // 私有方法,下划线定义,仅供组件内使用。多单词,注意与系统名字冲突!  }}

3、注释规范

函数/方法注释必须包含函数说明,有参数和返回值时必须使用注释标识,它的作者, 依赖关系和兼容性信息。

  1. 单行注释:双斜线后应跟空格,且缩进与上下文的代码保持一致;或在行尾注释,在行尾依然需要左右空格
// 注释const userID = 24const userID = 12 // 注释
  1. 多行注释:一般用于注释难以理解的、可能存在错误的、逻辑强的代码,且缩进一致
/* * 针对下方代码的说明 * 第一行太长写第二行 */const aa = 1
  1. 函数注释:写明传入参数名称、类型推荐完整注释以下格式
/** * @Description 加入购物车 * @Author luochen_ya * @Date 2024-03-13 * @param {Number} goodId 商品id * @param {Array} specs sku规格 * @param {Number} amount 数量 * @param {String} remarks 备注 * @returns  购物车信息 */apiProductAddCard = (goodId, specs, amount, remarks) => {  return axios.post('***', { goodId, specs, amount, remarks })}
  1. 文件注释:写明文件描述
/** * @Description: 文件描述 * @Author: li_hua * @Date: 2024-08-23 */

命名规范

1、目录命名

按照小驼峰命名 首字母小写

  1. 项目文件夹:projectName
  2. 样式文件夹:css / scss
  3. 脚本文件夹:js

2、图片命名

图片就是img开头 图标就是icon开头

  1. img_功能_模块_编号
  2. icon_功能_模块_编号

3、文件命名

  1. 按照小驼峰命令 英文单词过长或超出2个以上 可缩略至前四位 列如:comming_soon.png 等
  2. 有复数含义 采用复数命名 列如:minixs styles images icons 等
  3. 静态资源命名格式为小写 + 下划线 列如:icon_arrow.png img_logo.png 等
  4. 组件命名为小驼峰 公用组件加上gd前缀 列如:gdOwnerComponents 等

4、方法命名

method 方法命名不同于文件命名,尽量完整英文命名,语义表达需完整清楚

  1. 按照小驼峰命名法 可使用常见动词约定
  • can: 判断是否可执行某个动作 函数返回一个布尔值 true可执行 false不可执行
  • has: 判断是否含有某个值 函数返回一个布尔值 true含有此值 false不含有此值
  • is: 判断是否为某个值,函数返回一个布尔值 true为某个值 false不为某个值
  • get: 获取某个值 函数返回一个非布尔值
  • set: 设置某个值 无返回值或者返回是否加载完成的结果
    1. 语义化英文命名 仅组件内部使用方法前加上_(下划线)区分
    export default {  methods: { // 组件方法定义    publicbFunction () {} // 公共方法的定义 可以提供外面使用    _privateFunction () {} // 私有方法 下划线定义 仅供组件内使用  }}
    1. 引入组件:首字母大写的驼峰法命名
    import MyOwnerComponents from '@/components/MyOwnerComponents'
    1. 变量:使用驼峰式命名 优先使用 let const 避免使用 var
    let userName = 'luochen_ya'const userInfo = {  name: 'luochen_ya',  age: 24}
    1. 常量:字母全部大写 以下横线 _ 划分
    const Constant = {  // 公用状态  COMMON_STATUS_ENABLE = 1, // 启用  COMMON_STATUS_DISABLE = 2, // 停用}

    5、样式命名

    class命名以小写字母开头 小写字母、中划线和数字组成 以下是一些常用到的 class的名字

    1. 包裹层: .xxx-wrap
    2. 列表: .xxx-list
    3. 列表项: .xxx-list-item
    4. 左边内容: .xxx-left
    5. 中间内容: .xxx-middle
    6. 右边内容: .xxx-right
    7. 某个页面:.xxx-page

    6、常用词

    1. 常用动词
    • get => 取值
    • set => 给值
    • add => 新增
    • remove => 移除
    • show => 显示
    • hide => 隐藏
    • view => 查看
    • browse => 浏览
    • edit => 修改
    • save => 保存
    • delete => 删除
    • find => 查询
    • undo => 撤销
    • redo => 重做
    • clean => 清除
    • index => 索引
    • observe => 观察
    • send => 发送
    • receive => 接收
    • refresh => 刷新
    • synchronize => 同步
      1. 常用缩写
      • object => obj
      • array => arr
      • function => fn
      • message => msg
      • button => btn

        工程结构

        1、目录构建

        ├── api                       所有api接口├── assets                    靜態資源│   ├── fonts                   全局公用字体│   ├── icons                   全局公用图标│   ├── images                  全局公用图片│   └── styles                  全局公用样式├── components                公用組件│   ├── base                    基础组件│   └── business                业务组件├── constants                 常量 统一管理├── locales                   多语言管理├── plugins                   插件 统一管理├── router                    路由 统一管理│   └── index.js               ├── store                     vuex 统一管理│   ├── modules                 │   ├── getters.js              │   └── index.js                ├── utils                     工具函数 统一管理├── views                     视图目录(所有业务逻辑的页面)

        2、代码风格

        可以直接使用eslint 强制统一代码规范 还能规避一些语法错误 或者按照以下自己定义的去配置eslint来使用

上一篇:公司服务器怎么上网?

下一篇:中国移动APP下载指南