编程 总结出30个代码前端代码规范

2024-11-19 07:59:43 +0800 CST views 504

浅读Vue3代码10万行,总结出30个代码规范

本文通过对Vue3及Element-plus等代码库的分析,总结了30个前端代码规范,涵盖目录、模块、组件、事件等方面。这些规范能够提高代码的一致性、可读性和维护性,特别适用于多人协作的项目。

1. 目录和文件命名规范

1.1. 模块命名

采用kebab-case命名方式,以模块-子模块的格式命名,最多不超过2个单词:

  • BAD: compilerCore
  • GOOD: compiler-core, runtime-dom

1.2. 文件夹命名

文件夹命名使用kebab-case,以名词形式命名,功能相似的文件夹使用复数形式结尾:

  • BAD: Components, Hooks
  • GOOD: components, hooks

1.3. 组件文件夹命名

复杂组件拆分为多个子文件夹,子文件夹也以kebab-case命名:

  • BAD: DropdownMenuItem
  • GOOD: dropdown-menu, dropdown-item

1.4. assets目录规范

assets目录用于存放静态资源,命名以复数形式结尾,文件使用kebab-case命名:

  • GOOD:
    - assets
      - images
      - icons
      - styles
    

2. 组件规范

2.1. 组件结构化

组件的文件顺序为:scripttemplatestylescript部分的代码顺序为:propsemitsrefscomputedmethodsevents

2.2. 引号规范

  • HTML/模板中:标签属性使用双引号。
  • JS中:字符串使用单引号。

2.3. 组件名命名规范

  • 组件名称采用kebab-case,保持项目内统一:

    • GOOD: checkbox-button.vue, checkbox-group.vue
  • 组件以描述性单词结尾,重要单词放前面,如search-buttonsearch-input-query

2.4. 子组件命名

子组件应以父组件名为前缀:

  • GOOD: todo-list-item.vue, todo-list-item-button.vue

2.5. 组件Props命名

Props使用lowerCamelCase命名,模板中使用kebab-case

  • BAD:
    <welcome-message greetingText="hi"></welcome-message>
    
  • GOOD:
    <welcome-message greeting-text="hi"></welcome-message>
    

2.6. 组件事件命名规则

事件名使用verb表示操作,或者采用noun-verbverb-noun的形式:

  • GOOD:
    defineEmits(['open-menu', 'state-change', 'before-enter'])
    

2.7. 组件模板属性

每个属性占用一行,提升可读性:

  • BAD:
    <my-component foo="a" bar="b" baz="c"/>
    
  • GOOD:
    <my-component
      foo="a"
      bar="b"
      baz="c"
    />
    

2.8. 复杂表达式提取到computed

避免在模板中使用复杂表达式,复杂逻辑应提取到computed

  • BAD:
    <div :style="{
        height: '30rem',
        transform: `rotateX(${parallax.roll}deg)`,
      }"></div>
    
  • GOOD:
    const cardStyle = computed(() => ({
      height: '30rem',
      transform: `rotateX(${parallax.roll}deg)`,
    }))
    

3. JavaScript 规范

3.1. Boolean 类型变量命名

Boolean 类型的变量使用 ishas 前缀:

  • GOOD: isString, hasFallback

3.2. Boolean 类型方法命名

Boolean 类型方法使用 ishasshould等前缀:

  • GOOD: isTagStartChar, hasPropsChanged, shouldSkipAttr

3.3. 业务方法命名

方法名使用小驼峰命名,前缀为动词,如 createinitget

  • GOOD: createElementWithCodegen, getBookData

3.4. 事件方法命名

交互事件命名以 on 开头,逻辑处理事件以 handle 开头:

  • GOOD: onClick, handleIconClick, handleChange

3.5. 数据请求、处理类方法

数据请求方法以 getfetch 开头,数据提交类方法以 postsendupload 开头:

  • GOOD: getBookData, postBookData

3.6. 类命名

类名使用PascalCase,常用命名规则:

  • GOOD: BaseReactiveHandler, ScriptCompileContext

3.7. 常量命名

常量使用大写字母加下划线的命名方式,通常以复数形式结尾:

  • GOOD: DAYS_IN_WEEK, MONTHS_IN_YEAR

3.8. 枚举命名

枚举名称使用PascalCase,值使用全大写字母加下划线:

  • GOOD:
    export enum ErrorCodes {
      ABRUPT_CLOSING_OF_EMPTY_COMMENT,
      DUPLICATE_ATTRIBUTE,
    }
    

总结

代码规范能提高项目代码的一致性、可读性,尤其在多人协作开发中,保持统一的代码风格能够降低沟通成本。通过合理使用工具如 eslintprettier 来保证代码的规范性,同时保持代码的工匠精神,坚持使用正确的代码风格。

复制全文 生成海报 前端 Vue 开发规范

推荐文章

Vue3中如何实现状态管理?
2024-11-19 09:40:30 +0800 CST
PHP中获取某个月份的天数
2024-11-18 11:28:47 +0800 CST
HTML和CSS创建的弹性菜单
2024-11-19 10:09:04 +0800 CST
在 Docker 中部署 Vue 开发环境
2024-11-18 15:04:41 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
乐观锁和悲观锁,如何区分?
2024-11-19 09:36:53 +0800 CST
内网穿透技术详解与工具对比
2025-04-01 22:12:02 +0800 CST
Gin 框架的中间件 代码压缩
2024-11-19 08:23:48 +0800 CST
纯CSS绘制iPhoneX的外观
2024-11-19 06:39:43 +0800 CST
一个简单的打字机效果的实现
2024-11-19 04:47:27 +0800 CST
Gin 与 Layui 分页 HTML 生成工具
2024-11-19 09:20:21 +0800 CST
Golang 中应该知道的 defer 知识
2024-11-18 13:18:56 +0800 CST
Vue3中如何进行性能优化?
2024-11-17 22:52:59 +0800 CST
前端代码规范 - Commit 提交规范
2024-11-18 10:18:08 +0800 CST
使用 `nohup` 命令的概述及案例
2024-11-18 08:18:36 +0800 CST
Vue3中如何处理跨域请求?
2024-11-19 08:43:14 +0800 CST
Vue3结合Driver.js实现新手指引功能
2024-11-19 08:46:50 +0800 CST
jQuery中向DOM添加元素的多种方法
2024-11-18 23:19:46 +0800 CST
Vue 3 是如何实现更好的性能的?
2024-11-19 09:06:25 +0800 CST
推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
mysql删除重复数据
2024-11-19 03:19:52 +0800 CST
55个常用的JavaScript代码段
2024-11-18 22:38:45 +0800 CST
程序员茄子在线接单