vue 3逻辑复用规范聚焦命名、组织、验证、协作四环节:命名统一为use+驼峰(如usepagination);目录按职责分user/common/ui三层,单文件单函数;每个hook须含typescript类型、副作用清理、vitest测试;文档与example.vue示例紧邻代码。

命名必须统一且可预测
所有组合式函数文件名和导出名都用 use + 驼峰式功能名(如 usePagination、useFormSubmit),禁止缩写或拼音。函数内部不暴露无意义变量(比如 data、res),返回值字段名要语义清晰(tableData 比 list 更好)。TypeScript 类型定义必须随函数一起导出,接口名与函数名对齐(UsePaginationOptions)。
目录结构按职责分层,不按技术类型堆砌
把逻辑拆到具体业务场景里,而不是“所有 hooks 放一个文件夹”:
-
/composables/user/:含useLogin、useProfileEdit等与用户强相关的逻辑 -
/composables/common/:只放真正跨域通用的,如useDebounce、useClipboard -
/composables/ui/:专为组件行为服务的,如useDropdown、useModalState
禁止出现 utils/ 或 hooks/ 这类宽泛目录;每个 .ts 文件只导出一个主函数,避免一个文件塞多个 useXxx。
每个 Hook 必须自带最小验证闭环
新写的组合式函数不能只跑通就行,要过三关:
- 类型校验:用 TypeScript 写全参数、返回值、可选字段的类型,VS Code 能直接提示错误
-
副作用清理:涉及
watch、setTimeout、addEventListener的,必须在onUnmounted或onBeforeUnmount里清除 -
独立可测:提供配套的 Vitest 单元测试文件(如
usePagination.spec.ts),覆盖正常流程、边界输入、异常响应
CI 流程中强制检查这三项,缺一不可。
文档和示例写在代码旁边,不是 wiki 里
每个 useXxx.ts 文件顶部加 JSDoc 注释,说明用途、典型使用场景、关键参数含义。同时在同级目录下配一个 example.vue —— 是真实可运行的最小示例,不是伪代码。比如 useTable 的示例里,就只调用它、渲染表格、触发一次搜索,不掺杂其他业务逻辑。新人拉下代码就能立刻看到怎么用、效果什么样。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










