源码索引 / CURRENT IMPLEMENTATION
site/src/layouts/Docs.astro
36 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
---
import nav from '../../.generated/navigation.json';
import '../styles/global.css';
import '../styles/code-reading.css';
const { title = 'Pysolate Spine', description = '从真实代码读懂 PLM', headings = [], wide = false } = Astro.props;
const current = Astro.url.pathname;
const activeSection = nav.find(p=>current===`/${p.slug}/`)?.section || (current==='/'||current.startsWith('/code/')?'reading':'implementation');
const groups = [{id:'reading', title:'代码带读 · 主线'}, {id:'deep', title:'机制深度解析'}, {id:'patterns', title:'Go 组合速成'}, {id:'basics', title:'前置课程 · 从零开始'}, {id:'research', title:'研究探索'}, {id:'implementation', title:'实现与面试练习'}];
---
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet" />
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet" />
<meta name="description" content={description} />
<meta name="color-scheme" content="light dark" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<title>{title} · Pysolate Spine</title>
</head>
<body>
<a class="skip" href="#main">跳到正文</a>
<header>
<a class="brand" href="/"><span class="mark">P</span><span><strong>Pysolate Spine</strong><small>READ THE CODE · UNDERSTAND THE SYSTEM</small></span></a>
<nav class="top"><a href="/read/">代码带读</a><a href="/deep/">深度解析</a><a href="/go-patterns/">Go 组合速成</a><a href="/foundations/">基础查阅</a><a href="/research-positioning/">研究探索</a><a href="/guide/">实现</a><a href="/code/">源码</a><span class="quiet">NO INDEX</span></nav>
</header>
<details class="mobile-nav"><summary>课程与章节</summary><nav>{groups.map(g=><details class="nav-section" open={activeSection===g.id}><summary>{g.title}</summary>{nav.filter(p=>p.section===g.id).map(p=><a href={`/${p.slug}/`} aria-current={current===`/${p.slug}/`?'page':undefined}>{p.title}</a>)}</details>)}<a href="/code/">源码索引</a></nav></details>
<div class:list={['shell', { wide }]}>
<aside class="sidebar"><div class="rail-label">沿执行路径理解每块代码</div>{groups.map(g=><details class="nav-section" open={activeSection===g.id}><summary>{g.title}</summary><nav>{nav.filter(p=>p.section===g.id).map((p,i)=><a href={`/${p.slug}/`} aria-current={current===`/${p.slug}/`?'page':undefined}><span>{String(g.id==='implementation'?i+1:i).padStart(2,'0')}</span>{p.title}</a>)}</nav></details>)}<a class="source-link" href="/code/">浏览实际源码 ↗</a><p class="rail-note">先问这一块完成什么。<br/>再跟状态和调用,语法随用随查。</p></aside>
<main id="main"><slot /></main>
<aside class="toc">{headings.length>0 && <><div class="rail-label">本页内容</div><nav>{headings.filter(h=>h.depth===2).map(h=><a href={`#${h.slug}`}>{h.text}</a>)}</nav></>}</aside>
</div>
<footer>面向理解与协作的精简实现 <span>公开链接 · 禁止搜索索引 · 无访问鉴权</span></footer>
</body>
</html>