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

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

浅读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 开发规范

推荐文章

HTML + CSS 实现微信钱包界面
2024-11-18 14:59:25 +0800 CST
一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
mysql int bigint 自增索引范围
2024-11-18 07:29:12 +0800 CST
PHP设计模式:单例模式
2024-11-18 18:31:43 +0800 CST
地图标注管理系统
2024-11-19 09:14:52 +0800 CST
Vue 3 是如何实现更好的性能的?
2024-11-19 09:06:25 +0800 CST
html一个全屏背景视频
2024-11-18 00:48:20 +0800 CST
PHP如何进行MySQL数据备份?
2024-11-18 20:40:25 +0800 CST
Vue3中如何进行性能优化?
2024-11-17 22:52:59 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
Java环境中使用Elasticsearch
2024-11-18 22:46:32 +0800 CST
API 管理系统售卖系统
2024-11-19 08:54:18 +0800 CST
Vue3 结合 Driver.js 实现新手指引
2024-11-18 19:30:14 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
Linux查看系统配置常用命令
2024-11-17 18:20:42 +0800 CST
LLM驱动的强大网络爬虫工具
2024-11-19 07:37:07 +0800 CST
js一键生成随机颜色:randomColor
2024-11-18 10:13:44 +0800 CST
Vue3中的Slots有哪些变化?
2024-11-18 16:34:49 +0800 CST
程序员茄子在线接单