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

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

浅读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
JavaScript设计模式:装饰器模式
2024-11-19 06:05:51 +0800 CST
如何在Rust中使用UUID?
2024-11-19 06:10:59 +0800 CST
mysql 优化指南
2024-11-18 21:01:24 +0800 CST
LLM驱动的强大网络爬虫工具
2024-11-19 07:37:07 +0800 CST
Nginx 反向代理 Redis 服务
2024-11-19 09:41:21 +0800 CST
如何在Vue中处理动态路由?
2024-11-19 06:09:50 +0800 CST
快速提升Vue3开发者的效率和界面
2025-05-11 23:37:03 +0800 CST
css模拟了MacBook的外观
2024-11-18 14:07:40 +0800 CST
WebSQL数据库:HTML5的非标准伴侣
2024-11-18 22:44:20 +0800 CST
JavaScript设计模式:单例模式
2024-11-18 10:57:41 +0800 CST
js迭代器
2024-11-19 07:49:47 +0800 CST
api远程把word文件转换为pdf
2024-11-19 03:48:33 +0800 CST
Redis和Memcached有什么区别?
2024-11-18 17:57:13 +0800 CST
goctl 技术系列 - Go 模板入门
2024-11-19 04:12:13 +0800 CST
php指定版本安装php扩展
2024-11-19 04:10:55 +0800 CST
CSS 媒体查询
2024-11-18 13:42:46 +0800 CST
服务器购买推荐
2024-11-18 23:48:02 +0800 CST
如何实现虚拟滚动
2024-11-18 20:50:47 +0800 CST
程序员茄子在线接单