众所周知,Vue Hooks(通常指 Composition API 中的功能)是 Vue 3 引入的一种代码组织方式,用于更灵活地组合和复用逻辑。但是在项目中大量使用这种写法该如何更好的搭建结构呢?以下是可供参考实践的案例。
一、Hooks 组织原则
-
单一职责每个 Hook 应专注于完成单一功能,避免功能过重。
-
模块化将 Hooks 拆分为独立的模块,便于复用和维护。
-
类型安全使用 TypeScript 明确类型,避免隐式
any
。 -
分层管理根据功能或业务逻辑将 Hooks 分层管理,避免混乱。
二、项目目录结构
以下是一个适用于大型项目的目录结构示例:
src/
├── hooks/ # Hooks 主目录
│ ├── core/ # 核心功能 Hooks(与业务无关)
│ │ ├── useFetch.ts
│ │ ├── useEventListener.ts
│ │ └── useLocalStorage.ts
│ ├── domain/ # 领域相关 Hooks(与业务逻辑绑定)
│ │ ├── useUser.ts
│ │ ├── useProduct.ts
│ │ └── useOrder.ts
│ ├── ui/ # UI 相关 Hooks(与组件逻辑绑定)
│ │ ├── useForm.ts
│ │ ├── useModal.ts
│ │ └── usePagination.ts
│ ├── shared/ # 跨项目共享的 Hooks
│ │ ├── useAuth.ts
│ │ └── useConfig.ts
│ └── types/ # Hooks 类型定义
│ ├── hooks.d.ts
│ └── domain.d.ts
├── components/ # 组件目录
├── store/