[{"data":1,"prerenderedAt":704},["ShallowReactive",2],{"post-\u002Fposts\u002Fmarkdown-kitchen-sink":3,"surround-\u002Fposts\u002Fmarkdown-kitchen-sink":695},{"id":4,"title":5,"body":6,"cover":682,"date":683,"description":684,"draft":685,"extension":686,"meta":687,"minutes":247,"navigation":108,"path":688,"seo":689,"stem":690,"tags":691,"updated":682,"__hash__":694},"posts\u002Fposts\u002Fmarkdown-kitchen-sink.md","Markdown 排版全要素测试",{"type":7,"value":8,"toc":671},"minimark",[9,13,17,43,47,50,53,56,69,72,94,97,123,126,132,135,143,146,213,216,219,375,378,405,408,449,452,642,645,648,655,658,661,664,667],[10,11,12],"p",{},"这篇文章没有观点，只有元素。它是排版系统的验收清单，任何全局样式改动都应该先在这里过一遍。",[14,15,16],"h2",{"id":16},"标题与正文",[10,18,19,20,24,25,29,30,34,35,42],{},"正文的目标是舒展：中文行高 1.85，段落之间留足呼吸。",[21,22,23],"strong",{},"加粗","用于真正的强调，",[26,27,28],"em",{},"斜体","在中文语境里少用，",[31,32,33],"code",{},"行内代码","则要和正文明显区分。链接样式看这里：",[36,37,41],"a",{"href":38,"rel":39},"https:\u002F\u002Fcontent.nuxt.com",[40],"nofollow","Nuxt Content 文档","。",[44,45,46],"h3",{"id":46},"三级标题的层次",[10,48,49],{},"三级标题比二级小一档，不带上边框。它负责在章节内部再分一层，不应该再往下嵌套了，四级标题基本是文档结构出问题的信号。",[14,51,52],{"id":52},"列表",[10,54,55],{},"无序列表用方形标记，强调色只出现在符号上：",[57,58,59,63,66],"ul",{},[60,61,62],"li",{},"静态生成的站点没有运行时依赖",[60,64,65],{},"内容和代码住在同一个仓库",[60,67,68],{},"构建产物可以被完整缓存",[10,70,71],{},"有序列表适合流程：",[73,74,75,82,85,91],"ol",{},[60,76,77,78,81],{},"在 ",[31,79,80],{},"content\u002Fposts\u002F"," 新建 Markdown 文件",[60,83,84],{},"写好 frontmatter 和正文",[60,86,87,88],{},"提交，CI 跑 ",[31,89,90],{},"pnpm generate",[60,92,93],{},"产物同步到静态托管",[10,95,96],{},"任务列表也能用：",[57,98,101,111,117],{"className":99},[100],"contains-task-list",[60,102,105,110],{"className":103},[104],"task-list-item",[106,107],"input",{"checked":108,"disabled":108,"type":109},true,"checkbox"," 定义内容集合",[60,112,114,116],{"className":113},[104],[106,115],{"checked":108,"disabled":108,"type":109}," 打通 RSS 输出",[60,118,120,122],{"className":119},[104],[106,121],{"disabled":108,"type":109}," 接入评论系统（外挂方案，待定）",[14,124,125],{"id":125},"引用",[127,128,129],"blockquote",{},[10,130,131],{},"好的工具应该退到背景里。当你意识不到它存在的时候，它正在正常工作。",[10,133,134],{},"多段引用同样成立：",[127,136,137,140],{},[10,138,139],{},"写作的敌人不是没有灵感，而是摩擦。",[10,141,142],{},"每多一步操作，就少一篇文章。",[14,144,145],{"id":145},"表格",[147,148,149,168],"table",{},[150,151,152],"thead",{},[153,154,155,159,162,165],"tr",{},[156,157,158],"th",{},"方案",[156,160,161],{},"构建产物",[156,163,164],{},"部署要求",[156,166,167],{},"适合场景",[169,170,171,186,200],"tbody",{},[153,172,173,177,180,183],{},[174,175,176],"td",{},"纯静态生成",[174,178,179],{},"HTML 文件",[174,181,182],{},"任意静态托管",[174,184,185],{},"博客、文档",[153,187,188,191,194,197],{},[174,189,190],{},"服务端渲染",[174,192,193],{},"Node 服务",[174,195,196],{},"常驻进程",[174,198,199],{},"强动态内容",[153,201,202,205,208,210],{},[174,203,204],{},"单页应用",[174,206,207],{},"JS 包",[174,209,182],{},[174,211,212],{},"后台工具",[14,214,215],{"id":215},"代码块",[10,217,218],{},"TypeScript，带高亮：",[220,221,226],"pre",{"className":222,"code":223,"language":224,"meta":225,"style":225},"language-ts shiki shiki-themes tokyo-night github-light","interface Post {\n  title: string\n  date: string\n  tags: string[]\n}\n\nfunction byDateDesc(a: Post, b: Post): number {\n  return b.date.localeCompare(a.date)\n}\n","ts","",[31,227,228,245,260,270,284,290,296,337,370],{"__ignoreMap":225},[229,230,233,237,241],"span",{"class":231,"line":232},"line",1,[229,234,236],{"class":235},"sBxw3","interface",[229,238,240],{"class":239},"sirr2"," Post",[229,242,244],{"class":243},"sjXpA"," {\n",[229,246,248,252,256],{"class":231,"line":247},2,[229,249,251],{"class":250},"surVy","  title",[229,253,255],{"class":254},"sNP9S",":",[229,257,259],{"class":258},"sZlli"," string\n",[229,261,263,266,268],{"class":231,"line":262},3,[229,264,265],{"class":250},"  date",[229,267,255],{"class":254},[229,269,259],{"class":258},[229,271,273,276,278,281],{"class":231,"line":272},4,[229,274,275],{"class":250},"  tags",[229,277,255],{"class":254},[229,279,280],{"class":258}," string",[229,282,283],{"class":243},"[]\n",[229,285,287],{"class":231,"line":286},5,[229,288,289],{"class":243},"}\n",[229,291,293],{"class":231,"line":292},6,[229,294,295],{"emptyLinePlaceholder":108},"\n",[229,297,299,302,306,309,312,314,316,320,323,325,327,330,332,335],{"class":231,"line":298},7,[229,300,301],{"class":235},"function",[229,303,305],{"class":304},"sxkyg"," byDateDesc",[229,307,308],{"class":243},"(",[229,310,36],{"class":311},"sgjcI",[229,313,255],{"class":254},[229,315,240],{"class":239},[229,317,319],{"class":318},"szu1u",",",[229,321,322],{"class":311}," b",[229,324,255],{"class":254},[229,326,240],{"class":239},[229,328,329],{"class":243},")",[229,331,255],{"class":254},[229,333,334],{"class":258}," number",[229,336,244],{"class":243},[229,338,340,344,347,350,354,356,359,361,363,365,367],{"class":231,"line":339},8,[229,341,343],{"class":342},"skDMT","  return",[229,345,322],{"class":346},"s4do5",[229,348,349],{"class":318},".",[229,351,353],{"class":352},"sVZrm","date",[229,355,349],{"class":318},[229,357,358],{"class":304},"localeCompare",[229,360,308],{"class":243},[229,362,36],{"class":346},[229,364,349],{"class":318},[229,366,353],{"class":352},[229,368,369],{"class":243},")\n",[229,371,373],{"class":231,"line":372},9,[229,374,289],{"class":243},[10,376,377],{},"Shell 命令：",[220,379,383],{"className":380,"code":381,"language":382,"meta":225,"style":225},"language-bash shiki shiki-themes tokyo-night github-light","pnpm generate\nnpx serve .output\u002Fpublic\n","bash",[31,384,385,394],{"__ignoreMap":225},[229,386,387,390],{"class":231,"line":232},[229,388,389],{"class":239},"pnpm",[229,391,393],{"class":392},"snP_1"," generate\n",[229,395,396,399,402],{"class":231,"line":247},[229,397,398],{"class":239},"npx",[229,400,401],{"class":392}," serve",[229,403,404],{"class":392}," .output\u002Fpublic\n",[10,406,407],{},"Diff 视图：",[220,409,413],{"className":410,"code":411,"language":412,"meta":225,"style":225},"language-diff shiki shiki-themes tokyo-night github-light","- const posts = await queryCollection('posts').all()\n+ const posts = await queryCollection('posts')\n+   .where('draft', '=', false)\n+   .all()\n","diff",[31,414,415,425,435,442],{"__ignoreMap":225},[229,416,417,421],{"class":231,"line":232},[229,418,420],{"class":419},"sEAt2","-",[229,422,424],{"class":423},"sCgCi"," const posts = await queryCollection('posts').all()\n",[229,426,427,431],{"class":231,"line":247},[229,428,430],{"class":429},"s0Hzo","+",[229,432,434],{"class":433},"sC2qC"," const posts = await queryCollection('posts')\n",[229,436,437,439],{"class":231,"line":262},[229,438,430],{"class":429},[229,440,441],{"class":433},"   .where('draft', '=', false)\n",[229,443,444,446],{"class":231,"line":272},[229,445,430],{"class":429},[229,447,448],{"class":433},"   .all()\n",[10,450,451],{},"Vue 单文件组件：",[220,453,457],{"className":454,"code":455,"language":456,"meta":225,"style":225},"language-vue shiki shiki-themes tokyo-night github-light","\u003Cscript setup lang=\"ts\">\nconst { data: page } = await useAsyncData('about', () =>\n  queryCollection('pages').path('\u002Fabout').first(),\n)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CContentRenderer :value=\"page\" \u002F>\n\u003C\u002Ftemplate>\n","vue",[31,458,459,490,539,582,586,595,599,608,634],{"__ignoreMap":225},[229,460,461,465,469,473,476,479,483,485,487],{"class":231,"line":232},[229,462,464],{"class":463},"sUpvg","\u003C",[229,466,468],{"class":467},"seN_b","script",[229,470,472],{"class":471},"s71bh"," setup",[229,474,475],{"class":471}," lang",[229,477,478],{"class":318},"=",[229,480,482],{"class":481},"sbW-k","\"",[229,484,224],{"class":392},[229,486,482],{"class":481},[229,488,489],{"class":463},">\n",[229,491,492,496,499,503,505,509,512,515,518,521,523,526,529,531,533,536],{"class":231,"line":247},[229,493,495],{"class":494},"sG9mu","const",[229,497,498],{"class":318}," {",[229,500,502],{"class":501},"sAEpf"," data",[229,504,255],{"class":318},[229,506,508],{"class":507},"sV0ZF"," page",[229,510,511],{"class":318}," }",[229,513,514],{"class":254}," =",[229,516,517],{"class":342}," await",[229,519,520],{"class":304}," useAsyncData",[229,522,308],{"class":243},[229,524,525],{"class":481},"'",[229,527,528],{"class":392},"about",[229,530,525],{"class":481},[229,532,319],{"class":318},[229,534,535],{"class":243}," ()",[229,537,538],{"class":235}," =>\n",[229,540,541,544,546,548,551,553,555,557,560,562,564,567,569,571,573,576,579],{"class":231,"line":262},[229,542,543],{"class":304},"  queryCollection",[229,545,308],{"class":243},[229,547,525],{"class":481},[229,549,550],{"class":392},"pages",[229,552,525],{"class":481},[229,554,329],{"class":243},[229,556,349],{"class":318},[229,558,559],{"class":304},"path",[229,561,308],{"class":243},[229,563,525],{"class":481},[229,565,566],{"class":392},"\u002Fabout",[229,568,525],{"class":481},[229,570,329],{"class":243},[229,572,349],{"class":318},[229,574,575],{"class":304},"first",[229,577,578],{"class":243},"()",[229,580,581],{"class":318},",\n",[229,583,584],{"class":231,"line":272},[229,585,369],{"class":243},[229,587,588,591,593],{"class":231,"line":286},[229,589,590],{"class":463},"\u003C\u002F",[229,592,468],{"class":467},[229,594,489],{"class":463},[229,596,597],{"class":231,"line":292},[229,598,295],{"emptyLinePlaceholder":108},[229,600,601,603,606],{"class":231,"line":298},[229,602,464],{"class":463},[229,604,605],{"class":467},"template",[229,607,489],{"class":463},[229,609,610,613,616,619,622,624,626,629,631],{"class":231,"line":339},[229,611,612],{"class":463},"  \u003C",[229,614,615],{"class":467},"ContentRenderer",[229,617,618],{"class":318}," :",[229,620,621],{"class":471},"value",[229,623,478],{"class":318},[229,625,482],{"class":481},[229,627,628],{"class":346},"page",[229,630,482],{"class":481},[229,632,633],{"class":463}," \u002F>\n",[229,635,636,638,640],{"class":231,"line":372},[229,637,590],{"class":463},[229,639,605],{"class":467},[229,641,489],{"class":463},[14,643,644],{"id":644},"图片",[10,646,647],{},"图片默认通栏、带一像素边框，和站点的硬边风格保持一致：",[10,649,650],{},[651,652],"img",{"alt":653,"src":654},"夜色中的城市天际线，作为图片排版示例","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fmoonstream-skyline\u002F1400\u002F800",[14,656,657],{"id":657},"分隔线",[10,659,660],{},"正文的最后一个元素是它：",[662,663],"hr",{},[10,665,666],{},"测试结束。如果以上所有元素看起来都还体面，说明排版系统状态良好。",[668,669,670],"style",{},"html pre.shiki code .sBxw3, html code.shiki .sBxw3{--shiki-default:#BB9AF7;--shiki-light:#D73A49}html pre.shiki code .sirr2, html code.shiki .sirr2{--shiki-default:#C0CAF5;--shiki-light:#6F42C1}html pre.shiki code .sjXpA, html code.shiki .sjXpA{--shiki-default:#9ABDF5;--shiki-light:#24292E}html pre.shiki code .surVy, html code.shiki .surVy{--shiki-default:#73DACA;--shiki-light:#E36209}html pre.shiki code .sNP9S, html code.shiki .sNP9S{--shiki-default:#89DDFF;--shiki-light:#D73A49}html pre.shiki code .sZlli, html code.shiki .sZlli{--shiki-default:#0DB9D7;--shiki-light:#005CC5}html pre.shiki code .sxkyg, html code.shiki .sxkyg{--shiki-default:#7AA2F7;--shiki-light:#6F42C1}html pre.shiki code .sgjcI, html code.shiki .sgjcI{--shiki-default:#E0AF68;--shiki-light:#E36209}html pre.shiki code .szu1u, html code.shiki .szu1u{--shiki-default:#89DDFF;--shiki-light:#24292E}html pre.shiki code .skDMT, html code.shiki .skDMT{--shiki-default:#BB9AF7;--shiki-default-font-style:italic;--shiki-light:#D73A49;--shiki-light-font-style:inherit}html pre.shiki code .s4do5, html code.shiki .s4do5{--shiki-default:#C0CAF5;--shiki-light:#24292E}html pre.shiki code .sVZrm, html code.shiki .sVZrm{--shiki-default:#7DCFFF;--shiki-light:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .snP_1, html code.shiki .snP_1{--shiki-default:#9ECE6A;--shiki-light:#032F62}html pre.shiki code .sEAt2, html code.shiki .sEAt2{--shiki-default:#89DDFF;--shiki-light:#B31D28}html pre.shiki code .sCgCi, html code.shiki .sCgCi{--shiki-default:#914C54;--shiki-light:#B31D28}html pre.shiki code .s0Hzo, html code.shiki .s0Hzo{--shiki-default:#89DDFF;--shiki-light:#22863A}html pre.shiki code .sC2qC, html code.shiki .sC2qC{--shiki-default:#449DAB;--shiki-light:#22863A}html pre.shiki code .sUpvg, html code.shiki .sUpvg{--shiki-default:#BA3C97;--shiki-light:#24292E}html pre.shiki code .seN_b, html code.shiki .seN_b{--shiki-default:#F7768E;--shiki-light:#22863A}html pre.shiki code .s71bh, html code.shiki .s71bh{--shiki-default:#BB9AF7;--shiki-light:#6F42C1}html pre.shiki code .sbW-k, html code.shiki .sbW-k{--shiki-default:#89DDFF;--shiki-light:#032F62}html pre.shiki code .sG9mu, html code.shiki .sG9mu{--shiki-default:#9D7CD8;--shiki-default-font-style:italic;--shiki-light:#D73A49;--shiki-light-font-style:inherit}html pre.shiki code .sAEpf, html code.shiki .sAEpf{--shiki-default:#C0CAF5;--shiki-light:#E36209}html pre.shiki code .sV0ZF, html code.shiki .sV0ZF{--shiki-default:#BB9AF7;--shiki-light:#005CC5}",{"title":225,"searchDepth":262,"depth":262,"links":672},[673,676,677,678,679,680,681],{"id":16,"depth":247,"text":16,"children":674},[675],{"id":46,"depth":262,"text":46},{"id":52,"depth":247,"text":52},{"id":125,"depth":247,"text":125},{"id":145,"depth":247,"text":145},{"id":215,"depth":247,"text":215},{"id":644,"depth":247,"text":644},{"id":657,"depth":247,"text":657},null,"2026-05-02","一篇用来检验站点排版系统的文章：标题层级、列表、引用、表格、多语言代码块、图片与分隔线全部在场。改动样式之后，先来这里看一眼。",false,"md",{},"\u002Fposts\u002Fmarkdown-kitchen-sink",{"title":5,"description":684},"posts\u002Fmarkdown-kitchen-sink",[692,693],"markdown","排版","1t9WVfrCPWDrpJ9sZTnCtMxnlAIrMK9Rdq7A15YQJ2E",[696,700],{"title":697,"path":698,"stem":699,"children":-1},"滚动驱动动画：让 scroll 监听器退休","\u002Fposts\u002Fcss-scroll-driven-animations","posts\u002Fcss-scroll-driven-animations",{"title":701,"path":702,"stem":703,"children":-1},"satisfies、as const 与类型收窄的日常","\u002Fposts\u002Ftypescript-satisfies-in-practice","posts\u002Ftypescript-satisfies-in-practice",1786707084540]