From ebe2bf610960e48ec0e11272ba9d2a7b4d99cc97 Mon Sep 17 00:00:00 2001 From: sanbuphy Date: Sat, 14 Feb 2026 12:14:07 +0800 Subject: [PATCH] feat: enhance demo components with consistent styling and info boxes - Add standardized header and info box components to all demo files - Improve visual consistency with theme colors and spacing - Add max-height and overflow-y for better content containment - Update package.json build script with --force flag - Add .gitignore entries for REFACTORING files - Fix table formatting in audio-intro.md --- .gitignore | 4 + .../appendix/api-design/DocumentationDemo.vue | 498 +++- .../appendix/api-design/ErrorHandlingDemo.vue | 408 +++- .../api-design/ResponseStructureDemo.vue | 393 +++- .../api-design/VersioningStrategyDemo.vue | 411 +++- .../ArchitectureComparisonDemo.vue | 59 +- .../backend-evolution/ContainerDockerDemo.vue | 56 +- .../backend-evolution/EvolutionIntroDemo.vue | 161 +- .../backend-evolution/MonolithDemo.vue | 61 +- .../backend-evolution/PhysicalServerDemo.vue | 75 +- .../TechStackTimelineDemo.vue | 26 +- .../canvas-intro/AnimationLoopDemo.vue | 135 +- .../canvas-intro/CanvasBasicsDemo.vue | 338 +-- .../canvas-intro/CoordinateSystemDemo.vue | 139 +- .../canvas-intro/EventHandlingDemo.vue | 129 +- .../canvas-intro/ParticleSystemDemo.vue | 122 +- .../appendix/canvas-intro/PerformanceDemo.vue | 131 +- .../cloud-iam/AccessKeyManagementDemo.vue | 8 +- .../appendix/cloud-iam/BestPracticesDemo.vue | 8 +- .../cloud-iam/CrossAccountAccessDemo.vue | 8 +- .../appendix/cloud-iam/IAMStructure.vue | 94 +- .../cloud-iam/IamRamComparisonDemo.vue | 90 +- .../cloud-iam/IdentityProviderDemo.vue | 8 +- .../appendix/cloud-iam/MfaSecurityDemo.vue | 8 +- .../cloud-iam/PermissionHierarchyDemo.vue | 8 +- .../appendix/cloud-iam/PolicyEditorDemo.vue | 11 + .../appendix/cloud-iam/RolePolicyDemo.vue | 8 +- .../cloud-storage-cdn/AccessAnalyticsDemo.vue | 63 +- .../cloud-storage-cdn/CachePolicyDemo.vue | 10 +- .../cloud-storage-cdn/CdnAccelerationDemo.vue | 124 +- .../HttpsOptimizationDemo.vue | 67 +- .../cloud-storage-cdn/ObjectStorageDemo.vue | 247 +- .../TrafficSchedulingDemo.vue | 63 +- .../cloud-storage-cdn/UploadProcessDemo.vue | 12 +- .../FrontendEvolutionDemo.vue | 392 ++-- .../ImperativeVsDeclarativeDemo.vue | 133 +- .../frontend-evolution/JQueryVsStateDemo.vue | 570 ++--- .../frontend-evolution/RoutingModeDemo.vue | 61 +- .../frontend-evolution/SliceRequestDemo.vue | 526 +++-- .../appendix/git-intro/GitThreeAreasDemo.vue | 67 +- .../appendix/git-intro/GitWorkflowDemo.vue | 582 +++-- .../appendix/queue-design/CouplingDemo.vue | 272 +-- .../queue-design/DeadLetterQueueDemo.vue | 385 ++-- .../appendix/queue-design/DecouplingDemo.vue | 522 +++++ .../appendix/queue-design/IdempotenceDemo.vue | 865 ++++++- .../appendix/queue-design/ReliabilityDemo.vue | 694 +++++- .../web-basics/BigFrontendScopeDemo.vue | 167 +- .../appendix/web-basics/CssBoxModel.vue | 61 +- .../appendix/web-basics/CssFlexbox.vue | 260 ++- .../appendix/web-basics/DomManipulator.vue | 183 +- .../ImperativeVsDeclarativeDemo.vue | 240 +- .../appendix/web-basics/WebTechTriad.vue | 2 + docs/.vitepress/theme/index.js | 2 + docs/zh-cn/appendix/api-design.md | 1075 +++------ docs/zh-cn/appendix/audio-intro.md | 36 +- docs/zh-cn/appendix/backend-evolution.md | 695 ++++-- .../appendix/backend-layered-architecture.md | 1161 +++++----- docs/zh-cn/appendix/canvas-intro.md | 725 ++---- docs/zh-cn/appendix/cloud-iam.md | 203 +- docs/zh-cn/appendix/cloud-storage-cdn.md | 334 ++- docs/zh-cn/appendix/computer-networks.md | 1013 ++++----- docs/zh-cn/appendix/frontend-evolution.md | 709 +++--- docs/zh-cn/appendix/gateway-proxy.md | 1736 ++++---------- docs/zh-cn/appendix/git-intro.md | 336 ++- docs/zh-cn/appendix/load-balancing.md | 664 +++--- docs/zh-cn/appendix/queue-design.md | 896 +++----- docs/zh-cn/appendix/url-to-browser.md | 121 +- docs/zh-cn/appendix/web-basics.md | 1057 ++++++--- package-lock.json | 2022 +++++------------ package.json | 2 +- 70 files changed, 12307 insertions(+), 10445 deletions(-) create mode 100644 docs/.vitepress/theme/components/appendix/queue-design/DecouplingDemo.vue diff --git a/.gitignore b/.gitignore index 26f8dcc..b683492 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ MULTI_LANGUAGE_PLAN.md scripts/collapse_code_blocks.py .gitignore scripts/verify.sh +REFACTORING_PLAN.md +.gitignore +.gitignore +REFACTORING_REPORT.md diff --git a/docs/.vitepress/theme/components/appendix/api-design/DocumentationDemo.vue b/docs/.vitepress/theme/components/appendix/api-design/DocumentationDemo.vue index ea59c4f..5d24ab1 100644 --- a/docs/.vitepress/theme/components/appendix/api-design/DocumentationDemo.vue +++ b/docs/.vitepress/theme/components/appendix/api-design/DocumentationDemo.vue @@ -1,50 +1,496 @@ + diff --git a/docs/.vitepress/theme/components/appendix/api-design/ErrorHandlingDemo.vue b/docs/.vitepress/theme/components/appendix/api-design/ErrorHandlingDemo.vue index ecc0d11..5aa4145 100644 --- a/docs/.vitepress/theme/components/appendix/api-design/ErrorHandlingDemo.vue +++ b/docs/.vitepress/theme/components/appendix/api-design/ErrorHandlingDemo.vue @@ -1,97 +1,379 @@ + + + diff --git a/docs/.vitepress/theme/components/appendix/api-design/ResponseStructureDemo.vue b/docs/.vitepress/theme/components/appendix/api-design/ResponseStructureDemo.vue index 7144057..1fd0015 100644 --- a/docs/.vitepress/theme/components/appendix/api-design/ResponseStructureDemo.vue +++ b/docs/.vitepress/theme/components/appendix/api-design/ResponseStructureDemo.vue @@ -1,50 +1,397 @@ + diff --git a/docs/.vitepress/theme/components/appendix/api-design/VersioningStrategyDemo.vue b/docs/.vitepress/theme/components/appendix/api-design/VersioningStrategyDemo.vue index cdce418..3769edc 100644 --- a/docs/.vitepress/theme/components/appendix/api-design/VersioningStrategyDemo.vue +++ b/docs/.vitepress/theme/components/appendix/api-design/VersioningStrategyDemo.vue @@ -1,50 +1,413 @@ + diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/ArchitectureComparisonDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/ArchitectureComparisonDemo.vue index 429024c..e0e9259 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/ArchitectureComparisonDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/ArchitectureComparisonDemo.vue @@ -1,8 +1,9 @@ @@ -108,24 +114,35 @@ const currentEra = computed(() => { border: 1px solid var(--vp-c-divider); border-radius: 8px; background: var(--vp-c-bg-soft); - padding: 1.5rem; + padding: 1rem; margin: 1rem 0; + max-height: 600px; + overflow-y: auto; } .demo-header { - margin-bottom: 1.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid var(--vp-c-divider); } -.demo-header h4 { - margin: 0 0 0.5rem 0; - font-size: 1.1rem; +.demo-header .icon { + font-size: 1.25rem; +} + +.demo-header .title { + font-weight: bold; + font-size: 1rem; color: var(--vp-c-text-1); } -.demo-header p { - margin: 0; - font-size: 0.9rem; +.demo-header .subtitle { color: var(--vp-c-text-2); + font-size: 0.85rem; + margin-left: 0.5rem; } .comparison-grid { @@ -152,8 +169,7 @@ const currentEra = computed(() => { .era-card.active { border-color: var(--vp-c-brand); - background: rgba(102, 126, 234, 0.1); - box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2); + background: var(--vp-c-brand-soft); } .era-icon { @@ -271,6 +287,25 @@ const currentEra = computed(() => { color: var(--vp-c-text-2); } +.info-box { + background: var(--vp-c-bg-alt); + padding: 0.75rem; + border-radius: 6px; + font-size: 0.85rem; + color: var(--vp-c-text-2); + margin-top: 0.75rem; + display: flex; + gap: 0.25rem; +} + +.info-box .icon { + flex-shrink: 0; +} + +.info-box strong { + color: var(--vp-c-text-1); +} + @media (max-width: 768px) { .comparison-grid { grid-template-columns: repeat(2, 1fr); diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/ContainerDockerDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/ContainerDockerDemo.vue index 373038b..8ee6284 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/ContainerDockerDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/ContainerDockerDemo.vue @@ -1,8 +1,9 @@ @@ -69,24 +75,35 @@ const benefits = [ border: 1px solid var(--vp-c-divider); border-radius: 8px; background: var(--vp-c-bg-soft); - padding: 1.5rem; + padding: 1rem; margin: 1rem 0; + max-height: 600px; + overflow-y: auto; } .demo-header { - margin-bottom: 1.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid var(--vp-c-divider); } -.demo-header h4 { - margin: 0 0 0.5rem 0; - font-size: 1.1rem; +.demo-header .icon { + font-size: 1.25rem; +} + +.demo-header .title { + font-weight: bold; + font-size: 1rem; color: var(--vp-c-text-1); } -.demo-header p { - margin: 0; - font-size: 0.9rem; +.demo-header .subtitle { color: var(--vp-c-text-2); + font-size: 0.85rem; + margin-left: 0.5rem; } .docker-visualization { @@ -268,4 +285,23 @@ const benefits = [ grid-template-columns: 1fr; } } + +.info-box { + background: var(--vp-c-bg-alt); + padding: 0.75rem; + border-radius: 6px; + font-size: 0.85rem; + color: var(--vp-c-text-2); + margin-top: 1rem; + display: flex; + gap: 0.25rem; +} + +.info-box .icon { + flex-shrink: 0; +} + +.info-box strong { + color: var(--vp-c-text-1); +} diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/EvolutionIntroDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/EvolutionIntroDemo.vue index 7e1cb8a..1f3cbd6 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/EvolutionIntroDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/EvolutionIntroDemo.vue @@ -1,8 +1,9 @@ @@ -116,84 +122,95 @@ const stages = [ diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/MonolithDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/MonolithDemo.vue index 25c0e6f..0ca6831 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/MonolithDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/MonolithDemo.vue @@ -1,8 +1,9 @@ @@ -136,24 +133,35 @@ const reset = () => { border: 1px solid var(--vp-c-divider); border-radius: 8px; background: var(--vp-c-bg-soft); - padding: 1.5rem; + padding: 1rem; margin: 1rem 0; + max-height: 600px; + overflow-y: auto; } .demo-header { - margin-bottom: 1.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid var(--vp-c-divider); } -.demo-header h4 { - margin: 0 0 0.5rem 0; - font-size: 1.1rem; +.demo-header .icon { + font-size: 1.25rem; +} + +.demo-header .title { + font-weight: bold; + font-size: 1rem; color: var(--vp-c-text-1); } -.demo-header p { - margin: 0; - font-size: 0.9rem; +.demo-header .subtitle { color: var(--vp-c-text-2); + font-size: 0.85rem; + margin-left: 0.5rem; } .monolith-diagram { @@ -378,4 +386,23 @@ const reset = () => { flex-wrap: wrap; } } + +.info-box { + background: var(--vp-c-bg-alt); + padding: 0.75rem; + border-radius: 6px; + font-size: 0.85rem; + color: var(--vp-c-text-2); + margin-top: 1rem; + display: flex; + gap: 0.25rem; +} + +.info-box .icon { + flex-shrink: 0; +} + +.info-box strong { + color: var(--vp-c-text-1); +} diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/PhysicalServerDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/PhysicalServerDemo.vue index 4e99281..c5ee914 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/PhysicalServerDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/PhysicalServerDemo.vue @@ -1,8 +1,9 @@ @@ -192,24 +175,35 @@ const sendRequest = async () => { border: 1px solid var(--vp-c-divider); border-radius: 8px; background: var(--vp-c-bg-soft); - padding: 1.5rem; + padding: 1rem; margin: 1rem 0; + max-height: 600px; + overflow-y: auto; } .demo-header { - margin-bottom: 1.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid var(--vp-c-divider); } -.demo-header h4 { - margin: 0 0 0.5rem 0; - font-size: 1.1rem; +.demo-header .icon { + font-size: 1.25rem; +} + +.demo-header .title { + font-weight: bold; + font-size: 1rem; color: var(--vp-c-text-1); } -.demo-header p { - margin: 0; - font-size: 0.9rem; +.demo-header .subtitle { color: var(--vp-c-text-2); + font-size: 0.85rem; + margin-left: 0.5rem; } .demo-stage { @@ -472,4 +466,23 @@ const sendRequest = async () => { height: 3px; } } + +.info-box { + background: var(--vp-c-bg-alt); + padding: 0.75rem; + border-radius: 6px; + font-size: 0.85rem; + color: var(--vp-c-text-2); + margin-top: 1rem; + display: flex; + gap: 0.25rem; +} + +.info-box .icon { + flex-shrink: 0; +} + +.info-box strong { + color: var(--vp-c-text-1); +} diff --git a/docs/.vitepress/theme/components/appendix/backend-evolution/TechStackTimelineDemo.vue b/docs/.vitepress/theme/components/appendix/backend-evolution/TechStackTimelineDemo.vue index f6b1591..46de486 100644 --- a/docs/.vitepress/theme/components/appendix/backend-evolution/TechStackTimelineDemo.vue +++ b/docs/.vitepress/theme/components/appendix/backend-evolution/TechStackTimelineDemo.vue @@ -1,8 +1,9 @@