@tinkcarlos/skillora 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
# Frontend 领域专业知识库
|
|
2
|
+
|
|
3
|
+
> 创建日期: 2025-01-17
|
|
4
|
+
> 知识来源: 深度研究 + 行业最佳实践
|
|
5
|
+
> 适用场景: 优化/创建前端开发相关 Skills
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 目录
|
|
10
|
+
|
|
11
|
+
1. [核心概念](#1-核心概念)
|
|
12
|
+
2. [现代化开发模式](#2-现代化开发模式)
|
|
13
|
+
3. [组件设计原则](#3-组件设计原则)
|
|
14
|
+
4. [状态管理](#4-状态管理)
|
|
15
|
+
5. [性能优化](#5-性能优化)
|
|
16
|
+
6. [常见陷阱](#6-常见陷阱)
|
|
17
|
+
7. [可访问性](#7-可访问性a11y)
|
|
18
|
+
8. [工具与技术](#8-工具与技术)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. 核心概念
|
|
23
|
+
|
|
24
|
+
### 1.1 前端三要素
|
|
25
|
+
|
|
26
|
+
来源: [MDN Web Docs](https://developer.mozilla.org/)
|
|
27
|
+
|
|
28
|
+
**前端 = HTML (结构) + CSS (表现) + JavaScript (行为)**
|
|
29
|
+
|
|
30
|
+
| 要素 | 职责 | 关键技术 |
|
|
31
|
+
|------|------|----------|
|
|
32
|
+
| **HTML** | 内容结构化 | 语义化标签、可访问性、SEO |
|
|
33
|
+
| **CSS** | 视觉表现 | 布局、动画、响应式设计 |
|
|
34
|
+
| **JavaScript** | 交互行为 | DOM 操作、事件处理、数据通信 |
|
|
35
|
+
|
|
36
|
+
### 1.2 现代前端架构
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
┌─────────────────────────────────────────┐
|
|
40
|
+
│ 现代前端架构 │
|
|
41
|
+
├─────────────────────────────────────────┤
|
|
42
|
+
│ 展示层 → 逻辑层 → 数据层 │
|
|
43
|
+
│ (UI) (State) (API) │
|
|
44
|
+
│ │
|
|
45
|
+
│ 特点: 组件化、声明式、响应式 │
|
|
46
|
+
└─────────────────────────────────────────┘
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 2. 现代化开发模式
|
|
52
|
+
|
|
53
|
+
### 2.1 框架选择原则
|
|
54
|
+
|
|
55
|
+
| 框架 | 适用场景 | 优点 | 缺点 |
|
|
56
|
+
|------|----------|------|------|
|
|
57
|
+
| **React** | 复杂 SPA、大型团队 | 生态丰富、灵活 | 学习曲线陡 |
|
|
58
|
+
| **Vue** | 快速开发、中小型项目 | 易学、模板语法清晰 | 生态相对较小 |
|
|
59
|
+
| **Svelte** | 性能敏感、轻量级 | 无虚拟 DOM、编译优化 | 生态较新 |
|
|
60
|
+
| **Angular** | 企业级应用、大团队 | 完整框架、TypeScript 支持 | 过重、学习曲线陡 |
|
|
61
|
+
|
|
62
|
+
### 2.2 CSR vs SSR
|
|
63
|
+
|
|
64
|
+
| 方案 | 特点 | 适用场景 | 工具 |
|
|
65
|
+
|------|------|----------|------|
|
|
66
|
+
| **CSR (Client-Side Rendering)** | 浏览器渲染 | SPA、后台管理 | React Router, Vue Router |
|
|
67
|
+
| **SSR (Server-Side Rendering)** | 服务端渲染 | SEO 要求高 | Next.js, Nuxt.js |
|
|
68
|
+
| **SSG (Static Site Generation)** | 构建时生成 | 博客、文档站 | Next.js, Hugo |
|
|
69
|
+
|
|
70
|
+
### 2.3 Build Tools
|
|
71
|
+
|
|
72
|
+
| 工具 | 生态 | 特点 |
|
|
73
|
+
|------|------|------|
|
|
74
|
+
| **Vite** | 多框架 | 极快、热更新、简单配置 |
|
|
75
|
+
| **Webpack** | 多框架 | 配置强大、生态成熟 |
|
|
76
|
+
| **esbuild** | 多框架 | 极速、Go 编写 |
|
|
77
|
+
| **Turbopack** | 多框架 (Next.js 15+) | Rust 编写、增量构建 |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 3. 组件设计原则
|
|
82
|
+
|
|
83
|
+
### 3.1 组件设计最佳实践
|
|
84
|
+
|
|
85
|
+
来源: [React Docs: Thinking in React](https://react.dev/learn/thinking-in-react)
|
|
86
|
+
|
|
87
|
+
**核心原则**:
|
|
88
|
+
1. **单一职责** - 一个组件只做一件事
|
|
89
|
+
2. **可复用性** - 通过 props 自定义
|
|
90
|
+
3. **组合优于继承** - 使用组合模式
|
|
91
|
+
4. **受控 vs 非受控** - 明确数据流
|
|
92
|
+
|
|
93
|
+
### 3.2 组件模式
|
|
94
|
+
|
|
95
|
+
#### 3.2.1 容器组件 vs 展示组件
|
|
96
|
+
|
|
97
|
+
```javascript
|
|
98
|
+
// ❌ 错误:混合逻辑和视图
|
|
99
|
+
function UserList({ users, onFetch }) {
|
|
100
|
+
useEffect(() => onFetch(), []);
|
|
101
|
+
return <ul>{users.map(u => <li>{u.name}</li>)}</ul>;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// ✅ 正确:分离容器和展示
|
|
105
|
+
// 展示组件
|
|
106
|
+
function UserListView({ users }) {
|
|
107
|
+
return <ul>{users.map(u => <li>{u.name}</li>)}</ul>;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 容器组件
|
|
111
|
+
function UserListContainer() {
|
|
112
|
+
const [users, setUsers] = useState([]);
|
|
113
|
+
const fetchUsers = () => api.getUsers().then(setUsers);
|
|
114
|
+
|
|
115
|
+
useEffect(() => fetchUsers(), []);
|
|
116
|
+
|
|
117
|
+
return <UserListView users={users} />;
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### 3.2.2 高阶组件 (HOC) vs Hooks
|
|
122
|
+
|
|
123
|
+
来源: [React Hooks vs HOC](https://react.dev/reference/react/hooks)
|
|
124
|
+
|
|
125
|
+
| 模式 | 用途 | 现状 |
|
|
126
|
+
|------|------|------|
|
|
127
|
+
| HOC | 复用组件逻辑 | 已被 Hooks 替代 |
|
|
128
|
+
| Hooks | 复用状态逻辑 | ✅ 推荐 |
|
|
129
|
+
| Render Props | 复用渲染逻辑 | 特定场景使用 |
|
|
130
|
+
|
|
131
|
+
### 3.3 Props 设计
|
|
132
|
+
|
|
133
|
+
**良好 Props 设计原则**:
|
|
134
|
+
- 明确类型定义
|
|
135
|
+
- 提供默认值
|
|
136
|
+
- 避免 props drilling
|
|
137
|
+
- 使用 TypeScript/PropTypes
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// ✅ 好的 Props 设计
|
|
141
|
+
interface ButtonProps {
|
|
142
|
+
variant?: 'primary' | 'secondary' | 'ghost';
|
|
143
|
+
size?: 'small' | 'medium' | 'large';
|
|
144
|
+
disabled?: boolean;
|
|
145
|
+
onClick?: () => void;
|
|
146
|
+
children: ReactNode;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const Button: React.FC<ButtonProps> = ({
|
|
150
|
+
variant = 'primary',
|
|
151
|
+
size = 'medium',
|
|
152
|
+
disabled = false,
|
|
153
|
+
onClick,
|
|
154
|
+
children
|
|
155
|
+
}) => {
|
|
156
|
+
// 实现逻辑
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 4. 状态管理
|
|
163
|
+
|
|
164
|
+
### 4.1 状态层级
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
┌─────────────────────────────────────────┐
|
|
168
|
+
│ 状态管理决策树 │
|
|
169
|
+
├─────────────────────────────────────────┤
|
|
170
|
+
│ 本地组件状态 → useState/useReducer │
|
|
171
|
+
│ 跨组件状态 → Context API / Zustand │
|
|
172
|
+
│ 全局复杂状态 → Redux / XState │
|
|
173
|
+
│ 服务器状态 → React Query / SWR │
|
|
174
|
+
└─────────────────────────────────────────┘
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 4.2 状态管理方案对比
|
|
178
|
+
|
|
179
|
+
| 方案 | 复杂度 | 适用场景 | 学习成本 |
|
|
180
|
+
|------|--------|----------|----------|
|
|
181
|
+
| **useState** | 低 | 单个组件状态 | 低 |
|
|
182
|
+
| **useReducer** | 中 | 复杂组件状态逻辑 | 中 |
|
|
183
|
+
| **Context API** | 中-高 | 跨组件数据 | 中 |
|
|
184
|
+
| **Zustand** | 中 | 轻量级全局状态 | 低 |
|
|
185
|
+
| **Redux Toolkit** | 高 | 大型应用全局状态 | 高 |
|
|
186
|
+
| **Jotai** | 中 | 细粒度状态更新 | 中 |
|
|
187
|
+
|
|
188
|
+
### 4.3 服务器状态管理
|
|
189
|
+
|
|
190
|
+
来源: [React Query Documentation](https://tanstack.com/query/latest)
|
|
191
|
+
|
|
192
|
+
**问题**:手动管理服务器状态容易出错。
|
|
193
|
+
|
|
194
|
+
**解决方案**:使用数据获取库
|
|
195
|
+
|
|
196
|
+
| 库 | 特点 |
|
|
197
|
+
|------|------|
|
|
198
|
+
| **React Query** | 缓存、自动重试、乐观更新 |
|
|
199
|
+
| **SWR** | 轻量、实时数据同步 |
|
|
200
|
+
| **Apollo Client** | GraphQL 专用、状态管理 |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 5. 性能优化
|
|
205
|
+
|
|
206
|
+
### 5.1 渲染性能
|
|
207
|
+
|
|
208
|
+
来源: [React Performance Optimization](https://react.dev/learn/render-and-commit)
|
|
209
|
+
|
|
210
|
+
**核心问题**:避免不必要的重渲染。
|
|
211
|
+
|
|
212
|
+
| 优化技术 | 原理 | 适用场景 |
|
|
213
|
+
|----------|------|----------|
|
|
214
|
+
| **memo** | 浅比较 props | 纯展示组件 |
|
|
215
|
+
| **useMemo** | 缓存计算结果 | 昂贵计算 |
|
|
216
|
+
| **useCallback** | 稳定函数引用 | 传递给子组件的回调 |
|
|
217
|
+
| **虚拟列表** | 只渲染可见项 | 长列表 |
|
|
218
|
+
|
|
219
|
+
```javascript
|
|
220
|
+
// ❌ 错误:每次渲染都重新创建函数
|
|
221
|
+
function Parent() {
|
|
222
|
+
return <Child onClick={() => doSomething()} />;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// ✅ 正确:使用 useCallback 稳定函数
|
|
226
|
+
function Parent() {
|
|
227
|
+
const handleClick = useCallback(() => doSomething(), [/* deps */]);
|
|
228
|
+
return <Child onClick={handleClick} />;
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 5.2 加载性能
|
|
233
|
+
|
|
234
|
+
| 优化项 | 技术 | 效果 |
|
|
235
|
+
|--------|------|------|
|
|
236
|
+
| **代码分割** | React.lazy, Suspense | 减少初始包体积 |
|
|
237
|
+
| **懒加载** | 动态 import | 按需加载 |
|
|
238
|
+
| **预加载** | `<link rel="preload">` | 提前加载关键资源 |
|
|
239
|
+
| **图片优化** | WebP, 响应式图片, 懒加载 | 减少图片体积 |
|
|
240
|
+
|
|
241
|
+
### 5.3 运行时性能
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// ❌ 错误:N+1 查询
|
|
245
|
+
async function fetchPosts() {
|
|
246
|
+
const posts = await api.getPosts();
|
|
247
|
+
for (const post of posts) {
|
|
248
|
+
post.author = await api.getUser(post.authorId); // N+1 查询
|
|
249
|
+
}
|
|
250
|
+
return posts;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// ✅ 正确:批量查询
|
|
254
|
+
async function fetchPosts() {
|
|
255
|
+
const posts = await api.getPosts();
|
|
256
|
+
const authorIds = [...new Set(posts.map(p => p.authorId))];
|
|
257
|
+
const authors = await api.getUsers(authorIds); // 批量查询
|
|
258
|
+
return posts.map(post => ({
|
|
259
|
+
...post,
|
|
260
|
+
author: authors.find(a => a.id === post.authorId)
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 6. 常见陷阱
|
|
268
|
+
|
|
269
|
+
### 6.1 React 特定陷阱
|
|
270
|
+
|
|
271
|
+
| 陷阱 | 表现 | 解决 |
|
|
272
|
+
|------|------|------|
|
|
273
|
+
| useEffect 依赖缺失 | 闭包捕获旧值 | 正确列出依赖或移除依赖 |
|
|
274
|
+
| setState 异步 | setState 后立即读取旧值 | 使用函数式 setState |
|
|
275
|
+
| Props Drilling | props 层层传递 | 使用 Context 或状态管理库 |
|
|
276
|
+
| Key 属性错误 | 列表更新异常 | 使用稳定的唯一 key |
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
// ❌ 错误:setState 异步问题
|
|
280
|
+
function Counter() {
|
|
281
|
+
const [count, setCount] = useState(0);
|
|
282
|
+
|
|
283
|
+
const handleClick = () => {
|
|
284
|
+
setCount(count + 1);
|
|
285
|
+
console.log(count); // 还是旧值
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// ✅ 正确:使用函数式更新
|
|
290
|
+
function Counter() {
|
|
291
|
+
const [count, setCount] = useState(0);
|
|
292
|
+
|
|
293
|
+
const handleClick = () => {
|
|
294
|
+
setCount(c => c + 1);
|
|
295
|
+
console.log(count); // 注意:这里还是旧值
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 6.2 CSS 陷阱
|
|
301
|
+
|
|
302
|
+
| 陷阱 | 表现 | 解决 |
|
|
303
|
+
|------|------|------|
|
|
304
|
+
| **z-index 层级混乱** | 元素不按预期显示 | 建立层叠上下文 |
|
|
305
|
+
| **Flexbox 不居中** | 对齐问题 | 理解 align-items/justify-content |
|
|
306
|
+
| **响应式断点混乱** | 布局错乱 | 统一断点系统 |
|
|
307
|
+
| **过度使用 !important** | 样式难以覆盖 | 优化选择器优先级 |
|
|
308
|
+
|
|
309
|
+
### 6.3 通用陷阱
|
|
310
|
+
|
|
311
|
+
| 陷阱 | 表现 | 解决 |
|
|
312
|
+
|------|------|------|
|
|
313
|
+
| **不处理错误边界** | 整个应用崩溃 | 使用 Error Boundary |
|
|
314
|
+
| **内存泄漏** | 性能下降 | 清理订阅、定时器、事件监听器 |
|
|
315
|
+
| **XSS 风险** | 注入攻击 | 避免直接插入 HTML,使用 React/DOM API |
|
|
316
|
+
| **硬编码环境变量** | 部署困难 | 使用 .env 文件 |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 7. 可访问性 (a11y)
|
|
321
|
+
|
|
322
|
+
### 7.1 WCAG 标准
|
|
323
|
+
|
|
324
|
+
来源: [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
325
|
+
|
|
326
|
+
**四大原则**:
|
|
327
|
+
- **Perceivable (可感知)** - 信息可感知
|
|
328
|
+
- **Operable (可操作)** - 可用键盘操作
|
|
329
|
+
- **Understandable (可理解)** - 内容清晰易懂
|
|
330
|
+
- **Robust (健壮性)** - 兼容辅助技术
|
|
331
|
+
|
|
332
|
+
### 7.2 可访问性检查清单
|
|
333
|
+
|
|
334
|
+
```markdown
|
|
335
|
+
## A11y Checklist
|
|
336
|
+
|
|
337
|
+
### 语义 HTML
|
|
338
|
+
- [ ] 使用正确的 HTML 标签 (nav, main, article, section)
|
|
339
|
+
- [ ] 图片有 alt 文本
|
|
340
|
+
- [ ] 表单有 label 关联
|
|
341
|
+
- [ ] 链接有描述性文本
|
|
342
|
+
|
|
343
|
+
### 键盘导航
|
|
344
|
+
- [ ] 所有交互元素可通过键盘访问
|
|
345
|
+
- [ ] 有焦点指示器
|
|
346
|
+
- [ ] Tab 顺序合理
|
|
347
|
+
- [ ] 没有键盘陷阱
|
|
348
|
+
|
|
349
|
+
### 颜色对比
|
|
350
|
+
- [ ] 文本和背景对比度 ≥ 4.5:1
|
|
351
|
+
- [ ] 大文本对比度 ≥ 3:1
|
|
352
|
+
- [ ] 不仅用颜色传达信息
|
|
353
|
+
|
|
354
|
+
### 屏幕阅读器
|
|
355
|
+
- [ ] 使用 ARIA 属性 (aria-label, aria-live)
|
|
356
|
+
- [ ] 动态内容有 aria-live
|
|
357
|
+
- [ ] 表单错误有 aria-describedby
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## 8. 工具与技术
|
|
363
|
+
|
|
364
|
+
### 8.1 开发工具
|
|
365
|
+
|
|
366
|
+
| 类别 | 工具 | 用途 |
|
|
367
|
+
|------|------|------|
|
|
368
|
+
| **浏览器 DevTools** | Chrome/Firefox DevTools | 调试、性能分析 |
|
|
369
|
+
| **React DevTools** | Chrome 扩展 | 组件树、状态检查 |
|
|
370
|
+
| **Vue DevTools** | Chrome 扩展 | 组件检查、Vuex 调试 |
|
|
371
|
+
| **Storybook** | 独立开发环境 | 组件文档、可视化测试 |
|
|
372
|
+
|
|
373
|
+
### 8.2 性能工具
|
|
374
|
+
|
|
375
|
+
| 工具 | 用途 |
|
|
376
|
+
|------|------|
|
|
377
|
+
| **Lighthouse** | 性能审计、可访问性检查 |
|
|
378
|
+
| **WebPageTest** | 多地性能测试 |
|
|
379
|
+
| **Bundle Analyzer** | 打包体积分析 |
|
|
380
|
+
| **React Profiler** | 渲染性能分析 |
|
|
381
|
+
|
|
382
|
+
### 8.3 类型安全
|
|
383
|
+
|
|
384
|
+
| 工具 | 特点 |
|
|
385
|
+
|------|------|
|
|
386
|
+
| **TypeScript** | 静态类型、IDE 支持 |
|
|
387
|
+
| **Zod** | 运行时类型验证 |
|
|
388
|
+
| **PropTypes** | React 运行时类型检查 |
|
|
389
|
+
|
|
390
|
+
### 8.4 测试工具
|
|
391
|
+
|
|
392
|
+
| 类别 | 工具 | 框架 |
|
|
393
|
+
|------|------|------|
|
|
394
|
+
| **单元测试** | Jest, Vitest | React, Vue |
|
|
395
|
+
| **组件测试** | Testing Library | React, Vue |
|
|
396
|
+
| **E2E 测试** | Cypress, Playwright | 通用 |
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## 参考资料
|
|
401
|
+
|
|
402
|
+
- [React Documentation](https://react.dev/) - React 官方文档
|
|
403
|
+
- [Vue Documentation](https://vuejs.org/) - Vue 官方文档
|
|
404
|
+
- [MDN Web Docs](https://developer.mozilla.org/) - Web 标准
|
|
405
|
+
- [WCAG 2.1](https://www.w3.org/WAI/WCAG21/quickref/) - 可访问性标准
|
|
406
|
+
- [React Query](https://tanstack.com/query/latest) - 服务器状态管理
|
|
407
|
+
- [Zustand](https://zustand-demo.pmnd.rs/) - 轻量级状态管理
|
|
408
|
+
- [Storybook](https://storybook.js.org/) - 组件文档
|
|
409
|
+
- [Tailwind CSS](https://tailwindcss.com/) - 实用优先 CSS 框架
|
|
410
|
+
- [Web Performance](https://web.dev/performance/) - 性能优化指南
|