2026-01-12 12:21:35 +08:00
|
|
|
|
import DefaultTheme from 'vitepress/theme'
|
2026-01-13 10:34:12 +08:00
|
|
|
|
import ElementPlus from 'element-plus'
|
|
|
|
|
|
import 'element-plus/dist/index.css'
|
2026-01-12 12:21:35 +08:00
|
|
|
|
import Viewer from 'viewerjs'
|
|
|
|
|
|
import 'viewerjs/dist/viewer.css'
|
|
|
|
|
|
import TypeIt from 'typeit'
|
|
|
|
|
|
import { onMounted, watch, nextTick } from 'vue'
|
|
|
|
|
|
import { useRoute, useData } from 'vitepress'
|
2026-01-12 19:49:21 +08:00
|
|
|
|
import './style.css'
|
2026-01-13 14:42:34 +08:00
|
|
|
|
import Layout from './Layout.vue'
|
2026-01-13 10:56:59 +08:00
|
|
|
|
import StepBar from './components/StepBar.vue'
|
2026-01-13 14:42:34 +08:00
|
|
|
|
import ChapterIntroduction from './components/ChapterIntroduction.vue'
|
2026-01-14 19:04:09 +08:00
|
|
|
|
import WebTerminal from './components/appendix/terminal-intro/WebTerminal.vue'
|
|
|
|
|
|
import TerminalGrid from './components/appendix/terminal-intro/TerminalGrid.vue'
|
|
|
|
|
|
import CellInspector from './components/appendix/terminal-intro/CellInspector.vue'
|
|
|
|
|
|
import EscapeSequences from './components/appendix/terminal-intro/EscapeSequences.vue'
|
|
|
|
|
|
import InputVisualizer from './components/appendix/terminal-intro/InputVisualizer.vue'
|
|
|
|
|
|
import SignalsDemo from './components/appendix/terminal-intro/SignalsDemo.vue'
|
|
|
|
|
|
import FlowDiagram from './components/appendix/terminal-intro/FlowDiagram.vue'
|
2026-01-15 12:25:48 +08:00
|
|
|
|
import BufferSwitchDemo from './components/appendix/terminal-intro/BufferSwitchDemo.vue'
|
2026-01-14 19:04:09 +08:00
|
|
|
|
import AdvancedTUIDemo from './components/appendix/terminal-intro/AdvancedTUIDemo.vue'
|
|
|
|
|
|
import ArchitectureDemo from './components/appendix/terminal-intro/ArchitectureDemo.vue'
|
|
|
|
|
|
import TerminalDefinition from './components/appendix/terminal-intro/TerminalDefinition.vue'
|
2026-01-15 12:25:48 +08:00
|
|
|
|
import TerminalOSDemo from './components/appendix/terminal-intro/TerminalOSDemo.vue'
|
2026-01-15 13:31:54 +08:00
|
|
|
|
import TerminalHandsOn from './components/appendix/terminal-intro/TerminalHandsOn.vue'
|
2026-01-15 12:25:48 +08:00
|
|
|
|
|
|
|
|
|
|
import EscapeParserDemo from './components/appendix/terminal-intro/EscapeParserDemo.vue'
|
|
|
|
|
|
import CookedRawDemo from './components/appendix/terminal-intro/CookedRawDemo.vue'
|
2026-01-12 12:21:35 +08:00
|
|
|
|
|
2026-01-15 20:10:19 +08:00
|
|
|
|
// LLM Intro Components
|
|
|
|
|
|
import EmbeddingDemo from './components/appendix/llm-intro/EmbeddingDemo.vue'
|
|
|
|
|
|
import LinearAttentionDemo from './components/appendix/llm-intro/LinearAttentionDemo.vue'
|
|
|
|
|
|
import LlmQuickStartDemo from './components/appendix/llm-intro/LlmQuickStartDemo.vue'
|
|
|
|
|
|
import MoEDemo from './components/appendix/llm-intro/MoEDemo.vue'
|
|
|
|
|
|
import NextTokenPrediction from './components/appendix/llm-intro/NextTokenPrediction.vue'
|
|
|
|
|
|
import RNNvsTransformer from './components/appendix/llm-intro/RNNvsTransformer.vue'
|
|
|
|
|
|
import ThinkingModelDemo from './components/appendix/llm-intro/ThinkingModelDemo.vue'
|
|
|
|
|
|
import TokenizationDemo from './components/appendix/llm-intro/TokenizationDemo.vue'
|
|
|
|
|
|
import TokenizerToMatrix from './components/appendix/llm-intro/TokenizerToMatrix.vue'
|
|
|
|
|
|
import TrainingInferenceDemo from './components/appendix/llm-intro/TrainingInferenceDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// VLM Intro Components
|
|
|
|
|
|
import AttentionDemo from './components/appendix/vlm-intro/AttentionDemo.vue'
|
|
|
|
|
|
import FeatureAlignmentDemo from './components/appendix/vlm-intro/FeatureAlignmentDemo.vue'
|
|
|
|
|
|
import LinearProjectionDemo from './components/appendix/vlm-intro/LinearProjectionDemo.vue'
|
|
|
|
|
|
import ModelArchitectureComparisonDemo from './components/appendix/vlm-intro/ModelArchitectureComparisonDemo.vue'
|
|
|
|
|
|
import PatchifyDemo from './components/appendix/vlm-intro/PatchifyDemo.vue'
|
|
|
|
|
|
import PositionalEmbeddingDemo from './components/appendix/vlm-intro/PositionalEmbeddingDemo.vue'
|
|
|
|
|
|
import ProjectorDemo from './components/appendix/vlm-intro/ProjectorDemo.vue'
|
|
|
|
|
|
import TrainingPipelineDemo from './components/appendix/vlm-intro/TrainingPipelineDemo.vue'
|
|
|
|
|
|
import VLMInferenceDemo from './components/appendix/vlm-intro/VLMInferenceDemo.vue'
|
|
|
|
|
|
import ViTOutputDemo from './components/appendix/vlm-intro/ViTOutputDemo.vue'
|
|
|
|
|
|
import VlmQuickStartDemo from './components/appendix/vlm-intro/VlmQuickStartDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Image Gen Intro Components
|
|
|
|
|
|
import ImageGenArchitecture from './components/appendix/image-gen-intro/ImageGenArchitecture.vue'
|
|
|
|
|
|
import LatentSpaceViz from './components/appendix/image-gen-intro/LatentSpaceViz.vue'
|
|
|
|
|
|
import DiffusionProcessDemo from './components/appendix/image-gen-intro/DiffusionProcessDemo.vue'
|
|
|
|
|
|
import FlowMatchingDemo from './components/appendix/image-gen-intro/FlowMatchingDemo.vue'
|
|
|
|
|
|
import PromptVisualizer from './components/appendix/image-gen-intro/PromptVisualizer.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Audio Intro Components
|
|
|
|
|
|
import AudioWaveformDemo from './components/appendix/audio-intro/AudioWaveformDemo.vue'
|
|
|
|
|
|
import AudioTokenizationDemo from './components/appendix/audio-intro/AudioTokenizationDemo.vue'
|
|
|
|
|
|
import SpectrogramViz from './components/appendix/audio-intro/SpectrogramViz.vue'
|
|
|
|
|
|
import AutoregressiveAudioDemo from './components/appendix/audio-intro/AutoregressiveAudioDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Web Basics Components
|
|
|
|
|
|
import WebTechTriad from './components/appendix/web-basics/WebTechTriad.vue'
|
|
|
|
|
|
import UrlToBrowserDemo from './components/appendix/web-basics/UrlToBrowserDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// Git Intro Components
|
|
|
|
|
|
import GitWorkflowDemo from './components/appendix/git-intro/GitWorkflowDemo.vue'
|
|
|
|
|
|
import GitThreeAreasDemo from './components/appendix/git-intro/GitThreeAreasDemo.vue'
|
|
|
|
|
|
import GitStorageDemo from './components/appendix/git-intro/GitStorageDemo.vue'
|
|
|
|
|
|
import GitCommandDemo from './components/appendix/git-intro/GitCommandDemo.vue'
|
|
|
|
|
|
import GitBranchMergeDemo from './components/appendix/git-intro/GitBranchMergeDemo.vue'
|
|
|
|
|
|
import GitConflictDemo from './components/appendix/git-intro/GitConflictDemo.vue'
|
|
|
|
|
|
import GitStashDemo from './components/appendix/git-intro/GitStashDemo.vue'
|
|
|
|
|
|
import GitRemoteDemo from './components/appendix/git-intro/GitRemoteDemo.vue'
|
2026-01-19 11:25:10 +08:00
|
|
|
|
import GitScenariosDemo from './components/appendix/git-intro/GitScenariosDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// (保留网络相关,未修改)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import NetworkLayers from './components/appendix/web-basics/NetworkLayers.vue'
|
|
|
|
|
|
import TcpUdpComparison from './components/appendix/web-basics/TcpUdpComparison.vue'
|
|
|
|
|
|
import SubnetCalculator from './components/appendix/web-basics/SubnetCalculator.vue'
|
|
|
|
|
|
import NetworkTroubleshooting from './components/appendix/web-basics/NetworkTroubleshooting.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
// Deployment appendix components
|
|
|
|
|
|
import DeploymentArchitecture from './components/appendix/deployment/DeploymentArchitecture.vue'
|
|
|
|
|
|
import DnsFlowDemo from './components/appendix/deployment/DnsFlowDemo.vue'
|
|
|
|
|
|
import ServerSizerDemo from './components/appendix/deployment/ServerSizerDemo.vue'
|
|
|
|
|
|
import HttpsNginxDemo from './components/appendix/deployment/HttpsNginxDemo.vue'
|
|
|
|
|
|
import CdnCacheDemo from './components/appendix/deployment/CdnCacheDemo.vue'
|
|
|
|
|
|
import CicdPipelineDemo from './components/appendix/deployment/CicdPipelineDemo.vue'
|
|
|
|
|
|
import RollbackSwitchDemo from './components/appendix/deployment/RollbackSwitchDemo.vue'
|
|
|
|
|
|
import ObservabilityBackupDemo from './components/appendix/deployment/ObservabilityBackupDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import CssBoxModel from './components/appendix/web-basics/CssBoxModel.vue'
|
|
|
|
|
|
import CssFlexbox from './components/appendix/web-basics/CssFlexbox.vue'
|
2026-01-18 10:24:35 +08:00
|
|
|
|
import CssLayoutDemo from './components/appendix/web-basics/CssLayoutDemo.vue'
|
|
|
|
|
|
import CssPlaygroundDemo from './components/appendix/web-basics/CssPlaygroundDemo.vue'
|
|
|
|
|
|
import CssCommonProperties from './components/appendix/web-basics/CssCommonProperties.vue'
|
|
|
|
|
|
import CssSelectorsDemo from './components/appendix/web-basics/CssSelectorsDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import DomManipulator from './components/appendix/web-basics/DomManipulator.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
import SemanticTagsDemo from './components/appendix/web-basics/SemanticTagsDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import DnsLookupDemo from './components/appendix/web-basics/DnsLookupDemo.vue'
|
|
|
|
|
|
import TcpHandshakeDemo from './components/appendix/web-basics/TcpHandshakeDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
import UrlParserDemo from './components/appendix/web-basics/UrlParserDemo.vue'
|
|
|
|
|
|
import HttpExchangeDemo from './components/appendix/web-basics/HttpExchangeDemo.vue'
|
|
|
|
|
|
import BrowserRenderingDemo from './components/appendix/web-basics/BrowserRenderingDemo.vue'
|
2026-01-18 10:24:35 +08:00
|
|
|
|
import FrontendEvolutionDemo from './components/appendix/web-basics/FrontendEvolutionDemo.vue'
|
2026-01-18 12:21:49 +08:00
|
|
|
|
import SliceRequestDemo from './components/appendix/web-basics/SliceRequestDemo.vue'
|
|
|
|
|
|
import ResponsiveGridDemo from './components/appendix/web-basics/ResponsiveGridDemo.vue'
|
|
|
|
|
|
import JQueryVsStateDemo from './components/appendix/web-basics/JQueryVsStateDemo.vue'
|
|
|
|
|
|
import VueReactComparisonDemo from './components/appendix/web-basics/VueReactComparisonDemo.vue'
|
|
|
|
|
|
import RoutingModeDemo from './components/appendix/web-basics/RoutingModeDemo.vue'
|
|
|
|
|
|
import SpaStatePreservationDemo from './components/appendix/web-basics/SpaStatePreservationDemo.vue'
|
|
|
|
|
|
import BundlerSizeDemo from './components/appendix/web-basics/BundlerSizeDemo.vue'
|
|
|
|
|
|
import RenderingStrategyDemo from './components/appendix/web-basics/RenderingStrategyDemo.vue'
|
|
|
|
|
|
import BigFrontendScopeDemo from './components/appendix/web-basics/BigFrontendScopeDemo.vue'
|
2026-01-18 10:24:35 +08:00
|
|
|
|
import AiEvolutionDemo from './components/appendix/ai-history/AiEvolutionDemo.vue'
|
|
|
|
|
|
import RuleBasedVsLearningDemo from './components/appendix/ai-history/RuleBasedVsLearningDemo.vue'
|
|
|
|
|
|
import PerceptronDemo from './components/appendix/ai-history/PerceptronDemo.vue'
|
2026-01-19 11:25:10 +08:00
|
|
|
|
import AIEvolutionTimelineDemo from './components/appendix/ai-history/AIEvolutionTimelineDemo.vue'
|
|
|
|
|
|
import CombinatorialExplosionDemo from './components/appendix/ai-history/CombinatorialExplosionDemo.vue'
|
|
|
|
|
|
import NeuralNetworkVisualizationDemo from './components/appendix/ai-history/NeuralNetworkVisualizationDemo.vue'
|
|
|
|
|
|
import BackpropagationDemo from './components/appendix/ai-history/BackpropagationDemo.vue'
|
|
|
|
|
|
import AttentionMechanismDemo from './components/appendix/ai-history/AttentionMechanismDemo.vue'
|
|
|
|
|
|
import DiscriminativeVsGenerativeDemo from './components/appendix/ai-history/DiscriminativeVsGenerativeDemo.vue'
|
|
|
|
|
|
import GPTEvolutionDemo from './components/appendix/ai-history/GPTEvolutionDemo.vue'
|
2026-01-18 10:24:35 +08:00
|
|
|
|
|
|
|
|
|
|
import ImperativeVsDeclarativeDemo from './components/appendix/web-basics/ImperativeVsDeclarativeDemo.vue'
|
|
|
|
|
|
import ComponentReusabilityDemo from './components/appendix/web-basics/ComponentReusabilityDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
import BackendEvolutionDemo from './components/appendix/backend-evolution/BackendEvolutionDemo.vue'
|
|
|
|
|
|
import MonolithVsMicroserviceDemo from './components/appendix/backend-evolution/MonolithVsMicroserviceDemo.vue'
|
2026-01-18 12:21:49 +08:00
|
|
|
|
import CgiQueueDemo from './components/appendix/backend-evolution/CgiQueueDemo.vue'
|
|
|
|
|
|
import MonolithReleaseRiskDemo from './components/appendix/backend-evolution/MonolithReleaseRiskDemo.vue'
|
|
|
|
|
|
import MicroserviceLatencyDemo from './components/appendix/backend-evolution/MicroserviceLatencyDemo.vue'
|
|
|
|
|
|
import CacheHitRatioDemo from './components/appendix/backend-evolution/CacheHitRatioDemo.vue'
|
|
|
|
|
|
import ServerlessCostAutoScaleDemo from './components/appendix/backend-evolution/ServerlessCostAutoScaleDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Frontend Performance Components
|
|
|
|
|
|
import PerformanceMetricsDemo from './components/appendix/frontend-performance/PerformanceMetricsDemo.vue'
|
|
|
|
|
|
import ReflowRepaintDemo from './components/appendix/frontend-performance/ReflowRepaintDemo.vue'
|
|
|
|
|
|
import ImageOptimizationDemo from './components/appendix/frontend-performance/ImageOptimizationDemo.vue'
|
|
|
|
|
|
import LazyLoadingDemo from './components/appendix/frontend-performance/LazyLoadingDemo.vue'
|
|
|
|
|
|
import CachingStrategyDemo from './components/appendix/frontend-performance/CachingStrategyDemo.vue'
|
|
|
|
|
|
import CriticalRenderingPathDemo from './components/appendix/frontend-performance/CriticalRenderingPathDemo.vue'
|
2026-01-18 23:59:25 +08:00
|
|
|
|
import VirtualScrollingDemo from './components/appendix/frontend-performance/VirtualScrollingDemo.vue'
|
2026-01-18 12:21:49 +08:00
|
|
|
|
|
|
|
|
|
|
// Canvas Intro Components
|
|
|
|
|
|
import CanvasBasicsDemo from './components/appendix/canvas-intro/CanvasBasicsDemo.vue'
|
|
|
|
|
|
import CoordinateSystemDemo from './components/appendix/canvas-intro/CoordinateSystemDemo.vue'
|
|
|
|
|
|
import AnimationLoopDemo from './components/appendix/canvas-intro/AnimationLoopDemo.vue'
|
|
|
|
|
|
import EventHandlingDemo from './components/appendix/canvas-intro/EventHandlingDemo.vue'
|
|
|
|
|
|
import ParticleSystemDemo from './components/appendix/canvas-intro/ParticleSystemDemo.vue'
|
|
|
|
|
|
import PerformanceDemo from './components/appendix/canvas-intro/PerformanceDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Cache Design Components
|
|
|
|
|
|
import CacheArchitectureDemo from './components/appendix/cache-design/CacheArchitectureDemo.vue'
|
|
|
|
|
|
import LocalityPrincipleDemo from './components/appendix/cache-design/LocalityPrincipleDemo.vue'
|
|
|
|
|
|
import CacheLifecycleDemo from './components/appendix/cache-design/CacheLifecycleDemo.vue'
|
|
|
|
|
|
import LocalVsDistributedCacheDemo from './components/appendix/cache-design/LocalVsDistributedCacheDemo.vue'
|
|
|
|
|
|
import MultiLevelCacheDemo from './components/appendix/cache-design/MultiLevelCacheDemo.vue'
|
|
|
|
|
|
import CachePatternsDemo from './components/appendix/cache-design/CachePatternsDemo.vue'
|
|
|
|
|
|
import CacheProblemsDemo from './components/appendix/cache-design/CacheProblemsDemo.vue'
|
|
|
|
|
|
import ProductCacheDemo from './components/appendix/cache-design/ProductCacheDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Auth Design Components
|
|
|
|
|
|
import AuthEvolutionDemo from './components/appendix/auth-design/AuthEvolutionDemo.vue'
|
|
|
|
|
|
import AuthBasicsDemo from './components/appendix/auth-design/AuthBasicsDemo.vue'
|
2026-01-19 11:25:10 +08:00
|
|
|
|
import AuthInteractiveLoginDemo from './components/appendix/auth-design/AuthInteractiveLoginDemo.vue'
|
2026-01-18 12:21:49 +08:00
|
|
|
|
import AuthNvsAuthZDemo from './components/appendix/auth-design/AuthNvsAuthZDemo.vue'
|
|
|
|
|
|
import SessionCookieDemo from './components/appendix/auth-design/SessionCookieDemo.vue'
|
|
|
|
|
|
import JWTWorkflowDemo from './components/appendix/auth-design/JWTWorkflowDemo.vue'
|
|
|
|
|
|
import SessionVsJWTDemo from './components/appendix/auth-design/SessionVsJWTDemo.vue'
|
|
|
|
|
|
import OAuth2FlowDemo from './components/appendix/auth-design/OAuth2FlowDemo.vue'
|
|
|
|
|
|
import PasswordHashingDemo from './components/appendix/auth-design/PasswordHashingDemo.vue'
|
|
|
|
|
|
import CSRFDefenseDemo from './components/appendix/auth-design/CSRFDefenseDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Queue Design Components
|
|
|
|
|
|
import MessageQueueDemo from './components/appendix/queue-design/MessageQueueDemo.vue'
|
|
|
|
|
|
import PeakShavingDemo from './components/appendix/queue-design/PeakShavingDemo.vue'
|
|
|
|
|
|
import MessageQueueComponentsDemo from './components/appendix/queue-design/MessageQueueComponentsDemo.vue'
|
|
|
|
|
|
import PointToPointVsPubSubDemo from './components/appendix/queue-design/PointToPointVsPubSubDemo.vue'
|
|
|
|
|
|
import MessageQueueComparisonDemo from './components/appendix/queue-design/MessageQueueComparisonDemo.vue'
|
|
|
|
|
|
import CouplingDemo from './components/appendix/queue-design/CouplingDemo.vue'
|
|
|
|
|
|
import PubSubDemo from './components/appendix/queue-design/PubSubDemo.vue'
|
|
|
|
|
|
import DeadLetterQueueDemo from './components/appendix/queue-design/DeadLetterQueueDemo.vue'
|
|
|
|
|
|
import DelayedMessageDemo from './components/appendix/queue-design/DelayedMessageDemo.vue'
|
|
|
|
|
|
import SeckillSystemDemo from './components/appendix/queue-design/SeckillSystemDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Prompt Engineering Components
|
2026-01-16 19:10:21 +08:00
|
|
|
|
import PromptQuickStartDemo from './components/appendix/prompt-engineering/PromptQuickStartDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import PromptComparisonDemo from './components/appendix/prompt-engineering/PromptComparisonDemo.vue'
|
|
|
|
|
|
import FewShotDemo from './components/appendix/prompt-engineering/FewShotDemo.vue'
|
|
|
|
|
|
import ChainOfThoughtDemo from './components/appendix/prompt-engineering/ChainOfThoughtDemo.vue'
|
2026-01-19 12:22:02 +08:00
|
|
|
|
import PromptTemplatesDemo from './components/appendix/prompt-engineering/PromptTemplatesDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Context Engineering Components
|
2026-01-19 11:25:10 +08:00
|
|
|
|
import AgentContextFlow from './components/appendix/context-engineering/AgentContextFlow.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
import ContextWindowVisualizer from './components/appendix/context-engineering/ContextWindowVisualizer.vue'
|
|
|
|
|
|
import SlidingWindowDemo from './components/appendix/context-engineering/SlidingWindowDemo.vue'
|
|
|
|
|
|
import SelectiveContextDemo from './components/appendix/context-engineering/SelectiveContextDemo.vue'
|
|
|
|
|
|
import RAGSimulationDemo from './components/appendix/context-engineering/RAGSimulationDemo.vue'
|
|
|
|
|
|
import ContextCompressionDemo from './components/appendix/context-engineering/ContextCompressionDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Agent Intro Components
|
|
|
|
|
|
import AgentWorkflowDemo from './components/appendix/agent-intro/AgentWorkflowDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// import AgentLevelDemo from './components/appendix/agent-intro/AgentLevelDemo.vue'
|
|
|
|
|
|
// import AgentArchitectureDemo from './components/appendix/agent-intro/AgentArchitectureDemo.vue'
|
|
|
|
|
|
// import AgentTaskFlowDemo from './components/appendix/agent-intro/AgentTaskFlowDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import FrameworkComparisonDemo from './components/appendix/agent-intro/FrameworkComparisonDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// import FrameworkSelectionDemo from './components/appendix/agent-intro/FrameworkSelectionDemo.vue'
|
|
|
|
|
|
// import AgentChallengesDemo from './components/appendix/agent-intro/AgentChallengesDemo.vue'
|
2026-01-15 20:10:19 +08:00
|
|
|
|
import AgentFutureDemo from './components/appendix/agent-intro/AgentFutureDemo.vue'
|
|
|
|
|
|
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// Database Intro Components
|
|
|
|
|
|
import DatabaseIndexDemo from './components/appendix/database-intro/DatabaseIndexDemo.vue'
|
|
|
|
|
|
import RelationalDataDemo from './components/appendix/database-intro/RelationalDataDemo.vue'
|
|
|
|
|
|
import SqlPlaygroundDemo from './components/appendix/database-intro/SqlPlaygroundDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// IDE Intro Components
|
|
|
|
|
|
import VirtualVSCodeDemo from './components/appendix/ide-intro/VirtualVSCodeDemo.vue'
|
|
|
|
|
|
import IdeArchitectureDemo from './components/appendix/ide-intro/IdeArchitectureDemo.vue'
|
2026-01-18 10:24:35 +08:00
|
|
|
|
import AiHelpDemo from './components/appendix/ide-intro/AiHelpDemo.vue'
|
|
|
|
|
|
import BrowserDevToolsDemo from './components/appendix/browser-devtools/BrowserDevToolsDemo.vue'
|
|
|
|
|
|
import BrowserDevToolsLiveDemo from './components/appendix/browser-devtools/BrowserDevToolsLiveDemo.vue'
|
2026-01-16 19:10:21 +08:00
|
|
|
|
|
2026-01-18 12:21:49 +08:00
|
|
|
|
// Tracking Design Components
|
|
|
|
|
|
import TrackingOverviewDemo from './components/appendix/tracking-design/TrackingOverviewDemo.vue'
|
|
|
|
|
|
import TrackingTypesDemo from './components/appendix/tracking-design/TrackingTypesDemo.vue'
|
|
|
|
|
|
import TrackingMethodsComparisonDemo from './components/appendix/tracking-design/TrackingMethodsComparisonDemo.vue'
|
|
|
|
|
|
import DataModelDesignDemo from './components/appendix/tracking-design/DataModelDesignDemo.vue'
|
|
|
|
|
|
import DataCollectionDemo from './components/appendix/tracking-design/DataCollectionDemo.vue'
|
|
|
|
|
|
import DataPipelineDemo from './components/appendix/tracking-design/DataPipelineDemo.vue'
|
|
|
|
|
|
import PrivacyComplianceDemo from './components/appendix/tracking-design/PrivacyComplianceDemo.vue'
|
|
|
|
|
|
import RealWorldCaseDemo from './components/appendix/tracking-design/RealWorldCaseDemo.vue'
|
|
|
|
|
|
import ToolSelectionDemo from './components/appendix/tracking-design/ToolSelectionDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Operations Components
|
|
|
|
|
|
import MonitoringDashboardDemo from './components/appendix/operations/MonitoringDashboardDemo.vue'
|
|
|
|
|
|
import AlertFlowDemo from './components/appendix/operations/AlertFlowDemo.vue'
|
|
|
|
|
|
import TraceVisualizationDemo from './components/appendix/operations/TraceVisualizationDemo.vue'
|
|
|
|
|
|
import IncidentResponseDemo from './components/appendix/operations/IncidentResponseDemo.vue'
|
|
|
|
|
|
import CapacityPlanningDemo from './components/appendix/operations/CapacityPlanningDemo.vue'
|
|
|
|
|
|
|
|
|
|
|
|
// Backend Languages Components
|
|
|
|
|
|
import BackendLanguagesDemo from './components/appendix/backend-languages/BackendLanguagesDemo.vue'
|
|
|
|
|
|
import LanguageComparisonDemo from './components/appendix/backend-languages/LanguageComparisonDemo.vue'
|
|
|
|
|
|
import PerformanceBenchmarkDemo from './components/appendix/backend-languages/PerformanceBenchmarkDemo.vue'
|
|
|
|
|
|
import SyntaxComparisonDemo from './components/appendix/backend-languages/SyntaxComparisonDemo.vue'
|
|
|
|
|
|
import ConcurrencyModelDemo from './components/appendix/backend-languages/ConcurrencyModelDemo.vue'
|
|
|
|
|
|
import LanguageSelectorDemo from './components/appendix/backend-languages/LanguageSelectorDemo.vue'
|
|
|
|
|
|
import DeveloperEfficiencyDemo from './components/appendix/backend-languages/DeveloperEfficiencyDemo.vue'
|
|
|
|
|
|
import LanguageEcosystemDemo from './components/appendix/backend-languages/LanguageEcosystemDemo.vue'
|
|
|
|
|
|
|
2026-01-12 12:21:35 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
extends: DefaultTheme,
|
2026-01-13 14:42:34 +08:00
|
|
|
|
Layout,
|
2026-01-13 10:34:12 +08:00
|
|
|
|
enhanceApp({ app }) {
|
|
|
|
|
|
app.use(ElementPlus)
|
2026-01-13 10:56:59 +08:00
|
|
|
|
app.component('StepBar', StepBar)
|
2026-01-13 14:42:34 +08:00
|
|
|
|
app.component('ChapterIntroduction', ChapterIntroduction)
|
2026-01-14 19:04:09 +08:00
|
|
|
|
app.component('WebTerminal', WebTerminal)
|
|
|
|
|
|
app.component('TerminalGrid', TerminalGrid)
|
|
|
|
|
|
app.component('CellInspector', CellInspector)
|
|
|
|
|
|
app.component('EscapeSequences', EscapeSequences)
|
2026-01-15 12:25:48 +08:00
|
|
|
|
app.component('EscapeParserDemo', EscapeParserDemo)
|
|
|
|
|
|
app.component('CookedRawDemo', CookedRawDemo)
|
2026-01-14 19:04:09 +08:00
|
|
|
|
app.component('InputVisualizer', InputVisualizer)
|
|
|
|
|
|
app.component('SignalsDemo', SignalsDemo)
|
|
|
|
|
|
app.component('FlowDiagram', FlowDiagram)
|
2026-01-15 12:25:48 +08:00
|
|
|
|
app.component('BufferSwitchDemo', BufferSwitchDemo)
|
2026-01-14 19:04:09 +08:00
|
|
|
|
app.component('AdvancedTUIDemo', AdvancedTUIDemo)
|
|
|
|
|
|
app.component('ArchitectureDemo', ArchitectureDemo)
|
|
|
|
|
|
app.component('TerminalDefinition', TerminalDefinition)
|
2026-01-15 12:25:48 +08:00
|
|
|
|
app.component('TerminalOSDemo', TerminalOSDemo)
|
2026-01-15 13:31:54 +08:00
|
|
|
|
app.component('TerminalHandsOn', TerminalHandsOn)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// LLM Intro Components Registration
|
|
|
|
|
|
app.component('EmbeddingDemo', EmbeddingDemo)
|
|
|
|
|
|
app.component('LinearAttentionDemo', LinearAttentionDemo)
|
|
|
|
|
|
app.component('LlmQuickStartDemo', LlmQuickStartDemo)
|
|
|
|
|
|
app.component('MoEDemo', MoEDemo)
|
|
|
|
|
|
app.component('NextTokenPrediction', NextTokenPrediction)
|
|
|
|
|
|
app.component('RNNvsTransformer', RNNvsTransformer)
|
|
|
|
|
|
app.component('ThinkingModelDemo', ThinkingModelDemo)
|
|
|
|
|
|
app.component('TokenizationDemo', TokenizationDemo)
|
|
|
|
|
|
app.component('TokenizerToMatrix', TokenizerToMatrix)
|
|
|
|
|
|
app.component('TrainingInferenceDemo', TrainingInferenceDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// VLM Intro Components Registration
|
|
|
|
|
|
app.component('AttentionDemo', AttentionDemo)
|
|
|
|
|
|
app.component('FeatureAlignmentDemo', FeatureAlignmentDemo)
|
|
|
|
|
|
app.component('LinearProjectionDemo', LinearProjectionDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component(
|
|
|
|
|
|
'ModelArchitectureComparisonDemo',
|
|
|
|
|
|
ModelArchitectureComparisonDemo
|
|
|
|
|
|
)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('PatchifyDemo', PatchifyDemo)
|
|
|
|
|
|
app.component('PositionalEmbeddingDemo', PositionalEmbeddingDemo)
|
|
|
|
|
|
app.component('ProjectorDemo', ProjectorDemo)
|
|
|
|
|
|
app.component('TrainingPipelineDemo', TrainingPipelineDemo)
|
|
|
|
|
|
app.component('VLMInferenceDemo', VLMInferenceDemo)
|
|
|
|
|
|
app.component('ViTOutputDemo', ViTOutputDemo)
|
|
|
|
|
|
app.component('VlmQuickStartDemo', VlmQuickStartDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Image Gen Intro Components Registration
|
|
|
|
|
|
app.component('ImageGenArchitecture', ImageGenArchitecture)
|
|
|
|
|
|
app.component('LatentSpaceViz', LatentSpaceViz)
|
|
|
|
|
|
app.component('DiffusionProcessDemo', DiffusionProcessDemo)
|
|
|
|
|
|
app.component('FlowMatchingDemo', FlowMatchingDemo)
|
|
|
|
|
|
app.component('PromptVisualizer', PromptVisualizer)
|
|
|
|
|
|
|
|
|
|
|
|
// Audio Intro Components Registration
|
|
|
|
|
|
app.component('AudioWaveformDemo', AudioWaveformDemo)
|
|
|
|
|
|
app.component('AudioTokenizationDemo', AudioTokenizationDemo)
|
|
|
|
|
|
app.component('SpectrogramViz', SpectrogramViz)
|
|
|
|
|
|
app.component('AutoregressiveAudioDemo', AutoregressiveAudioDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Web Basics Components Registration
|
|
|
|
|
|
app.component('WebTechTriad', WebTechTriad)
|
|
|
|
|
|
app.component('UrlToBrowserDemo', UrlToBrowserDemo)
|
|
|
|
|
|
app.component('GitWorkflowDemo', GitWorkflowDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('GitThreeAreasDemo', GitThreeAreasDemo)
|
|
|
|
|
|
app.component('GitStorageDemo', GitStorageDemo)
|
|
|
|
|
|
app.component('GitCommandDemo', GitCommandDemo)
|
|
|
|
|
|
app.component('GitBranchMergeDemo', GitBranchMergeDemo)
|
|
|
|
|
|
app.component('GitConflictDemo', GitConflictDemo)
|
|
|
|
|
|
app.component('GitStashDemo', GitStashDemo)
|
|
|
|
|
|
app.component('GitRemoteDemo', GitRemoteDemo)
|
2026-01-19 11:25:10 +08:00
|
|
|
|
app.component('GitScenariosDemo', GitScenariosDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('NetworkLayers', NetworkLayers)
|
|
|
|
|
|
app.component('TcpUdpComparison', TcpUdpComparison)
|
|
|
|
|
|
app.component('SubnetCalculator', SubnetCalculator)
|
|
|
|
|
|
app.component('NetworkTroubleshooting', NetworkTroubleshooting)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// Deployment appendix
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('DeploymentArchitecture', DeploymentArchitecture)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('DnsFlowDemo', DnsFlowDemo)
|
|
|
|
|
|
app.component('ServerSizerDemo', ServerSizerDemo)
|
|
|
|
|
|
app.component('HttpsNginxDemo', HttpsNginxDemo)
|
|
|
|
|
|
app.component('CdnCacheDemo', CdnCacheDemo)
|
|
|
|
|
|
app.component('CicdPipelineDemo', CicdPipelineDemo)
|
|
|
|
|
|
app.component('RollbackSwitchDemo', RollbackSwitchDemo)
|
|
|
|
|
|
app.component('ObservabilityBackupDemo', ObservabilityBackupDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('CssBoxModel', CssBoxModel)
|
|
|
|
|
|
app.component('CssFlexbox', CssFlexbox)
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('CssLayoutDemo', CssLayoutDemo)
|
|
|
|
|
|
app.component('CssPlaygroundDemo', CssPlaygroundDemo)
|
|
|
|
|
|
app.component('CssCommonProperties', CssCommonProperties)
|
|
|
|
|
|
app.component('CssSelectorsDemo', CssSelectorsDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('DomManipulator', DomManipulator)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('SemanticTagsDemo', SemanticTagsDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('DnsLookupDemo', DnsLookupDemo)
|
|
|
|
|
|
app.component('TcpHandshakeDemo', TcpHandshakeDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('UrlParserDemo', UrlParserDemo)
|
|
|
|
|
|
app.component('HttpExchangeDemo', HttpExchangeDemo)
|
|
|
|
|
|
app.component('BrowserRenderingDemo', BrowserRenderingDemo)
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('FrontendEvolutionDemo', FrontendEvolutionDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
app.component('SliceRequestDemo', SliceRequestDemo)
|
|
|
|
|
|
app.component('ResponsiveGridDemo', ResponsiveGridDemo)
|
|
|
|
|
|
app.component('JQueryVsStateDemo', JQueryVsStateDemo)
|
|
|
|
|
|
app.component('VueReactComparisonDemo', VueReactComparisonDemo)
|
|
|
|
|
|
app.component('RoutingModeDemo', RoutingModeDemo)
|
|
|
|
|
|
app.component('SpaStatePreservationDemo', SpaStatePreservationDemo)
|
|
|
|
|
|
app.component('BundlerSizeDemo', BundlerSizeDemo)
|
|
|
|
|
|
app.component('RenderingStrategyDemo', RenderingStrategyDemo)
|
|
|
|
|
|
app.component('BigFrontendScopeDemo', BigFrontendScopeDemo)
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('AiEvolutionDemo', AiEvolutionDemo)
|
|
|
|
|
|
app.component('RuleBasedVsLearningDemo', RuleBasedVsLearningDemo)
|
|
|
|
|
|
app.component('PerceptronDemo', PerceptronDemo)
|
2026-01-19 11:25:10 +08:00
|
|
|
|
app.component('AIEvolutionTimelineDemo', AIEvolutionTimelineDemo)
|
|
|
|
|
|
app.component('CombinatorialExplosionDemo', CombinatorialExplosionDemo)
|
|
|
|
|
|
app.component(
|
|
|
|
|
|
'NeuralNetworkVisualizationDemo',
|
|
|
|
|
|
NeuralNetworkVisualizationDemo
|
|
|
|
|
|
)
|
|
|
|
|
|
app.component('BackpropagationDemo', BackpropagationDemo)
|
|
|
|
|
|
app.component('AttentionMechanismDemo', AttentionMechanismDemo)
|
|
|
|
|
|
app.component(
|
|
|
|
|
|
'DiscriminativeVsGenerativeDemo',
|
|
|
|
|
|
DiscriminativeVsGenerativeDemo
|
|
|
|
|
|
)
|
|
|
|
|
|
app.component('GPTEvolutionDemo', GPTEvolutionDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('ImperativeVsDeclarativeDemo', ImperativeVsDeclarativeDemo)
|
|
|
|
|
|
app.component('ComponentReusabilityDemo', ComponentReusabilityDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('BackendEvolutionDemo', BackendEvolutionDemo)
|
|
|
|
|
|
app.component('MonolithVsMicroserviceDemo', MonolithVsMicroserviceDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
app.component('CgiQueueDemo', CgiQueueDemo)
|
|
|
|
|
|
app.component('MonolithReleaseRiskDemo', MonolithReleaseRiskDemo)
|
|
|
|
|
|
app.component('MicroserviceLatencyDemo', MicroserviceLatencyDemo)
|
|
|
|
|
|
app.component('CacheHitRatioDemo', CacheHitRatioDemo)
|
|
|
|
|
|
app.component('ServerlessCostAutoScaleDemo', ServerlessCostAutoScaleDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Frontend Performance Components Registration
|
|
|
|
|
|
app.component('PerformanceMetricsDemo', PerformanceMetricsDemo)
|
|
|
|
|
|
app.component('ReflowRepaintDemo', ReflowRepaintDemo)
|
|
|
|
|
|
app.component('ImageOptimizationDemo', ImageOptimizationDemo)
|
|
|
|
|
|
app.component('LazyLoadingDemo', LazyLoadingDemo)
|
|
|
|
|
|
app.component('CachingStrategyDemo', CachingStrategyDemo)
|
|
|
|
|
|
app.component('CriticalRenderingPathDemo', CriticalRenderingPathDemo)
|
2026-01-18 23:59:25 +08:00
|
|
|
|
app.component('VirtualScrollingDemo', VirtualScrollingDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
|
|
|
|
|
|
// Canvas Intro Components Registration
|
|
|
|
|
|
app.component('CanvasBasicsDemo', CanvasBasicsDemo)
|
|
|
|
|
|
app.component('CoordinateSystemDemo', CoordinateSystemDemo)
|
|
|
|
|
|
app.component('AnimationLoopDemo', AnimationLoopDemo)
|
|
|
|
|
|
app.component('EventHandlingDemo', EventHandlingDemo)
|
|
|
|
|
|
app.component('ParticleSystemDemo', ParticleSystemDemo)
|
|
|
|
|
|
app.component('PerformanceDemo', PerformanceDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Cache Design Components Registration
|
|
|
|
|
|
app.component('CacheArchitectureDemo', CacheArchitectureDemo)
|
|
|
|
|
|
app.component('LocalityPrincipleDemo', LocalityPrincipleDemo)
|
|
|
|
|
|
app.component('CacheLifecycleDemo', CacheLifecycleDemo)
|
|
|
|
|
|
app.component('LocalVsDistributedCacheDemo', LocalVsDistributedCacheDemo)
|
|
|
|
|
|
app.component('MultiLevelCacheDemo', MultiLevelCacheDemo)
|
|
|
|
|
|
app.component('CachePatternsDemo', CachePatternsDemo)
|
|
|
|
|
|
app.component('CacheProblemsDemo', CacheProblemsDemo)
|
|
|
|
|
|
app.component('ProductCacheDemo', ProductCacheDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Auth Design Components Registration
|
|
|
|
|
|
app.component('AuthEvolutionDemo', AuthEvolutionDemo)
|
|
|
|
|
|
app.component('AuthBasicsDemo', AuthBasicsDemo)
|
2026-01-19 11:25:10 +08:00
|
|
|
|
app.component('AuthInteractiveLoginDemo', AuthInteractiveLoginDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
app.component('AuthNvsAuthZDemo', AuthNvsAuthZDemo)
|
|
|
|
|
|
app.component('SessionCookieDemo', SessionCookieDemo)
|
|
|
|
|
|
app.component('JWTWorkflowDemo', JWTWorkflowDemo)
|
|
|
|
|
|
app.component('SessionVsJWTDemo', SessionVsJWTDemo)
|
|
|
|
|
|
app.component('OAuth2FlowDemo', OAuth2FlowDemo)
|
|
|
|
|
|
app.component('PasswordHashingDemo', PasswordHashingDemo)
|
|
|
|
|
|
app.component('CSRFDefenseDemo', CSRFDefenseDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Queue Design Components Registration
|
|
|
|
|
|
app.component('MessageQueueDemo', MessageQueueDemo)
|
|
|
|
|
|
app.component('PeakShavingDemo', PeakShavingDemo)
|
|
|
|
|
|
app.component('MessageQueueComponentsDemo', MessageQueueComponentsDemo)
|
|
|
|
|
|
app.component('PointToPointVsPubSubDemo', PointToPointVsPubSubDemo)
|
|
|
|
|
|
app.component('MessageQueueComparisonDemo', MessageQueueComparisonDemo)
|
|
|
|
|
|
app.component('CouplingDemo', CouplingDemo)
|
|
|
|
|
|
app.component('PubSubDemo', PubSubDemo)
|
|
|
|
|
|
app.component('DeadLetterQueueDemo', DeadLetterQueueDemo)
|
|
|
|
|
|
app.component('DelayedMessageDemo', DelayedMessageDemo)
|
|
|
|
|
|
app.component('SeckillSystemDemo', SeckillSystemDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Prompt Engineering Components Registration
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('PromptQuickStartDemo', PromptQuickStartDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('PromptComparisonDemo', PromptComparisonDemo)
|
|
|
|
|
|
app.component('FewShotDemo', FewShotDemo)
|
|
|
|
|
|
app.component('ChainOfThoughtDemo', ChainOfThoughtDemo)
|
2026-01-19 12:22:02 +08:00
|
|
|
|
app.component('PromptTemplatesDemo', PromptTemplatesDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Context Engineering Components Registration
|
2026-01-19 11:25:10 +08:00
|
|
|
|
app.component('AgentContextFlow', AgentContextFlow)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
app.component('ContextWindowVisualizer', ContextWindowVisualizer)
|
|
|
|
|
|
app.component('SlidingWindowDemo', SlidingWindowDemo)
|
|
|
|
|
|
app.component('SelectiveContextDemo', SelectiveContextDemo)
|
|
|
|
|
|
app.component('RAGSimulationDemo', RAGSimulationDemo)
|
|
|
|
|
|
app.component('ContextCompressionDemo', ContextCompressionDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
|
|
|
|
|
|
// Agent Intro Components Registration
|
|
|
|
|
|
app.component('AgentWorkflowDemo', AgentWorkflowDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// app.component('AgentLevelDemo', AgentLevelDemo)
|
|
|
|
|
|
// app.component('AgentArchitectureDemo', AgentArchitectureDemo)
|
|
|
|
|
|
// app.component('AgentTaskFlowDemo', AgentTaskFlowDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('FrameworkComparisonDemo', FrameworkComparisonDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
// app.component('FrameworkSelectionDemo', FrameworkSelectionDemo)
|
|
|
|
|
|
// app.component('AgentChallengesDemo', AgentChallengesDemo)
|
2026-01-15 20:10:19 +08:00
|
|
|
|
app.component('AgentFutureDemo', AgentFutureDemo)
|
2026-01-16 19:10:21 +08:00
|
|
|
|
|
|
|
|
|
|
// Database Intro Components Registration
|
|
|
|
|
|
app.component('DatabaseIndexDemo', DatabaseIndexDemo)
|
|
|
|
|
|
app.component('RelationalDataDemo', RelationalDataDemo)
|
|
|
|
|
|
app.component('SqlPlaygroundDemo', SqlPlaygroundDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// IDE Intro Components Registration
|
|
|
|
|
|
app.component('VirtualVSCodeDemo', VirtualVSCodeDemo)
|
|
|
|
|
|
app.component('DemoIde', VirtualVSCodeDemo) // Alias
|
|
|
|
|
|
app.component('IdeArchitectureDemo', IdeArchitectureDemo)
|
2026-01-18 10:24:35 +08:00
|
|
|
|
app.component('AiHelpDemo', AiHelpDemo)
|
|
|
|
|
|
app.component('BrowserDevToolsDemo', BrowserDevToolsDemo)
|
|
|
|
|
|
app.component('BrowserDevToolsLiveDemo', BrowserDevToolsLiveDemo)
|
2026-01-18 12:21:49 +08:00
|
|
|
|
|
|
|
|
|
|
// Tracking Design Components Registration
|
|
|
|
|
|
app.component('TrackingOverviewDemo', TrackingOverviewDemo)
|
|
|
|
|
|
app.component('TrackingTypesDemo', TrackingTypesDemo)
|
|
|
|
|
|
app.component(
|
|
|
|
|
|
'TrackingMethodsComparisonDemo',
|
|
|
|
|
|
TrackingMethodsComparisonDemo
|
|
|
|
|
|
)
|
|
|
|
|
|
app.component('DataModelDesignDemo', DataModelDesignDemo)
|
|
|
|
|
|
app.component('DataCollectionDemo', DataCollectionDemo)
|
|
|
|
|
|
app.component('DataPipelineDemo', DataPipelineDemo)
|
|
|
|
|
|
app.component('PrivacyComplianceDemo', PrivacyComplianceDemo)
|
|
|
|
|
|
app.component('RealWorldCaseDemo', RealWorldCaseDemo)
|
|
|
|
|
|
app.component('ToolSelectionDemo', ToolSelectionDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Operations Components Registration
|
|
|
|
|
|
app.component('MonitoringDashboardDemo', MonitoringDashboardDemo)
|
|
|
|
|
|
app.component('AlertFlowDemo', AlertFlowDemo)
|
|
|
|
|
|
app.component('TraceVisualizationDemo', TraceVisualizationDemo)
|
|
|
|
|
|
app.component('IncidentResponseDemo', IncidentResponseDemo)
|
|
|
|
|
|
app.component('CapacityPlanningDemo', CapacityPlanningDemo)
|
|
|
|
|
|
|
|
|
|
|
|
// Backend Languages Components Registration
|
|
|
|
|
|
app.component('BackendLanguagesDemo', BackendLanguagesDemo)
|
|
|
|
|
|
app.component('LanguageComparisonDemo', LanguageComparisonDemo)
|
|
|
|
|
|
app.component('PerformanceBenchmarkDemo', PerformanceBenchmarkDemo)
|
|
|
|
|
|
app.component('SyntaxComparisonDemo', SyntaxComparisonDemo)
|
|
|
|
|
|
app.component('ConcurrencyModelDemo', ConcurrencyModelDemo)
|
|
|
|
|
|
app.component('LanguageSelectorDemo', LanguageSelectorDemo)
|
|
|
|
|
|
app.component('DeveloperEfficiencyDemo', DeveloperEfficiencyDemo)
|
|
|
|
|
|
app.component('LanguageEcosystemDemo', LanguageEcosystemDemo)
|
2026-01-13 10:34:12 +08:00
|
|
|
|
},
|
2026-01-12 12:21:35 +08:00
|
|
|
|
setup() {
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
|
const { frontmatter } = useData()
|
|
|
|
|
|
let viewer = null
|
|
|
|
|
|
|
|
|
|
|
|
const initViewer = () => {
|
|
|
|
|
|
// 销毁旧实例
|
|
|
|
|
|
if (viewer) {
|
|
|
|
|
|
viewer.destroy()
|
|
|
|
|
|
viewer = null
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 找到文章内容容器
|
|
|
|
|
|
const doc = document.querySelector('.vp-doc')
|
|
|
|
|
|
if (doc) {
|
|
|
|
|
|
// 初始化 Viewer,配置一些常用选项
|
|
|
|
|
|
viewer = new Viewer(doc, {
|
|
|
|
|
|
button: true, // 显示右上角关闭按钮
|
|
|
|
|
|
navbar: true, // 显示底部缩略图导航
|
|
|
|
|
|
title: true, // 显示图片标题(alt 属性)
|
|
|
|
|
|
toolbar: true, // 显示工具栏(缩放、旋转等)
|
|
|
|
|
|
tooltip: true, // 显示缩放百分比
|
|
|
|
|
|
movable: true, // 允许拖拽
|
|
|
|
|
|
zoomable: true, // 允许缩放
|
|
|
|
|
|
rotatable: true, // 允许旋转
|
|
|
|
|
|
scalable: true, // 允许翻转
|
|
|
|
|
|
transition: false, // 禁用自带动画,确保打开瞬间无飞入
|
|
|
|
|
|
fullscreen: true, // 允许全屏播放
|
|
|
|
|
|
shown() {
|
|
|
|
|
|
// 打开完成后,标记为 ready,CSS 此时才会介入 transition
|
|
|
|
|
|
document.body.classList.add('viewer-ready')
|
|
|
|
|
|
},
|
|
|
|
|
|
hide() {
|
|
|
|
|
|
// 关闭前移除标记,确保关闭瞬间无动画
|
|
|
|
|
|
document.body.classList.remove('viewer-ready')
|
|
|
|
|
|
},
|
|
|
|
|
|
keyboard: true, // 允许键盘控制
|
|
|
|
|
|
url: 'src', // 图片源
|
|
|
|
|
|
// 过滤掉不想查看的图片(比如表情包等小图标,如果需要的话)
|
|
|
|
|
|
filter(image) {
|
|
|
|
|
|
return !image.classList.contains('no-viewer')
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const initTypewriter = () => {
|
|
|
|
|
|
const taglineData = frontmatter.value.hero?.tagline
|
|
|
|
|
|
if (Array.isArray(taglineData) && taglineData.length > 0) {
|
|
|
|
|
|
const taglineEl = document.querySelector('.VPHomeHero .tagline')
|
|
|
|
|
|
if (taglineEl) {
|
|
|
|
|
|
taglineEl.innerHTML = ''
|
2026-01-13 14:42:34 +08:00
|
|
|
|
|
2026-01-12 12:21:35 +08:00
|
|
|
|
const typeIt = new TypeIt(taglineEl, {
|
|
|
|
|
|
speed: 50,
|
|
|
|
|
|
startDelay: 500,
|
|
|
|
|
|
loop: true
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
taglineData.forEach((text) => {
|
2026-01-13 14:42:34 +08:00
|
|
|
|
typeIt.type(text).pause(2000).delete().pause(500)
|
2026-01-12 12:21:35 +08:00
|
|
|
|
})
|
2026-01-13 14:42:34 +08:00
|
|
|
|
|
2026-01-12 12:21:35 +08:00
|
|
|
|
typeIt.go()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const optimizeImages = () => {
|
|
|
|
|
|
const images = document.querySelectorAll('.vp-doc img')
|
2026-01-13 14:42:34 +08:00
|
|
|
|
images.forEach((img) => {
|
2026-01-12 12:21:35 +08:00
|
|
|
|
if (img.complete) {
|
|
|
|
|
|
applyImageStyle(img)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
img.onload = () => applyImageStyle(img)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const applyImageStyle = (img) => {
|
|
|
|
|
|
const { naturalWidth, naturalHeight } = img
|
|
|
|
|
|
if (!naturalWidth || !naturalHeight) return
|
|
|
|
|
|
|
|
|
|
|
|
const ratio = naturalHeight / naturalWidth
|
2026-01-13 12:27:41 +08:00
|
|
|
|
img.classList.remove(
|
|
|
|
|
|
'img-tall',
|
|
|
|
|
|
'img-very-tall',
|
|
|
|
|
|
'img-ultra-tall',
|
|
|
|
|
|
'img-limit-width',
|
|
|
|
|
|
'img-limit-height'
|
|
|
|
|
|
)
|
2026-01-12 12:21:35 +08:00
|
|
|
|
|
2026-01-13 12:27:41 +08:00
|
|
|
|
img.style.maxWidth = ''
|
|
|
|
|
|
img.style.maxHeight = ''
|
|
|
|
|
|
img.style.width = ''
|
|
|
|
|
|
img.style.height = ''
|
|
|
|
|
|
|
|
|
|
|
|
if (ratio <= 1) {
|
|
|
|
|
|
img.classList.add('img-limit-width')
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
img.classList.add('img-tall')
|
|
|
|
|
|
if (ratio > 2.2) {
|
2026-01-12 15:31:23 +08:00
|
|
|
|
img.classList.add('img-ultra-tall')
|
2026-01-13 12:27:41 +08:00
|
|
|
|
} else if (ratio > 1.3) {
|
2026-01-12 12:21:35 +08:00
|
|
|
|
img.classList.add('img-very-tall')
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
|
initViewer()
|
|
|
|
|
|
initTypewriter()
|
|
|
|
|
|
optimizeImages()
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
|
() => route.path,
|
2026-01-13 14:42:34 +08:00
|
|
|
|
() =>
|
|
|
|
|
|
nextTick(() => {
|
|
|
|
|
|
initViewer()
|
|
|
|
|
|
initTypewriter()
|
|
|
|
|
|
optimizeImages()
|
|
|
|
|
|
})
|
2026-01-12 12:21:35 +08:00
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|