关于 component-organization
component-organization 是一项前端项目文件组织参考技能,按类型安排文件,并将相关内容归入子目录。它帮助前端开发者在项目扩展时,更容易定位组件、钩子、业务逻辑和共享类型。
主要功能
- 01按类型组织文件
- 02在子目录中归组相关文件
- 03为组件、钩子、逻辑和类型划分位置
- 04提供拆分或归组文件的时机建议
- 05根据纠正建议完善技能
适用场景
- 01规划前端目录结构
- 02为共享 UI 组件安排位置
- 03将可复用钩子与组件代码分开
- 04随前端项目增长调整组织方式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ loxosceles-dev/ dev-skills --skill component-organization安装后在 Claude Code 中输入/component-organization确认已加载。
详细介绍
前端组件组织
这是一种参考模式。 借鉴这种方法,并根据你的情况进行调整——不要照搬。
问题:前端项目不断发展,目录也变得杂乱,相关文件难以查找,共享代码也没有明确的归属位置。
解决方案:按类型组织(组件、钩子、库、类型),并在各类型下创建子目录,以归类相关条目。
模式
frontend/
├── app/ # Framework routing (Next.js app dir, Nuxt pages, etc.)
│ ├── layout.tsx
│ └── page.tsx
├── components/ # All components
│ ├── ui/ # Base primitives (Button, Input, Modal)
│ ├── UserProfile.tsx
│ ├── DashboardChart.tsx
│ └── PostCard.tsx
├── hooks/ # Custom hooks
│ ├── use-auth.ts
│ ├── use-dashboard.ts
│ └── use-debounce.ts
├── lib/ # Utilities, services, business logic
│ ├── api/ # API client, fetch helpers
│ ├── auth/ # Auth context, cookie handling
│ └── utils/ # Pure helper functions
├── queries/ # Data fetching (GraphQL queries, API calls)
├── types/ # Shared type definitions
│ ├── user.ts
│ └── post.ts
└── public/ # Static assets
关键规则:
- 组件放在
components/中,相关组件按子目录分组(例如ui/) - 钩子放在
hooks/中,每个文件包含一个钩子 - 业务逻辑放在
lib/中,并按领域子目录组织 - 多个文件共享的类型放在
types/中 - 基础 UI 原语(按钮、输入框、模态框)放在
components/ui/中
为什么采用这种模式?
优点:
- 清晰可预测:明确知道去哪里查找——所有钩子都在
hooks/中,所有组件都在components/中 - 可复用:易于查找并共享供多个功能使用的组件
- 可扩展:新增钩子或组件时,归属位置一目了然
- 适合组件库:符合共享 UI 套件的组织方式
何时在某种类型下使用子目录:
components/ui/— 在各处复用的基础原语lib/auth/— 一个领域包含多个文件(上下文 + 工具函数 + 类型)lib/api/— API 客户端、拦截器、辅助函数
何时拆分
- 在
components/中新建文件:当 UI 会被复用,或父组件超过约 200 行时 - 在
hooks/中新建文件:当有状态逻辑会被复用,或使组件变得臃肿时 - 在
lib/中新建子目录:当一个领域包含 2 个或更多相关文件时(服务 + 工具函数、上下文 + 辅助函数) - 移至
components/ui/:当组件纯粹用于呈现,不包含业务逻辑时
渐进式改进
如果开发者纠正了本技能本应避免的行为,请提出对此技能的具体修订建议,以避免今后再次出现同样的问题。
评论
支持 Markdown