浅读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. 组件结构化
组件的文件顺序为:script
、template
、style
。script
部分的代码顺序为:props
、emits
、refs
、computed
、methods
、events
。
2.2. 引号规范
- HTML/模板中:标签属性使用双引号。
- JS中:字符串使用单引号。
2.3. 组件名命名规范
组件名称采用
kebab-case
,保持项目内统一:- GOOD:
checkbox-button.vue
,checkbox-group.vue
- GOOD:
组件以描述性单词结尾,重要单词放前面,如
search-button
、search-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-verb
、verb-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 类型的变量使用 is
或 has
前缀:
- GOOD:
isString
,hasFallback
3.2. Boolean 类型方法命名
Boolean 类型方法使用 is
、has
、should
等前缀:
- GOOD:
isTagStartChar
,hasPropsChanged
,shouldSkipAttr
3.3. 业务方法命名
方法名使用小驼峰命名,前缀为动词,如 create
、init
、get
:
- GOOD:
createElementWithCodegen
,getBookData
3.4. 事件方法命名
交互事件命名以 on
开头,逻辑处理事件以 handle
开头:
- GOOD:
onClick
,handleIconClick
,handleChange
3.5. 数据请求、处理类方法
数据请求方法以 get
或 fetch
开头,数据提交类方法以 post
、send
或 upload
开头:
- 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, }
总结
代码规范能提高项目代码的一致性、可读性,尤其在多人协作开发中,保持统一的代码风格能够降低沟通成本。通过合理使用工具如 eslint
、prettier
来保证代码的规范性,同时保持代码的工匠精神,坚持使用正确的代码风格。