feat(docs): enhance interactive demos and improve documentation

- Add new interactive components for frontend routing, browser rendering pipeline, and database transactions
- Improve existing demos with better visuals, explanations, and examples
- Update documentation structure and content for better clarity
- Add new utility scripts and update package.json with new commands
- Fix formatting and alignment in documentation tables
This commit is contained in:
sanbuphy
2026-02-13 22:10:03 +08:00
parent 599052b2e0
commit d174ceea32
88 changed files with 26273 additions and 15539 deletions
@@ -0,0 +1,344 @@
<template>
<div class="deployment-https-demo">
<div class="demo-header">
<span class="icon">🔒</span>
<span class="title">HTTPS 安全传输</span>
<span class="subtitle">给数据传输加把锁</span>
</div>
<div class="intro-text">
<strong>HTTP</strong> 就像寄明信片邮递员能看见内容<strong>HTTPS</strong> 就像寄保险箱只有收件人能打开
</div>
<div class="demo-content">
<div class="comparison">
<div class="compare-card http">
<div class="card-header">
<span class="lock-icon">🔓</span>
<span class="card-title">HTTP不安全</span>
</div>
<div class="card-body">
<div class="data-flow">
<div class="sender">👤 用户</div>
<div class="envelope open">
<div class="content-visible">密码: 123456</div>
</div>
<div class="thief">😈 黑客</div>
<div class="receiver">🌐 服务器</div>
</div>
<div class="warning-text"> 数据"裸奔"黑客能看见密码</div>
</div>
</div>
<div class="compare-card https">
<div class="card-header">
<span class="lock-icon">🔒</span>
<span class="card-title">HTTPS安全</span>
</div>
<div class="card-body">
<div class="data-flow">
<div class="sender">👤 用户</div>
<div class="envelope locked">
<div class="content-hidden">??加密??</div>
</div>
<div class="thief-confused">😕 黑客看不懂</div>
<div class="receiver">🌐 服务器</div>
</div>
<div class="success-text"> 数据加密黑客看不懂</div>
</div>
</div>
</div>
<div class="certificate-box">
<div class="cert-title">📜 SSL/TLS 证书的作用</div>
<div class="cert-features">
<div class="cert-feature">
<span class="feature-icon">🔐</span>
<span class="feature-text">加密传输数据</span>
</div>
<div class="cert-feature">
<span class="feature-icon"></span>
<span class="feature-text">验证网站身份</span>
</div>
<div class="cert-feature">
<span class="feature-icon">🛡</span>
<span class="feature-text">防止数据篡改</span>
</div>
</div>
</div>
<div class="setup-steps">
<div class="steps-title">🚀 快速上手Let's Encrypt 免费)</div>
<div class="step-list">
<div class="step-item">
<span class="step-num">1</span>
<span class="step-text">安装 Certbot 工具</span>
</div>
<div class="step-item">
<span class="step-num">2</span>
<span class="step-text">运行命令申请证书</span>
</div>
<div class="step-item">
<span class="step-num">3</span>
<span class="step-text">自动配置 Nginx</span>
</div>
<div class="step-item">
<span class="step-num">4</span>
<span class="step-text">完成!网站显示🔒小锁</span>
</div>
</div>
</div>
</div>
<div class="info-box">
<span class="icon">💡</span>
<strong>推荐工具:</strong>Let's Encrypt 免费证书 + Certbot 自动工具几分钟就能搞定 HTTPS
</div>
</div>
</template>
<script setup>
</script>
<style scoped>
.deployment-https-demo {
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
background: var(--vp-c-bg-soft);
padding: 1.5rem;
margin: 1rem 0;
max-height: 600px;
overflow-y: auto;
}
.demo-header {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.75rem;
}
.demo-header .icon {
font-size: 1.25rem;
}
.demo-header .title {
font-weight: bold;
font-size: 1rem;
}
.demo-header .subtitle {
color: var(--vp-c-text-2);
font-size: 0.85rem;
margin-left: 0.5rem;
}
.intro-text {
font-size: 0.9rem;
color: var(--vp-c-text-2);
line-height: 1.6;
margin-bottom: 1rem;
padding: 0.75rem;
background: var(--vp-c-bg);
border-radius: 6px;
}
.intro-text strong {
color: var(--vp-c-brand-1);
font-weight: 500;
}
.demo-content {
margin-bottom: 1rem;
}
.comparison {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 1rem;
}
.compare-card {
border-radius: 8px;
overflow: hidden;
}
.compare-card.http {
background: linear-gradient(135deg, #ff6b6b 0%, #ff8787 100%);
}
.compare-card.https {
background: linear-gradient(135deg, #51cf66 0%, #69db7c 100%);
}
.card-header {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem;
color: white;
}
.lock-icon {
font-size: 1.5rem;
}
.card-title {
font-weight: 600;
font-size: 0.9rem;
}
.card-body {
background: white;
padding: 0.75rem;
}
.data-flow {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.5rem;
margin-bottom: 0.75rem;
}
.sender,
.receiver {
font-size: 1.25rem;
}
.envelope {
flex: 1;
padding: 0.5rem;
border: 2px dashed var(--vp-c-divider);
border-radius: 6px;
text-align: center;
font-size: 0.75rem;
font-family: monospace;
}
.envelope.open {
background: #fff3cd;
}
.envelope.locked {
background: #d4edda;
}
.thief {
font-size: 1.25rem;
}
.thief-confused {
font-size: 1.25rem;
opacity: 0.5;
}
.warning-text {
color: #dc3545;
font-size: 0.75rem;
text-align: center;
font-weight: 500;
}
.success-text {
color: #28a745;
font-size: 0.75rem;
text-align: center;
font-weight: 500;
}
.certificate-box {
background: var(--vp-c-bg);
border-radius: 8px;
padding: 1rem;
margin-bottom: 1rem;
}
.cert-title {
font-weight: 600;
font-size: 0.9rem;
margin-bottom: 0.75rem;
color: var(--vp-c-text-1);
}
.cert-features {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.cert-feature {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
color: var(--vp-c-text-2);
}
.feature-icon {
font-size: 1rem;
}
.setup-steps {
background: var(--vp-c-bg);
border-radius: 8px;
padding: 1rem;
}
.steps-title {
font-weight: 600;
font-size: 0.9rem;
margin-bottom: 0.75rem;
color: var(--vp-c-text-1);
}
.step-list {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.step-item {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 0.85rem;
color: var(--vp-c-text-2);
}
.step-num {
display: flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
background: var(--vp-c-brand);
color: white;
border-radius: 50%;
font-size: 0.75rem;
font-weight: 600;
}
.info-box {
background: var(--vp-c-bg-alt);
padding: 0.75rem;
border-radius: 6px;
font-size: 0.85rem;
color: var(--vp-c-text-2);
}
.info-box .icon {
margin-right: 0.25rem;
}
@media (max-width: 768px) {
.comparison {
grid-template-columns: 1fr;
}
.data-flow {
flex-wrap: wrap;
}
}
</style>