[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fgetting-started":3,"knowledge-series-\u002Fknowledge\u002Fgetting-started":3359,"knowledge-related-\u002Fknowledge\u002Fgetting-started":3363},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":16,"pinned":17,"draft":18,"body":19,"seo":3356,"stem":3357,"id":3358,"extension":1799},"\u002Fknowledge\u002Fgetting-started","知识库说明","FORMA 知识库完整阅读指南：迁移动机、四大内容分区、浏览与检索、Frontmatter \u002F MDC 写作约定、API 说明与常见问题。","阅读指南",[12,13,14,15],"forma","markdown","guide","nuxt-content","2026-07-22",true,false,{"type":20,"value":21,"toc":3291},"minimark",[22,25,34,37,50,61,64,67,176,182,184,188,195,255,271,318,331,335,362,364,368,379,382,493,496,506,509,515,524,526,533,540,543,627,630,722,725,727,733,736,739,790,793,849,862,864,870,877,880,886,960,963,1003,1009,1011,1017,1032,1035,1071,1074,1076,1080,1083,1087,1100,1104,1142,1146,1167,1171,1193,1197,1220,1223,1265,1267,1271,1277,1345,1351,1419,1421,1425,1431,1434,1501,1504,1561,1563,1567,1570,1591,1595,1601,1715,1722,1785,1792,1795,1995,1999,2098,2102,2112,2202,2227,2248,2354,2359,2720,2722,2726,2743,2750,2825,2827,2838,2858,2865,2871,2886,2941,2948,2951,2969,2971,2974,2995,2998,3018,3021,3040,3048,3050,3053,3084,3105,3121,3129,3137,3145,3157,3177,3185,3187,3191,3285,3288],[23,24,8],"h1",{"id":8},[26,27,28,29,33],"p",{},"欢迎来到 ",[30,31,32],"strong",{},"FORMA 知识库","。",[26,35,36],{},"这里把原先分散在独立文档站里的笔记、技能小册、生活记录与团队实践，统一收进 FORMA 工具台，和代码美化、Playground、图片压缩等工具放在同一张「桌面」上。",[26,38,39,40,43,44,49],{},"本文是整库的",[30,41,42],{},"阅读入口","：说明迁移动机、内容地图、推荐读法、页面怎么用，以及如何继续用 Markdown 写作与维护。若你只想快速上手，先看 ",[45,46,48],"a",{"href":47},"#%E4%B8%89%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B","三分钟上手","，再按兴趣跳进对应分区。",[51,52,54],"callout",{"color":53},"info",[26,55,56,57,60],{},"当前库内约有 ",[30,58,59],{},"426"," 篇 Markdown：技能小册 ~209、生活笔记 ~166、服务笔记 ~28、团队文档 ~22，另含本篇阅读指南。列表页支持分类筛选、关键词搜索与滚动分页；详情页提供目录、上下篇与回到顶部。近期已将 Jenkins \u002F 跨端 \u002F Redis \u002F Git \u002F Docker \u002F Sass \u002F 模块联邦 \u002F 摄影场景等碎片文合并为专题，单篇更完整。",[62,63],"hr",{},[65,66,48],"h2",{"id":48},[68,69,70,90,101,126,142,156,166],"ol",{},[71,72,73,74,77,78,82,83,82,86,89],"li",{},"打开 ",[45,75,76],{"href":76},"\u002Fknowledge","。左侧点分类，或顶部搜索框输入关键词（如 ",[79,80,81],"code",{},"vue","、",[79,84,85],{},"docker",[79,87,88],{},"摄影","）。",[71,91,92,93,96,97,100],{},"列表按",[30,94,95],{},"置顶优先","，再按 ",[79,98,99],{},"date"," 倒序；滚到底部会自动加载下一页（默认每页 20 篇）。",[71,102,103,104,107,108,107,111,107,114,107,116,107,119,107,122,125],{},"点进文章后：左侧看分类 \u002F 日期 \u002F 标签与目录；正文区阅读；大屏右侧可看上下篇与 Series；",[79,105,106],{},"html"," \u002F ",[79,109,110],{},"css",[79,112,113],{},"js",[79,115,81],{},[79,117,118],{},"ts",[79,120,121],{},"scss",[79,123,124],{},"less"," 代码块可一键「Playground」打开演练场；右下角可回到顶部。",[71,127,128,131,132,136,137,141],{},[30,129,130],{},"系统补前端 \u002F 全栈","：从 ",[45,133,135],{"href":134},"\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics","JavaScript 基础"," 或 ",[45,138,140],{"href":139},"\u002Fknowledge\u002Fbooklet\u002Fproject\u002Fbasics","工程化概览"," 进入技能小册。",[71,143,144,147,148,82,151,82,153,33],{},[30,145,146],{},"部署与私有化","：在列表选「服务笔记」，或搜 ",[79,149,150],{},"1panel",[79,152,85],{},[79,154,155],{},"jenkins",[71,157,158,131,161,165],{},[30,159,160],{},"摄影或小说",[45,162,164],{"href":163},"\u002Fknowledge\u002Flife-notes\u002Fphoto-creation","学习摄影创作"," 进入，或列表筛选「生活笔记」。",[71,167,168,171,172,33],{},[30,169,170],{},"业务踩坑与组件实践","：列表筛选「团队文档」，例如 ",[45,173,175],{"href":174},"\u002Fknowledge\u002Fteam-documents\u002F01","执行价格弹窗",[51,177,179],{"color":178},"success",[26,180,181],{},"从列表返回详情再回来时，一般会尽量恢复你离开时的滚动位置；点分类筛选会滚回列表顶部，方便重新扫标题。",[62,183],{},[65,185,187],{"id":186},"为什么从-rspress-迁移到-forma","为什么从 Rspress 迁移到 FORMA？",[26,189,190,191,194],{},"早期知识库以 ",[30,192,193],{},"Rspress","（偏文档站 \u002F 静态站点）独立部署：结构清晰、适合「纯文档」场景，但也带来一些摩擦。",[196,197,198,211],"table",{},[199,200,201],"thead",{},[202,203,204,208],"tr",{},[205,206,207],"th",{},"痛点",[205,209,210],{},"说明",[212,213,214,223,231,239,247],"tbody",{},[202,215,216,220],{},[217,218,219],"td",{},"站点割裂",[217,221,222],{},"工具在 FORMA，笔记在另一个域名 \u002F 仓库，日常切换成本高",[202,224,225,228],{},[217,226,227],{},"双份基建",[217,229,230],{},"主题、导航、部署流水线、域名与缓存要维护两套",[202,232,233,236],{},[217,234,235],{},"检索与入口分散",[217,237,238],{},"「一边查文档一边用工具」时要开多个标签页",[202,240,241,244],{},[217,242,243],{},"扩展不够顺",[217,245,246],{},"列表分页、站点更新提示、与 Nuxt UI \u002F API \u002F SQLite 打通不自然",[202,248,249,252],{},[217,250,251],{},"内容体量变大",[217,253,254],{},"小册、生活、服务、团队文档增多后，更需要统一的 Frontmatter、分类与接口约定",[26,256,257,258,261,262,265,266,270],{},"因此在 FORMA ",[30,259,260],{},"v1.0.0"," 起，把原 Rspress 知识库",[30,263,264],{},"整体迁入本站","（详见 ",[45,267,269],{"href":268},"\u002Fchangelog","更新日志","）：",[272,273,274,280,293,299],"ul",{},[71,275,276,279],{},[30,277,278],{},"内容仍是 Markdown","：写作习惯不变，Git 可审阅、可 diff。",[71,281,282,285,286,288,289,292],{},[30,283,284],{},"渲染交给 Nuxt Content","：构建 \u002F 开发时写入 SQLite（",[79,287,5],{},"），页面与 ",[79,290,291],{},"\u002Fapi\u002Fknowledge"," 读同一份数据。",[71,294,295,298],{},[30,296,297],{},"与工具台同站","：侧栏即可在「工具」与「知识库」之间切换。",[71,300,301,304,305,107,308,107,311,107,314,317],{},[30,302,303],{},"统一信息架构","：",[79,306,307],{},"category",[79,309,310],{},"tags",[79,312,313],{},"pinned",[79,315,316],{},"draft"," 一套约定，列表与接口行为一致。",[51,319,321],{"color":320},"primary",[26,322,323,324,327,328,89],{},"迁移重点是「入口与基建合并」，不是推倒重写正文。历史文章大多保留原有结构与配图；站内链接已统一为 ",[79,325,326],{},"\u002Fknowledge\u002F...","（Content 侧路径段为",[30,329,330],{},"小写",[332,333,334],"h3",{"id":334},"迁移后立刻能感知的变化",[272,336,337,348,351,354],{},[71,338,339,340,344,345,89],{},"地址从独立文档站变为 ",[30,341,342],{},[79,343,326],{},"（完整形式：",[79,346,347],{},"https:\u002F\u002F你的域名\u002Fknowledge\u002F...",[71,349,350],{},"列表可按「技能小册 \u002F 生活笔记 \u002F 服务笔记 \u002F 团队文档 \u002F 阅读指南」筛选。",[71,352,353],{},"详情页与 FORMA 主题色、浅色 \u002F 深色模式一致。",[71,355,356,357,361],{},"需要程序读取时，可直接调接口（见 ",[45,358,360],{"href":359},"#%E6%95%B0%E6%8D%AE%E4%B8%8E%E6%8E%A5%E5%8F%A3%E8%BF%9B%E9%98%B6","数据与接口","），不必再爬静态 HTML。",[62,363],{},[65,365,367],{"id":366},"这里记录了哪些内容","这里记录了哪些内容？",[26,369,370,371,374,375,378],{},"知识库按",[30,372,373],{},"用途","分成四大内容分区，外加本篇阅读指南。源文件都在 ",[79,376,377],{},"content\u002Fknowledge\u002F"," 下。",[332,380,381],{"id":381},"总览",[196,383,384,404],{},[199,385,386],{},[202,387,388,391,394,398,401],{},[205,389,390],{},"分区",[205,392,393],{},"目录",[205,395,396],{},[79,397,307],{},[205,399,400],{},"大致体量",[205,402,403],{},"一句话",[212,405,406,424,442,460,478],{},[202,407,408,411,416,418,421],{},[217,409,410],{},"技能小册",[217,412,413],{},[79,414,415],{},"booklet\u002F",[217,417,410],{},[217,419,420],{},"~209 篇",[217,422,423],{},"前端到运维的系统化入门笔记",[202,425,426,429,434,436,439],{},[217,427,428],{},"生活笔记",[217,430,431],{},[79,432,433],{},"life-notes\u002F",[217,435,428],{},[217,437,438],{},"~166 篇",[217,440,441],{},"摄影、小说与日常观察",[202,443,444,447,452,454,457],{},[217,445,446],{},"服务笔记",[217,448,449],{},[79,450,451],{},"service-notes\u002F",[217,453,446],{},[217,455,456],{},"~28 篇",[217,458,459],{},"自部署、运维工具与技术调研",[202,461,462,465,470,472,475],{},[217,463,464],{},"团队文档",[217,466,467],{},[79,468,469],{},"team-documents\u002F",[217,471,464],{},[217,473,474],{},"~22 篇",[217,476,477],{},"业务组件、性能与踩坑复盘",[202,479,480,482,485,487,490],{},[217,481,10],{},[217,483,484],{},"（根目录）",[217,486,10],{},[217,488,489],{},"本篇等",[217,491,492],{},"怎么读、怎么写、库怎么组织",[332,494,495],{"id":495},"内容之间的关系",[497,498,504],"pre",{"className":499,"code":501,"language":502,"meta":503},[500],"language-text","阅读指南（本篇）\n    │\n    ├─ 技能小册 ── 概念与路径（学什么）\n    ├─ 服务笔记 ── 落地与踩坑（怎么装、怎么排）\n    ├─ 团队文档 ── 业务现场（组件 \u002F 性能 \u002F 兼容）\n    └─ 生活笔记 ── 兴趣与表达（摄影 \u002F 小说 \u002F 日常）\n","text","",[79,505,501],{"__ignoreMap":503},[26,507,508],{},"技术向文章之间会互相引用（例如服务笔记链到小册里的 NestJS、字体优化等）。站内链接统一为：",[497,510,513],{"className":511,"code":512,"language":502,"meta":503},[500],"\u002Fknowledge\u002F\u003C分区>\u002F\u003C…路径…>\n",[79,514,512],{"__ignoreMap":503},[26,516,517,518,521,522,33],{},"示例：",[79,519,520],{},"content\u002Fknowledge\u002Fbooklet\u002Fweb\u002FJs\u002Fbasics.md"," → ",[45,523,134],{"href":134},[62,525],{},[65,527,529,530,532],{"id":528},"_1-技能小册booklet","1. 技能小册（",[79,531,415],{},"）",[26,534,535,536,539],{},"面向「把技术栈串起来」的学习路径，偏",[30,537,538],{},"结构化笔记","：不是替代官方文档，而是帮你建立地图与常用概念。",[332,541,542],{"id":542},"推荐入口",[196,544,545,555],{},[199,546,547],{},[202,548,549,552],{},[205,550,551],{},"想学什么",[205,553,554],{},"建议从这里开始",[212,556,557,566,585,594,605,616],{},[202,558,559,561],{},[217,560,135],{},[217,562,563],{},[45,564,565],{"href":134},"JS · basics",[202,567,568,571],{},[217,569,570],{},"框架（Vue \u002F React \u002F Angular）",[217,572,573,82,577,82,581],{},[45,574,576],{"href":575},"\u002Fknowledge\u002Fbooklet\u002Fframe\u002Fvue\u002Fbasics","Vue · basics",[45,578,580],{"href":579},"\u002Fknowledge\u002Fbooklet\u002Fframe\u002Freact\u002Fbasics","React · basics",[45,582,584],{"href":583},"\u002Fknowledge\u002Fbooklet\u002Fframe\u002Fangular\u002Fbasics","Angular · basics",[202,586,587,590],{},[217,588,589],{},"工程化",[217,591,592],{},[45,593,140],{"href":139},[202,595,596,599],{},[217,597,598],{},"后端与运行时",[217,600,601],{},[45,602,604],{"href":603},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbasics","后端入门概览",[202,606,607,610],{},[217,608,609],{},"数据存储",[217,611,612],{},[45,613,615],{"href":614},"\u002Fknowledge\u002Fbooklet\u002Fsql","SQL 导读",[202,617,618,621],{},[217,619,620],{},"Git \u002F Docker \u002F Nginx",[217,622,623],{},[45,624,626],{"href":625},"\u002Fknowledge\u002Fbooklet\u002Fuphold","运维与协作导读",[332,628,629],{"id":629},"子目录地图",[196,631,632,645],{},[199,633,634],{},[202,635,636,639,642],{},[205,637,638],{},"子目录",[205,640,641],{},"主题",[205,643,644],{},"你会看到什么",[212,646,647,660,673,685,697,709],{},[202,648,649,654,657],{},[217,650,651],{},[79,652,653],{},"web\u002F",[217,655,656],{},"前端基础",[217,658,659],{},"HTML、CSS（含 Sass\u002FLess）、JavaScript（作用域、原型、事件循环、DOM 等）",[202,661,662,667,670],{},[217,663,664],{},[79,665,666],{},"frame\u002F",[217,668,669],{},"前端框架",[217,671,672],{},"Vue \u002F React \u002F Angular 基础、路由、状态、性能相关笔记",[202,674,675,680,682],{},[217,676,677],{},[79,678,679],{},"project\u002F",[217,681,589],{},[217,683,684],{},"Vite、Webpack、ESLint、Prettier、Husky、环境变量等",[202,686,687,692,694],{},[217,688,689],{},[79,690,691],{},"end\u002F",[217,693,598],{},[217,695,696],{},"Node.js、Express、NestJS、Bun、Deno、Rust 入门路径",[202,698,699,704,706],{},[217,700,701],{},[79,702,703],{},"sql\u002F",[217,705,609],{},[217,707,708],{},"MySQL、Redis 基础与导读",[202,710,711,716,719],{},[217,712,713],{},[79,714,715],{},"uphold\u002F",[217,717,718],{},"运维协作",[217,720,721],{},"Git、Docker、Nginx",[26,723,724],{},"适合：系统补基础、面试前串知识点、或写业务时快速回顾某一块。",[62,726],{},[65,728,730,731,532],{"id":729},"_2-生活笔记life-notes","2. 生活笔记（",[79,732,433],{},[26,734,735],{},"偏个人表达与长期兴趣，和技能小册分开，避免「技术文档」与「生活记录」搅在一起。",[332,737,542],{"id":738},"推荐入口-1",[196,740,741,751],{},[199,742,743],{},[202,744,745,748],{},[205,746,747],{},"想看什么",[205,749,750],{},"入口",[212,752,753,762,778],{},[202,754,755,758],{},[217,756,757],{},"摄影入门课",[217,759,760],{},[45,761,164],{"href":163},[202,763,764,767],{},[217,765,766],{},"小说连载",[217,768,769,770,773,774,532],{},"列表搜书名，或从各书目录下的 ",[79,771,772],{},"start"," \u002F 第一章进入（如 ",[45,775,777],{"href":776},"\u002Fknowledge\u002Flife-notes\u002Flife-novel\u002Fnovel-01\u002Fstart","novel-01 · start",[202,779,780,783],{},[217,781,782],{},"日常短文",[217,784,785,786,789],{},"列表筛选「生活笔记」，浏览 ",[79,787,788],{},"life-content\u002F"," 下文章",[332,791,629],{"id":792},"子目录地图-1",[196,794,795,805],{},[199,796,797],{},[202,798,799,801,803],{},[205,800,638],{},[205,802,641],{},[205,804,210],{},[212,806,807,820,837],{},[202,808,809,814,817],{},[217,810,811],{},[79,812,813],{},"photo-creation\u002F",[217,815,816],{},"摄影创作",[217,818,819],{},"基础（曝光三角、光圈快门 ISO…）、练习课题、七大场景专题（风光\u002F街头\u002F人像等）",[202,821,822,827,830],{},[217,823,824],{},[79,825,826],{},"life-novel\u002F",[217,828,829],{},"小说",[217,831,832,833,836],{},"多部连载 \u002F 完结作品章节（",[30,834,835],{},"虚构叙事","，请勿过度代入现实）",[202,838,839,843,846],{},[217,840,841],{},[79,842,788],{},[217,844,845],{},"日常内容",[217,847,848],{},"生活向短文与其它记录",[26,850,851,852,521,855,521,858,861],{},"摄影建议顺序：",[79,853,854],{},"basics",[79,856,857],{},"practice",[79,859,860],{},"scenarios","（先懂原理，再敢拍，再会选场景）。",[62,863],{},[65,865,867,868,532],{"id":866},"_3-服务笔记service-notes","3. 服务笔记（",[79,869,451],{},[26,871,872,873,876],{},"记录真实环境里的",[30,874,875],{},"部署、排错、选型与调研","，偏「做过一遍」的经验，常带截图与命令。",[332,878,542],{"id":879},"推荐入口-2",[26,881,882,883,885],{},"在 ",[45,884,76],{"href":76}," 选择分类「服务笔记」，或直接用关键词搜索。常见主题示例：",[196,887,888,898],{},[199,889,890],{},[202,891,892,895],{},[205,893,894],{},"主题方向",[205,896,897],{},"示例关键词 \u002F 文件线索",[212,899,900,916,931,941],{},[202,901,902,905],{},[217,903,904],{},"面板与托管",[217,906,907,82,909,912,913],{},[79,908,150],{},[79,910,911],{},"bt","（宝塔）、",[79,914,915],{},"dokploy",[202,917,918,921],{},[217,919,920],{},"CI \u002F 构建",[217,922,923,82,925,82,928],{},[79,924,155],{},[79,926,927],{},"pm2",[79,929,930],{},"deploy-docker",[202,932,933,936],{},[217,934,935],{},"AI \u002F 应用",[217,937,938],{},[79,939,940],{},"dify",[202,942,943,946],{},[217,944,945],{},"工程调研",[217,947,948,82,951,82,954,82,957],{},[79,949,950],{},"double-token",[79,952,953],{},"font",[79,955,956],{},"modules",[79,958,959],{},"cross-platform",[332,961,629],{"id":962},"子目录地图-2",[196,964,965,975],{},[199,966,967],{},[202,968,969,971,973],{},[205,970,638],{},[205,972,641],{},[205,974,210],{},[212,976,977,990],{},[202,978,979,984,987],{},[217,980,981],{},[79,982,983],{},"service\u002F",[217,985,986],{},"服务与运维",[217,988,989],{},"1Panel、Jenkins、Dify、Dokploy、PM2、Docker 部署、宝塔等",[202,991,992,997,1000],{},[217,993,994],{},[79,995,996],{},"research\u002F",[217,998,999],{},"技术调研",[217,1001,1002],{},"模块联邦、远程组件、双 Token、字体子集、跨端、Rust\u002FPATH 等",[51,1004,1006],{"color":1005},"warning",[26,1007,1008],{},"命令与截图可能随版本过时。排障时请以官方文档为准，本文当「思路备忘」与「曾经有效过的路径」。",[62,1010],{},[65,1012,1014,1015,532],{"id":1013},"_4-团队文档team-documents","4. 团队文档（",[79,1016,469],{},[26,1018,1019,1020,1023,1024,1027,1028,1031],{},"来自真实业务现场的",[30,1021,1022],{},"组件设计、性能优化、兼容适配与事故复盘","，编号 ",[79,1025,1026],{},"01","–",[79,1029,1030],{},"22","，彼此相对独立，可按标题检索。",[332,1033,1034],{"id":1034},"怎么读",[68,1036,1037,1046,1068],{},[71,1038,1039,1040,107,1043,33],{},"列表筛选「团队文档」，扫 ",[79,1041,1042],{},"title",[79,1044,1045],{},"description",[71,1047,1048,1049],{},"或打开具体篇目，例如：\n",[272,1050,1051,1056,1062],{},[71,1052,1053],{},[45,1054,1055],{"href":174},"01 · 执行价格弹窗与可配置表格",[71,1057,1058],{},[45,1059,1061],{"href":1060},"\u002Fknowledge\u002Fteam-documents\u002F02","02 · 防篡改水印",[71,1063,1064],{},[45,1065,1067],{"href":1066},"\u002Fknowledge\u002Fteam-documents\u002F13","13 · 新商家系统性能优化",[71,1069,1070],{},"关注文中的技术栈版本与复盘结论；迁移到自己的项目时注意框架与组件库差异。",[26,1072,1073],{},"适合：做后台表格、H5 \u002F 企微内嵌、上传水印、支付中转、列表性能等问题时对照。",[62,1075],{},[65,1077,1079],{"id":1078},"怎么阅读推荐路径","怎么阅读？推荐路径",[26,1081,1082],{},"不同目标，建议用不同读法。",[332,1084,1086],{"id":1085},"a-访客随便逛逛","A. 访客随便逛逛",[68,1088,1089,1094,1097],{},[71,1090,73,1091,1093],{},[45,1092,76],{"href":76},"，先看置顶（本篇）。",[71,1095,1096],{},"左侧点一个分类，扫标题与摘要。",[71,1098,1099],{},"感兴趣再进正文；不必按目录顺序读。",[332,1101,1103],{"id":1102},"b-系统补前端-全栈","B. 系统补前端 \u002F 全栈",[68,1105,1106,1111,1119,1133],{},[71,1107,1108,1110],{},[45,1109,565],{"href":134}," → HTML \u002F CSS 同级目录。",[71,1112,1113,1116,1117,33],{},[79,1114,1115],{},"frame","（Vue \u002F React \u002F Angular）→ ",[45,1118,140],{"href":139},[71,1120,1121,1122,1125,1126,1129,1130,33],{},"需要服务端时进 ",[45,1123,1124],{"href":603},"后端入门","，数据进 ",[45,1127,1128],{"href":614},"SQL","，协作与部署进 ",[45,1131,1132],{"href":625},"uphold",[71,1134,1135,1136,107,1139,1141],{},"每个大目录常有 ",[79,1137,1138],{},"index",[79,1140,854],{}," 导读，优先跟表走。",[332,1143,1145],{"id":1144},"c-排生产-自托管问题","C. 排生产 \u002F 自托管问题",[68,1147,1148,1161,1164],{},[71,1149,1150,1151,82,1153,82,1155,82,1157,82,1159,33],{},"分类选「服务笔记」，或搜 ",[79,1152,150],{},[79,1154,155],{},[79,1156,85],{},[79,1158,927],{},[79,1160,940],{},[71,1162,1163],{},"对照文中命令与截图；版本以官方为准。",[71,1165,1166],{},"若涉及前端基建，可交叉阅读技能小册的工程化 \u002F NestJS 等章节。",[332,1168,1170],{"id":1169},"d-学摄影或看小说","D. 学摄影或看小说",[68,1172,1173,1184,1190],{},[71,1174,1175,1176,521,1178,521,1180,521,1182,33],{},"摄影：",[45,1177,164],{"href":163},[79,1179,854],{},[79,1181,857],{},[79,1183,860],{},[71,1185,1186,1187,1189],{},"小说：从各书 ",[79,1188,772],{}," \u002F 第一章进入，按章节阅读。",[71,1191,1192],{},"记住：小说为虚构，请以文内声明为准。",[332,1194,1196],{"id":1195},"e-查业务组件与踩坑","E. 查业务组件与踩坑",[68,1198,1199,1202,1217],{},[71,1200,1201],{},"分类选「团队文档」。",[71,1203,1204,1205,82,1208,82,1211,82,1214,89],{},"用搜索框输入现象关键词（如 ",[79,1206,1207],{},"水印",[79,1209,1210],{},"键盘",[79,1212,1213],{},"vxe-table",[79,1215,1216],{},"企微",[71,1218,1219],{},"先读「背景 \u002F 现象」，再读「方案 \u002F 复盘」，最后对照自己的技术栈。",[332,1221,1222],{"id":1222},"阅读时的小提示",[272,1224,1225,1234,1244,1250,1259],{},[71,1226,1227,1230,1231,1233],{},[30,1228,1229],{},"摘要先行","：列表里的 ",[79,1232,1045],{}," 一般够判断要不要点进去。",[71,1235,1236,1239,1240,1243],{},[30,1237,1238],{},"用标签扫一眼","：详情侧栏的 ",[79,1241,1242],{},"#tag"," 反映主题词，便于联想相关文。",[71,1245,1246,1249],{},[30,1247,1248],{},"相信目录","：长文左侧 TOC 比反复滚动更高效。",[71,1251,1252,1255,1256,1258],{},[30,1253,1254],{},"交叉引用","：正文里的站内链接已尽量改为 ",[79,1257,326],{},"；若遇 404，多半是路径大小写或旧链接残留。",[71,1260,1261,1264],{},[30,1262,1263],{},"批判性阅读","：小册与笔记不能保证绝对正确；以官方文档与你的实践为准。",[62,1266],{},[65,1268,1270],{"id":1269},"列表页与详情页怎么用","列表页与详情页怎么用？",[332,1272,1274,1275],{"id":1273},"列表页-knowledge","列表页 ",[79,1276,76],{},[196,1278,1279,1288],{},[199,1280,1281],{},[202,1282,1283,1286],{},[205,1284,1285],{},"能力",[205,1287,210],{},[212,1289,1290,1305,1313,1321,1329,1337],{},[202,1291,1292,1295],{},[217,1293,1294],{},"分类",[217,1296,1297,1298,1300,1301,1304],{},"左侧「全部」与各 ",[79,1299,307],{},"；数字为",[30,1302,1303],{},"当前搜索条件下","的篇数",[202,1306,1307,1310],{},[217,1308,1309],{},"搜索",[217,1311,1312],{},"匹配标题、摘要、分类、标签（带防抖）；会重置分页",[202,1314,1315,1318],{},[217,1316,1317],{},"分页",[217,1319,1320],{},"默认每页 20 篇，滚到底自动加载；显示「已加载 \u002F 总数」",[202,1322,1323,1326],{},[217,1324,1325],{},"排序",[217,1327,1328],{},"置顶 → 日期倒序",[202,1330,1331,1334],{},[217,1332,1333],{},"悬停预取",[217,1335,1336],{},"鼠标悬停 \u002F 按下链接时会预热详情接口，减少偶发打开缓慢",[202,1338,1339,1342],{},[217,1340,1341],{},"回到顶部",[217,1343,1344],{},"滚动一段距离后，右下角出现按钮",[332,1346,1348,1349],{"id":1347},"详情页-knowledge","详情页 ",[79,1350,326],{},[196,1352,1353,1361],{},[199,1354,1355],{},[202,1356,1357,1359],{},[205,1358,1285],{},[205,1360,210],{},[212,1362,1363,1371,1384,1396,1404,1411],{},[202,1364,1365,1368],{},[217,1366,1367],{},"元信息",[217,1369,1370],{},"分类、日期、标签",[202,1372,1373,1375],{},[217,1374,393],{},[217,1376,1377,1378,1027,1380,1383],{},"由正文 ",[79,1379,65],{},[79,1381,1382],{},"h4"," 生成，可点击跳转",[202,1385,1386,1389],{},[217,1387,1388],{},"正文",[217,1390,1391,1392,1395],{},"MDC 渲染：标题、列表、表格、代码高亮、",[79,1393,1394],{},"::callout","、图片懒加载等",[202,1397,1398,1401],{},[217,1399,1400],{},"上下文",[217,1402,1403],{},"上一篇 \u002F 下一篇（异步加载，不阻塞正文首屏）",[202,1405,1406,1408],{},[217,1407,1341],{},[217,1409,1410],{},"同列表页",[202,1412,1413,1416],{},[217,1414,1415],{},"SEO",[217,1417,1418],{},"标题 \u002F 描述 \u002F canonical 会随文章更新",[62,1420],{},[65,1422,1424],{"id":1423},"站点结构与-url-约定","站点结构与 URL 约定",[497,1426,1429],{"className":1427,"code":1428,"language":502,"meta":503},[500],"content\u002Fknowledge\u002F\n├── getting-started.md           → \u002Fknowledge\u002Fgetting-started\n├── booklet\u002F                     → \u002Fknowledge\u002Fbooklet\u002F...\n├── life-notes\u002F                  → \u002Fknowledge\u002Flife-notes\u002F...\n├── service-notes\u002F               → \u002Fknowledge\u002Fservice-notes\u002F...\n└── team-documents\u002F              → \u002Fknowledge\u002Fteam-documents\u002F...\n",[79,1430,1428],{"__ignoreMap":503},[26,1432,1433],{},"规则简述：",[68,1435,1436,1446,1459,1477,1487],{},[71,1437,1438,1439,1441,1442,1445],{},"文件路径相对 ",[79,1440,377],{},"，去掉 ",[79,1443,1444],{},".md"," 即路由后缀。",[71,1447,1448,1451,1452,1454,1455,1458],{},[79,1449,1450],{},"index.md"," 通常对应去掉 ",[79,1453,1138],{}," 的目录路径（以实际生成的 ",[79,1456,1457],{},"path"," 为准）。",[71,1460,1461,1464,1465,82,1468,1471,1472,82,1475,33],{},[30,1462,1463],{},"路径段小写","：即使仓库目录是 ",[79,1466,1467],{},"NodeJs",[79,1469,1470],{},"Js","，访问时用 ",[79,1473,1474],{},"nodejs",[79,1476,113],{},[71,1478,1479,1480,1483,1484,1486],{},"文内互链请写",[30,1481,1482],{},"绝对路径","，例如 ",[79,1485,134],{},"，避免相对路径在迁移后失效。",[71,1488,1489,1490,1493,1494,1497,1498,1500],{},"旧站形式（如 ",[79,1491,1492],{},"\u002Fbooklet\u002F...","、裸 ",[79,1495,1496],{},"\u002Flife-notes\u002F...","）已废弃，请改带 ",[79,1499,76],{}," 前缀。",[332,1502,1503],{"id":1503},"路径对照示例",[196,1505,1506,1516],{},[199,1507,1508],{},[202,1509,1510,1513],{},[205,1511,1512],{},"仓库文件",[205,1514,1515],{},"访问 URL",[212,1517,1518,1529,1539,1550],{},[202,1519,1520,1525],{},[217,1521,1522],{},[79,1523,1524],{},"content\u002Fknowledge\u002Fgetting-started.md",[217,1526,1527],{},[79,1528,7],{},[202,1530,1531,1535],{},[217,1532,1533],{},[79,1534,520],{},[217,1536,1537],{},[79,1538,134],{},[202,1540,1541,1546],{},[217,1542,1543],{},[79,1544,1545],{},"content\u002Fknowledge\u002Fteam-documents\u002F01.md",[217,1547,1548],{},[79,1549,174],{},[202,1551,1552,1557],{},[217,1553,1554],{},[79,1555,1556],{},"content\u002Fknowledge\u002Flife-notes\u002Fphoto-creation\u002Findex.md",[217,1558,1559],{},[79,1560,163],{},[62,1562],{},[65,1564,1566],{"id":1565},"如何撰写与维护文章","如何撰写与维护文章？",[332,1568,1569],{"id":1569},"新建一篇",[68,1571,1572,1581,1584],{},[71,1573,1574,1575,1577,1578,89],{},"在对应分区目录下新建 ",[79,1576,1444],{},"（例如 ",[79,1579,1580],{},"content\u002Fknowledge\u002Fservice-notes\u002Fservice\u002Fmy-note.md",[71,1582,1583],{},"写好 Frontmatter + 正文，保存。",[71,1585,1586,1587,1590],{},"本地执行 ",[79,1588,1589],{},"pnpm dev","，打开列表或对应 URL 预览；构建时会进入 Content 的 SQLite。",[332,1592,1594],{"id":1593},"frontmatter-字段","Frontmatter 字段",[26,1596,1597,1598,33],{},"Schema 定义见仓库根目录 ",[79,1599,1600],{},"content.config.ts",[196,1602,1603,1615],{},[199,1604,1605],{},[202,1606,1607,1610,1613],{},[205,1608,1609],{},"字段",[205,1611,1612],{},"类型",[205,1614,210],{},[212,1616,1617,1632,1643,1654,1673,1687,1702],{},[202,1618,1619,1623,1626],{},[217,1620,1621],{},[79,1622,1042],{},[217,1624,1625],{},"string",[217,1627,1628,1631],{},[30,1629,1630],{},"必填","。页面主标题，也用于列表与 SEO",[202,1633,1634,1638,1640],{},[217,1635,1636],{},[79,1637,1045],{},[217,1639,1625],{},[217,1641,1642],{},"摘要；用于列表卡片与 meta description，建议一两句说清「这篇解决什么」",[202,1644,1645,1649,1651],{},[217,1646,1647],{},[79,1648,307],{},[217,1650,1625],{},[217,1652,1653],{},"分类。建议稳定取值见下表",[202,1655,1656,1660,1665],{},[217,1657,1658],{},[79,1659,310],{},[217,1661,1625,1662],{},[1663,1664],"span",{},[217,1666,1667,1668,82,1670,1672],{},"标签数组；尽量具体（",[79,1669,81],{},[79,1671,85],{},"），避免空泛词",[202,1674,1675,1679,1681],{},[217,1676,1677],{},[79,1678,99],{},[217,1680,1625],{},[217,1682,1683,1686],{},[79,1684,1685],{},"YYYY-MM-DD","，参与列表排序",[202,1688,1689,1693,1696],{},[217,1690,1691],{},[79,1692,313],{},[217,1694,1695],{},"boolean",[217,1697,1698,1701],{},[79,1699,1700],{},"true"," 时置顶（请克制使用）",[202,1703,1704,1708,1710],{},[217,1705,1706],{},[79,1707,316],{},[217,1709,1695],{},[217,1711,1712,1714],{},[79,1713,1700],{}," 时不在列表与公开接口中展示",[332,1716,1718,1719,1721],{"id":1717},"建议的-category-取值","建议的 ",[79,1720,307],{}," 取值",[196,1723,1724,1734],{},[199,1725,1726],{},[202,1727,1728,1731],{},[205,1729,1730],{},"取值",[205,1732,1733],{},"用于",[212,1735,1736,1746,1756,1766,1776],{},[202,1737,1738,1742],{},[217,1739,1740],{},[79,1741,410],{},[217,1743,1744],{},[79,1745,415],{},[202,1747,1748,1752],{},[217,1749,1750],{},[79,1751,428],{},[217,1753,1754],{},[79,1755,433],{},[202,1757,1758,1762],{},[217,1759,1760],{},[79,1761,446],{},[217,1763,1764],{},[79,1765,451],{},[202,1767,1768,1772],{},[217,1769,1770],{},[79,1771,464],{},[217,1773,1774],{},[79,1775,469],{},[202,1777,1778,1782],{},[217,1779,1780],{},[79,1781,10],{},[217,1783,1784],{},"本篇等导读",[26,1786,1787,1788,1791],{},"分类样式（强调色 \u002F 图标）在前端 ",[79,1789,1790],{},"app\u002Futils\u002Fknowledge.ts"," 中映射；新增分类名若未登记，会走默认样式。",[332,1793,1794],{"id":1794},"完整示例",[497,1796,1800],{"className":1797,"code":1798,"language":1799,"meta":503,"style":503},"language-md shiki shiki-themes material-theme-lighter github-light github-dark","---\ntitle: 我的笔记\ndescription: 一段简短说明，会出现在列表摘要与搜索结果里。\ncategory: 服务笔记\ntags: [docker, ops]\ndate: 2026-07-22\npinned: false\n---\n\n## 背景\n\n正文从这里开始。\n\n::callout{color=\"success\"}\n可以用 callout 强调注意点、结论或风险。\n::\n\n### 命令示例\n\n```bash\ndocker compose up -d\n```\n","md",[79,1801,1802,1810,1823,1833,1843,1864,1875,1886,1891,1897,1908,1913,1920,1925,1931,1937,1943,1948,1957,1962,1973,1989],{"__ignoreMap":503},[1663,1803,1806],{"class":1804,"line":1805},"line",1,[1663,1807,1809],{"class":1808},"sP7_E","---\n",[1663,1811,1813,1816,1819],{"class":1804,"line":1812},2,[1663,1814,1042],{"class":1815},"sQzsp",[1663,1817,1818],{"class":1808},":",[1663,1820,1822],{"class":1821},"s_sjI"," 我的笔记\n",[1663,1824,1826,1828,1830],{"class":1804,"line":1825},3,[1663,1827,1045],{"class":1815},[1663,1829,1818],{"class":1808},[1663,1831,1832],{"class":1821}," 一段简短说明，会出现在列表摘要与搜索结果里。\n",[1663,1834,1836,1838,1840],{"class":1804,"line":1835},4,[1663,1837,307],{"class":1815},[1663,1839,1818],{"class":1808},[1663,1841,1842],{"class":1821}," 服务笔记\n",[1663,1844,1846,1848,1850,1853,1855,1858,1861],{"class":1804,"line":1845},5,[1663,1847,310],{"class":1815},[1663,1849,1818],{"class":1808},[1663,1851,1852],{"class":1808}," [",[1663,1854,85],{"class":1821},[1663,1856,1857],{"class":1808},",",[1663,1859,1860],{"class":1821}," ops",[1663,1862,1863],{"class":1808},"]\n",[1663,1865,1867,1869,1871],{"class":1804,"line":1866},6,[1663,1868,99],{"class":1815},[1663,1870,1818],{"class":1808},[1663,1872,1874],{"class":1873},"s_hVV"," 2026-07-22\n",[1663,1876,1878,1880,1882],{"class":1804,"line":1877},7,[1663,1879,313],{"class":1815},[1663,1881,1818],{"class":1808},[1663,1883,1885],{"class":1884},"syTEX"," false\n",[1663,1887,1889],{"class":1804,"line":1888},8,[1663,1890,1809],{"class":1808},[1663,1892,1894],{"class":1804,"line":1893},9,[1663,1895,1896],{"emptyLinePlaceholder":17},"\n",[1663,1898,1900,1904],{"class":1804,"line":1899},10,[1663,1901,1903],{"class":1902},"sDZcc","## ",[1663,1905,1907],{"class":1906},"s4Q2S","背景\n",[1663,1909,1911],{"class":1804,"line":1910},11,[1663,1912,1896],{"emptyLinePlaceholder":17},[1663,1914,1916],{"class":1804,"line":1915},12,[1663,1917,1919],{"class":1918},"su5hD","正文从这里开始。\n",[1663,1921,1923],{"class":1804,"line":1922},13,[1663,1924,1896],{"emptyLinePlaceholder":17},[1663,1926,1928],{"class":1804,"line":1927},14,[1663,1929,1930],{"class":1918},"::callout{color=\"success\"}\n",[1663,1932,1934],{"class":1804,"line":1933},15,[1663,1935,1936],{"class":1918},"可以用 callout 强调注意点、结论或风险。\n",[1663,1938,1940],{"class":1804,"line":1939},16,[1663,1941,1942],{"class":1918},"::\n",[1663,1944,1946],{"class":1804,"line":1945},17,[1663,1947,1896],{"emptyLinePlaceholder":17},[1663,1949,1951,1954],{"class":1804,"line":1950},18,[1663,1952,1953],{"class":1902},"### ",[1663,1955,1956],{"class":1906},"命令示例\n",[1663,1958,1960],{"class":1804,"line":1959},19,[1663,1961,1896],{"emptyLinePlaceholder":17},[1663,1963,1965,1969],{"class":1804,"line":1964},20,[1663,1966,1968],{"class":1967},"sLrMH","```",[1663,1970,1972],{"class":1971},"sY1H2","bash\n",[1663,1974,1976,1979,1982,1985],{"class":1804,"line":1975},21,[1663,1977,85],{"class":1978},"sbgvK",[1663,1980,1981],{"class":1821}," compose",[1663,1983,1984],{"class":1821}," up",[1663,1986,1988],{"class":1987},"stzsN"," -d\n",[1663,1990,1992],{"class":1804,"line":1991},22,[1663,1993,1994],{"class":1967},"```\n",[332,1996,1998],{"id":1997},"写作约定建议","写作约定（建议）",[272,2000,2001,2007,2025,2039,2077,2082,2085,2088,2095],{},[71,2002,2003,2006],{},[30,2004,2005],{},"一篇一个主题","；大专题拆多篇，并用导读页或表格串起来。",[71,2008,2009,2010,2013,2014,2016,2017,2020,2021,2024],{},"标题层级连贯：",[79,2011,2012],{},"#"," 文题（可与 ",[79,2015,1042],{}," 一致）→ ",[79,2018,2019],{},"##"," 大节 → ",[79,2022,2023],{},"###"," 小节；避免跳级。",[71,2026,2027,2028,107,2030,107,2032,107,2035,2038],{},"代码块标明语言（",[79,2029,118],{},[79,2031,81],{},[79,2033,2034],{},"bash",[79,2036,2037],{},"json"," 等），便于高亮。",[71,2040,2041,107,2043,107,2045,107,2047,107,2049,107,2051,107,2053,2055,2056,107,2059,107,2062,2065,2066,2069,2070,2073,2074,33],{},[79,2042,106],{},[79,2044,110],{},[79,2046,113],{},[79,2048,81],{},[79,2050,118],{},[79,2052,121],{},[79,2054,124],{},"（及 ",[79,2057,2058],{},"javascript",[79,2060,2061],{},"typescript",[79,2063,2064],{},"sass","）代码块会显示 ",[30,2067,2068],{},"Playground"," 按钮，可回填到站内演练场；不需要时在 fence meta 加 ",[79,2071,2072],{},"no-playground","。其他语言若也想打开，可加 ",[79,2075,2076],{},"playground",[71,2078,2079,2080,33],{},"外链写清来源；站内互链用 ",[79,2081,326],{},[71,2083,2084],{},"过时命令或版本在文首或 callout 里标明「以官方为准」。",[71,2086,2087],{},"表格列不宜过多；手机上过宽表格会横向滚动。",[71,2089,2090,2091,2094],{},"图片尽量有说明性 ",[79,2092,2093],{},"alt","；大图注意体积。",[71,2096,2097],{},"小说等虚构内容保留免责声明。",[332,2099,2101],{"id":2100},"mdc-callout-速查","MDC \u002F Callout 速查",[26,2103,2104,2105,2111],{},"正文由 ",[45,2106,2110],{"href":2107,"rel":2108},"https:\u002F\u002Fnuxtjs.org.cn\u002Fmodules\u002Fmdc",[2109],"nofollow","MDC"," 渲染，配色与 FORMA \u002F Nuxt UI 主题变量对齐。常用 callout：",[497,2113,2115],{"className":1797,"code":2114,"language":1799,"meta":503,"style":503},"::callout{color=\"info\"}\n说明、背景、补充信息。\n::\n\n::callout{color=\"success\"}\n技巧、推荐做法、正向提示。\n::\n\n::callout{color=\"warning\"}\n注意版本、安全或易踩坑点。\n::\n\n::callout{color=\"error\"}\n严重风险、勿直接照抄的危险操作。\n::\n\n::callout{color=\"primary\"}\n与本站能力相关的强调（迁移说明、产品约定等）。\n::\n",[79,2116,2117,2122,2127,2131,2135,2139,2144,2148,2152,2157,2162,2166,2170,2175,2180,2184,2188,2193,2198],{"__ignoreMap":503},[1663,2118,2119],{"class":1804,"line":1805},[1663,2120,2121],{"class":1918},"::callout{color=\"info\"}\n",[1663,2123,2124],{"class":1804,"line":1812},[1663,2125,2126],{"class":1918},"说明、背景、补充信息。\n",[1663,2128,2129],{"class":1804,"line":1825},[1663,2130,1942],{"class":1918},[1663,2132,2133],{"class":1804,"line":1835},[1663,2134,1896],{"emptyLinePlaceholder":17},[1663,2136,2137],{"class":1804,"line":1845},[1663,2138,1930],{"class":1918},[1663,2140,2141],{"class":1804,"line":1866},[1663,2142,2143],{"class":1918},"技巧、推荐做法、正向提示。\n",[1663,2145,2146],{"class":1804,"line":1877},[1663,2147,1942],{"class":1918},[1663,2149,2150],{"class":1804,"line":1888},[1663,2151,1896],{"emptyLinePlaceholder":17},[1663,2153,2154],{"class":1804,"line":1893},[1663,2155,2156],{"class":1918},"::callout{color=\"warning\"}\n",[1663,2158,2159],{"class":1804,"line":1899},[1663,2160,2161],{"class":1918},"注意版本、安全或易踩坑点。\n",[1663,2163,2164],{"class":1804,"line":1910},[1663,2165,1942],{"class":1918},[1663,2167,2168],{"class":1804,"line":1915},[1663,2169,1896],{"emptyLinePlaceholder":17},[1663,2171,2172],{"class":1804,"line":1922},[1663,2173,2174],{"class":1918},"::callout{color=\"error\"}\n",[1663,2176,2177],{"class":1804,"line":1927},[1663,2178,2179],{"class":1918},"严重风险、勿直接照抄的危险操作。\n",[1663,2181,2182],{"class":1804,"line":1933},[1663,2183,1942],{"class":1918},[1663,2185,2186],{"class":1804,"line":1939},[1663,2187,1896],{"emptyLinePlaceholder":17},[1663,2189,2190],{"class":1804,"line":1945},[1663,2191,2192],{"class":1918},"::callout{color=\"primary\"}\n",[1663,2194,2195],{"class":1804,"line":1950},[1663,2196,2197],{"class":1918},"与本站能力相关的强调（迁移说明、产品约定等）。\n",[1663,2199,2200],{"class":1804,"line":1959},[1663,2201,1942],{"class":1918},[26,2203,2204,2207,2208,107,2210,107,2212,107,2214,107,2217,107,2219,2222,2223,2226],{},[79,2205,2206],{},"color"," 可选：",[79,2209,53],{},[79,2211,178],{},[79,2213,1005],{},[79,2215,2216],{},"error",[79,2218,320],{},[79,2220,2221],{},"secondary","（与 ",[79,2224,2225],{},"app\u002Fapp.config.ts"," 中 prose callout 变体一致）。",[26,2228,2229,2230,107,2232,107,2234,107,2236,107,2238,107,2240,107,2242,2244,2245,2247],{},"代码块可带文件名与 meta（Nuxt Content \u002F MDC 约定）。",[79,2231,106],{},[79,2233,110],{},[79,2235,113],{},[79,2237,81],{},[79,2239,118],{},[79,2241,121],{},[79,2243,124],{}," 默认显示「Playground」；加 ",[79,2246,2072],{}," 可关闭：",[497,2249,2251],{"className":1797,"code":2250,"language":1799,"meta":503,"style":503},"```html [demo.html]\n\u003Cdiv class=\"card\">Hello\u003C\u002Fdiv>\n```\n\n```css no-playground\n\u002F* 仅展示、不进演练场 *\u002F\n.card { padding: 1rem; }\n```\n",[79,2252,2253,2260,2298,2302,2306,2313,2319,2350],{"__ignoreMap":503},[1663,2254,2255,2257],{"class":1804,"line":1805},[1663,2256,1968],{"class":1967},[1663,2258,2259],{"class":1971},"html [demo.html]\n",[1663,2261,2262,2265,2268,2272,2275,2279,2282,2284,2287,2290,2293,2295],{"class":1804,"line":1812},[1663,2263,2264],{"class":1808},"\u003C",[1663,2266,2267],{"class":1815},"div",[1663,2269,2271],{"class":2270},"s9AJx"," class",[1663,2273,2274],{"class":1808},"=",[1663,2276,2278],{"class":2277},"sjJ54","\"",[1663,2280,2281],{"class":1821},"card",[1663,2283,2278],{"class":2277},[1663,2285,2286],{"class":1808},">",[1663,2288,2289],{"class":1918},"Hello",[1663,2291,2292],{"class":1808},"\u003C\u002F",[1663,2294,2267],{"class":1815},[1663,2296,2297],{"class":1808},">\n",[1663,2299,2300],{"class":1804,"line":1825},[1663,2301,1994],{"class":1967},[1663,2303,2304],{"class":1804,"line":1835},[1663,2305,1896],{"emptyLinePlaceholder":17},[1663,2307,2308,2310],{"class":1804,"line":1845},[1663,2309,1968],{"class":1967},[1663,2311,2312],{"class":1971},"css no-playground\n",[1663,2314,2315],{"class":1804,"line":1866},[1663,2316,2318],{"class":2317},"sutJx","\u002F* 仅展示、不进演练场 *\u002F\n",[1663,2320,2321,2325,2327,2330,2334,2336,2340,2344,2347],{"class":1804,"line":1877},[1663,2322,2324],{"class":2323},"stp6e",".",[1663,2326,2281],{"class":1978},[1663,2328,2329],{"class":1808}," {",[1663,2331,2333],{"class":2332},"soE4H"," padding",[1663,2335,1818],{"class":1808},[1663,2337,2339],{"class":2338},"srdBf"," 1",[1663,2341,2343],{"class":2342},"sw1J6","rem",[1663,2345,2346],{"class":1808},";",[1663,2348,2349],{"class":1808}," }\n",[1663,2351,2352],{"class":1804,"line":1888},[1663,2353,1994],{"class":1967},[26,2355,2356,2357,270],{},"可直接试用（点右上角 ",[30,2358,2068],{},[497,2360,2364],{"className":2361,"code":2362,"filename":2363,"language":106,"meta":503,"style":503},"language-html shiki shiki-themes material-theme-lighter github-light github-dark","\u003Cdiv class=\"card\">\n  \u003Cp class=\"eyebrow\">FORMA\u003C\u002Fp>\n  \u003Ch1>在演练场改我\u003C\u002Fh1>\n\u003C\u002Fdiv>\n\n\u003Cstyle>\n  body {\n    margin: 0;\n    min-height: 100vh;\n    display: grid;\n    place-items: center;\n    font-family: system-ui, sans-serif;\n    background: #0b0f14;\n    color: #e8edf2;\n  }\n  .card { text-align: center; padding: 2rem; }\n  .eyebrow {\n    margin: 0;\n    font-size: 11px;\n    letter-spacing: 0.2em;\n    text-transform: uppercase;\n    color: #8b97a5;\n  }\n  h1 { margin: 0.5rem 0 0; letter-spacing: -0.03em; }\n\u003C\u002Fstyle>\n","try-me.html",[79,2365,2366,2384,2413,2430,2438,2442,2451,2460,2473,2488,2500,2512,2529,2545,2559,2564,2595,2603,2613,2628,2643,2655,2668,2673,2711],{"__ignoreMap":503},[1663,2367,2368,2370,2372,2374,2376,2378,2380,2382],{"class":1804,"line":1805},[1663,2369,2264],{"class":1808},[1663,2371,2267],{"class":1815},[1663,2373,2271],{"class":2270},[1663,2375,2274],{"class":1808},[1663,2377,2278],{"class":2277},[1663,2379,2281],{"class":1821},[1663,2381,2278],{"class":2277},[1663,2383,2297],{"class":1808},[1663,2385,2386,2389,2391,2393,2395,2397,2400,2402,2404,2407,2409,2411],{"class":1804,"line":1812},[1663,2387,2388],{"class":1808},"  \u003C",[1663,2390,26],{"class":1815},[1663,2392,2271],{"class":2270},[1663,2394,2274],{"class":1808},[1663,2396,2278],{"class":2277},[1663,2398,2399],{"class":1821},"eyebrow",[1663,2401,2278],{"class":2277},[1663,2403,2286],{"class":1808},[1663,2405,2406],{"class":1918},"FORMA",[1663,2408,2292],{"class":1808},[1663,2410,26],{"class":1815},[1663,2412,2297],{"class":1808},[1663,2414,2415,2417,2419,2421,2424,2426,2428],{"class":1804,"line":1825},[1663,2416,2388],{"class":1808},[1663,2418,23],{"class":1815},[1663,2420,2286],{"class":1808},[1663,2422,2423],{"class":1918},"在演练场改我",[1663,2425,2292],{"class":1808},[1663,2427,23],{"class":1815},[1663,2429,2297],{"class":1808},[1663,2431,2432,2434,2436],{"class":1804,"line":1835},[1663,2433,2292],{"class":1808},[1663,2435,2267],{"class":1815},[1663,2437,2297],{"class":1808},[1663,2439,2440],{"class":1804,"line":1845},[1663,2441,1896],{"emptyLinePlaceholder":17},[1663,2443,2444,2446,2449],{"class":1804,"line":1866},[1663,2445,2264],{"class":1808},[1663,2447,2448],{"class":1815},"style",[1663,2450,2297],{"class":1808},[1663,2452,2453,2457],{"class":1804,"line":1877},[1663,2454,2456],{"class":2455},"s83vy","  body",[1663,2458,2459],{"class":1808}," {\n",[1663,2461,2462,2465,2467,2470],{"class":1804,"line":1888},[1663,2463,2464],{"class":2332},"    margin",[1663,2466,1818],{"class":1808},[1663,2468,2469],{"class":2338}," 0",[1663,2471,2472],{"class":1808},";\n",[1663,2474,2475,2478,2480,2483,2486],{"class":1804,"line":1893},[1663,2476,2477],{"class":2332},"    min-height",[1663,2479,1818],{"class":1808},[1663,2481,2482],{"class":2338}," 100",[1663,2484,2485],{"class":2342},"vh",[1663,2487,2472],{"class":1808},[1663,2489,2490,2493,2495,2498],{"class":1804,"line":1899},[1663,2491,2492],{"class":2332},"    display",[1663,2494,1818],{"class":1808},[1663,2496,2497],{"class":1873}," grid",[1663,2499,2472],{"class":1808},[1663,2501,2502,2505,2507,2510],{"class":1804,"line":1910},[1663,2503,2504],{"class":2332},"    place-items",[1663,2506,1818],{"class":1808},[1663,2508,2509],{"class":1873}," center",[1663,2511,2472],{"class":1808},[1663,2513,2514,2517,2519,2522,2524,2527],{"class":1804,"line":1915},[1663,2515,2516],{"class":2332},"    font-family",[1663,2518,1818],{"class":1808},[1663,2520,2521],{"class":1873}," system-ui",[1663,2523,1857],{"class":1808},[1663,2525,2526],{"class":1873}," sans-serif",[1663,2528,2472],{"class":1808},[1663,2530,2531,2534,2536,2540,2543],{"class":1804,"line":1922},[1663,2532,2533],{"class":2332},"    background",[1663,2535,1818],{"class":1808},[1663,2537,2539],{"class":2538},"s39Yj"," #",[1663,2541,2542],{"class":1873},"0b0f14",[1663,2544,2472],{"class":1808},[1663,2546,2547,2550,2552,2554,2557],{"class":1804,"line":1927},[1663,2548,2549],{"class":2332},"    color",[1663,2551,1818],{"class":1808},[1663,2553,2539],{"class":2538},[1663,2555,2556],{"class":1873},"e8edf2",[1663,2558,2472],{"class":1808},[1663,2560,2561],{"class":1804,"line":1933},[1663,2562,2563],{"class":1808},"  }\n",[1663,2565,2566,2569,2571,2573,2576,2578,2580,2582,2584,2586,2589,2591,2593],{"class":1804,"line":1939},[1663,2567,2568],{"class":2323},"  .",[1663,2570,2281],{"class":1978},[1663,2572,2329],{"class":1808},[1663,2574,2575],{"class":2332}," text-align",[1663,2577,1818],{"class":1808},[1663,2579,2509],{"class":1873},[1663,2581,2346],{"class":1808},[1663,2583,2333],{"class":2332},[1663,2585,1818],{"class":1808},[1663,2587,2588],{"class":2338}," 2",[1663,2590,2343],{"class":2342},[1663,2592,2346],{"class":1808},[1663,2594,2349],{"class":1808},[1663,2596,2597,2599,2601],{"class":1804,"line":1945},[1663,2598,2568],{"class":2323},[1663,2600,2399],{"class":1978},[1663,2602,2459],{"class":1808},[1663,2604,2605,2607,2609,2611],{"class":1804,"line":1950},[1663,2606,2464],{"class":2332},[1663,2608,1818],{"class":1808},[1663,2610,2469],{"class":2338},[1663,2612,2472],{"class":1808},[1663,2614,2615,2618,2620,2623,2626],{"class":1804,"line":1959},[1663,2616,2617],{"class":2332},"    font-size",[1663,2619,1818],{"class":1808},[1663,2621,2622],{"class":2338}," 11",[1663,2624,2625],{"class":2342},"px",[1663,2627,2472],{"class":1808},[1663,2629,2630,2633,2635,2638,2641],{"class":1804,"line":1964},[1663,2631,2632],{"class":2332},"    letter-spacing",[1663,2634,1818],{"class":1808},[1663,2636,2637],{"class":2338}," 0.2",[1663,2639,2640],{"class":2342},"em",[1663,2642,2472],{"class":1808},[1663,2644,2645,2648,2650,2653],{"class":1804,"line":1975},[1663,2646,2647],{"class":2332},"    text-transform",[1663,2649,1818],{"class":1808},[1663,2651,2652],{"class":1873}," uppercase",[1663,2654,2472],{"class":1808},[1663,2656,2657,2659,2661,2663,2666],{"class":1804,"line":1991},[1663,2658,2549],{"class":2332},[1663,2660,1818],{"class":1808},[1663,2662,2539],{"class":2538},[1663,2664,2665],{"class":1873},"8b97a5",[1663,2667,2472],{"class":1808},[1663,2669,2671],{"class":1804,"line":2670},23,[1663,2672,2563],{"class":1808},[1663,2674,2676,2679,2681,2684,2686,2689,2691,2693,2695,2697,2700,2702,2705,2707,2709],{"class":1804,"line":2675},24,[1663,2677,2678],{"class":2455},"  h1",[1663,2680,2329],{"class":1808},[1663,2682,2683],{"class":2332}," margin",[1663,2685,1818],{"class":1808},[1663,2687,2688],{"class":2338}," 0.5",[1663,2690,2343],{"class":2342},[1663,2692,2469],{"class":2338},[1663,2694,2469],{"class":2338},[1663,2696,2346],{"class":1808},[1663,2698,2699],{"class":2332}," letter-spacing",[1663,2701,1818],{"class":1808},[1663,2703,2704],{"class":2338}," -0.03",[1663,2706,2640],{"class":2342},[1663,2708,2346],{"class":1808},[1663,2710,2349],{"class":1808},[1663,2712,2714,2716,2718],{"class":1804,"line":2713},25,[1663,2715,2292],{"class":1808},[1663,2717,2448],{"class":1815},[1663,2719,2297],{"class":1808},[62,2721],{},[65,2723,2725],{"id":2724},"数据与接口进阶","数据与接口（进阶）",[26,2727,2728,2729,2732,2733,2735,2736,82,2739,2742],{},"内容在构建 \u002F 开发时由 ",[30,2730,2731],{},"@nuxt\u002Fcontent"," 写入 SQLite（依赖 ",[79,2734,5],{},"）。页面与 API 读的是同一份数据。返回体通常带 ",[79,2737,2738],{},"source: \"sqlite\"",[79,2740,2741],{},"connector: \"better-sqlite3\"","，便于确认数据来源。",[332,2744,2746,2747],{"id":2745},"列表-get-apiknowledge","列表 ",[79,2748,2749],{},"GET \u002Fapi\u002Fknowledge",[196,2751,2752,2761],{},[199,2753,2754],{},[202,2755,2756,2759],{},[205,2757,2758],{},"查询参数",[205,2760,210],{},[212,2762,2763,2773,2783,2792,2802,2812],{},[202,2764,2765,2770],{},[217,2766,2767],{},[79,2768,2769],{},"page",[217,2771,2772],{},"页码，从 1 开始",[202,2774,2775,2780],{},[217,2776,2777],{},[79,2778,2779],{},"pageSize",[217,2781,2782],{},"每页条数，默认 20，最大 100",[202,2784,2785,2789],{},[217,2786,2787],{},[79,2788,307],{},[217,2790,2791],{},"精确匹配分类名",[202,2793,2794,2799],{},[217,2795,2796],{},[79,2797,2798],{},"tag",[217,2800,2801],{},"精确匹配单个标签（不区分大小写）",[202,2803,2804,2809],{},[217,2805,2806],{},[79,2807,2808],{},"q",[217,2810,2811],{},"关键词；匹配标题、摘要、分类、标签",[202,2813,2814,2819],{},[217,2815,2816],{},[79,2817,2818],{},"prefix",[217,2820,2821,2822],{},"路径前缀过滤，如 ",[79,2823,2824],{},"\u002Fknowledge\u002Fbooklet",[26,2826,517],{},[497,2828,2832],{"className":2829,"code":2830,"language":2831,"meta":503,"style":503},"language-http shiki shiki-themes material-theme-lighter github-light github-dark","GET \u002Fapi\u002Fknowledge?page=1&pageSize=20&category=技能小册&q=vue\n","http",[79,2833,2834],{"__ignoreMap":503},[1663,2835,2836],{"class":1804,"line":1805},[1663,2837,2830],{},[26,2839,2840,2841,82,2844,82,2847,82,2850,2853,2854,2857],{},"响应要点：",[79,2842,2843],{},"items",[79,2845,2846],{},"total",[79,2848,2849],{},"hasMore",[79,2851,2852],{},"facets.categories","（各分类计数）、",[79,2855,2856],{},"facets.totalAll","（当前筛选下、分类过滤前的总数，供侧栏「全部」使用）。",[332,2859,2861,2862],{"id":2860},"详情-get-apiknowledgeslug","详情 ",[79,2863,2864],{},"GET \u002Fapi\u002Fknowledge\u002F\u003Cslug...>",[26,2866,2867,2868,304],{},"默认只返回正文与元信息（更快）。需要上下篇时追加 ",[79,2869,2870],{},"surround=1",[497,2872,2874],{"className":2829,"code":2873,"language":2831,"meta":503,"style":503},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics\nGET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics?surround=1\n",[79,2875,2876,2881],{"__ignoreMap":503},[1663,2877,2878],{"class":1804,"line":1805},[1663,2879,2880],{},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics\n",[1663,2882,2883],{"class":1804,"line":1812},[1663,2884,2885],{},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics?surround=1\n",[196,2887,2888,2896],{},[199,2889,2890],{},[202,2891,2892,2894],{},[205,2893,1609],{},[205,2895,210],{},[212,2897,2898,2921],{},[202,2899,2900,2904],{},[217,2901,2902],{},[79,2903,2769],{},[217,2905,2906,2907,82,2910,82,2912,82,2914,82,2916,82,2918,2920],{},"文章对象（含 ",[79,2908,2909],{},"body",[79,2911,1042],{},[79,2913,1045],{},[79,2915,307],{},[79,2917,310],{},[79,2919,99],{}," 等）",[202,2922,2923,2928],{},[217,2924,2925],{},[79,2926,2927],{},"surround",[217,2929,2930,2931,2933,2934,2937,2938],{},"仅 ",[79,2932,2870],{}," 时出现；",[79,2935,2936],{},"[上一篇, 下一篇]","，缺省侧为 ",[79,2939,2940],{},"null",[26,2942,2943,2944,2947],{},"草稿（",[79,2945,2946],{},"draft: true","）对公开接口表现为 404。",[332,2949,2950],{"id":2950},"站点地图",[26,2952,2953,2954,2957,2958,2961,2962,2965,2966,33],{},"公开文章也会进入 ",[79,2955,2956],{},"\u002Fsitemap.xml","（需配置 ",[79,2959,2960],{},"NUXT_PUBLIC_SITE_URL"," 以得到绝对域名）。",[79,2963,2964],{},"\u002Frobots.txt"," 会指向该 sitemap，并禁止抓取 ",[79,2967,2968],{},"\u002Fapi\u002F",[62,2970],{},[65,2972,2973],{"id":2973},"本地开发与预览",[497,2975,2978],{"className":2976,"code":2977,"language":2034,"meta":503,"style":503},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pnpm install\npnpm dev\n",[79,2979,2980,2988],{"__ignoreMap":503},[1663,2981,2982,2985],{"class":1804,"line":1805},[1663,2983,2984],{"class":1978},"pnpm",[1663,2986,2987],{"class":1821}," install\n",[1663,2989,2990,2992],{"class":1804,"line":1812},[1663,2991,2984],{"class":1978},[1663,2993,2994],{"class":1821}," dev\n",[26,2996,2997],{},"然后打开：",[272,2999,3000,3006,3012],{},[71,3001,3002,3003],{},"列表：",[79,3004,3005],{},"http:\u002F\u002Flocalhost:3000\u002Fknowledge",[71,3007,3008,3009],{},"本篇：",[79,3010,3011],{},"http:\u002F\u002Flocalhost:3000\u002Fknowledge\u002Fgetting-started",[71,3013,3014,3015],{},"接口：",[79,3016,3017],{},"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fknowledge?page=1&pageSize=5",[26,3019,3020],{},"生产构建：",[497,3022,3024],{"className":2976,"code":3023,"language":2034,"meta":503,"style":503},"pnpm build\npnpm preview\n",[79,3025,3026,3033],{"__ignoreMap":503},[1663,3027,3028,3030],{"class":1804,"line":1805},[1663,3029,2984],{"class":1978},[1663,3031,3032],{"class":1821}," build\n",[1663,3034,3035,3037],{"class":1804,"line":1812},[1663,3036,2984],{"class":1978},[1663,3038,3039],{"class":1821}," preview\n",[51,3041,3042],{"color":53},[26,3043,3044,3045,3047],{},"知识库列表页会预渲染；单篇详情在生产侧采用按需 ISR \u002F 缓存策略，避免构建时扫完全部 420+ 路由。改完 Markdown 后，开发模式一般会热更新 Content；若列表未见新文，先确认未设 ",[79,3046,2946],{},"，并检查 Frontmatter YAML 是否合法。",[62,3049],{},[65,3051,3052],{"id":3052},"常见问题",[26,3054,3055,3058,3061,3062,3064,3065,521,3068,3071,3072,521,3075,3078,3079,3081,3082,89],{},[30,3056,3057],{},"Q：为什么有的旧链接 404？",[3059,3060],"br",{},"\nA：迁移后统一前缀为 ",[79,3063,326],{},"，且路径段小写。另有一批碎片文已合并（如 ",[79,3066,3067],{},"jenkins-use-1",[79,3069,3070],{},"jenkins-1panel","，",[79,3073,3074],{},"web-update-1\u002F2",[79,3076,3077],{},"web-update","，Git\u002FDocker\u002FSass\u002FRedis\u002F摄影场景等同理）。请用列表搜索标题，或检查是否仍是旧 slug \u002F 大小写不一致（如 ",[79,3080,1470],{}," vs ",[79,3083,113],{},[26,3085,3086,3089,3091,3092,3094,3095,3097,3098,3101,3102,3104],{},[30,3087,3088],{},"Q：列表里找不到刚写的文章？",[3059,3090],{},"\nA：确认未设 ",[79,3093,2946],{},"；",[79,3096,1589],{}," 是否在跑；Frontmatter 的 ",[79,3099,3100],{},"---"," 是否成对、YAML 缩进与引号是否合法；",[79,3103,307],{}," 是否写错导致你筛错分类。",[26,3106,3107,3110,3112,3113,3116,3117,136,3119,33],{},[30,3108,3109],{},"Q：搜索好像搜不到正文里的某一句？",[3059,3111],{},"\nA：当前列表搜索匹配的是标题、摘要、分类与标签，",[30,3114,3115],{},"不包含全文正文","。重要关键词请写进 ",[79,3118,1045],{},[79,3120,310],{},[26,3122,3123,3126,3128],{},[30,3124,3125],{},"Q：技能小册能当完整教程吗？",[3059,3127],{},"\nA：不能替代系统课程与官方文档。它是入门地图与备忘；请搭配练习与权威资料。",[26,3130,3131,3134,3136],{},[30,3132,3133],{},"Q：生活笔记里的小说是真事吗？",[3059,3135],{},"\nA：否，虚构叙事。请以各书文内声明为准。",[26,3138,3139,3142,3144],{},[30,3140,3141],{},"Q：团队文档里的方案能直接拷到我的项目吗？",[3059,3143],{},"\nA：当作思路与踩坑参考。注意文中 Vue \u002F 组件库 \u002F 构建工具版本；直接粘贴前先对照你方技术栈。",[26,3146,3147,3150,3152,3153,3156],{},[30,3148,3149],{},"Q：还能单独部署 Rspress 站吗？",[3059,3151],{},"\nA：内容已迁入本仓库维护。若需导出，可直接使用 ",[79,3154,3155],{},"content\u002Fknowledge\u002F**\u002F*.md","；渲染与路由以 FORMA 为准。",[26,3158,3159,3162,3164,3165,3168,3169,3172,3173,3176],{},[30,3160,3161],{},"Q：callout 不显示或样式不对？",[3059,3163],{},"\nA：请使用 ",[79,3166,3167],{},"::callout{color=\"info\"}"," 等形式（见上文速查），并保证结尾单独一行的 ",[79,3170,3171],{},"::","。配色变体以站点 ",[79,3174,3175],{},"app.config"," 为准。",[26,3178,3179,3182,3184],{},[30,3180,3181],{},"Q：如何反馈错误链接或错别字？",[3059,3183],{},"\nA：直接提仓库 Issue \u002F PR，或在团队内反馈路径与期望文案即可。",[62,3186],{},[65,3188,3190],{"id":3189},"接下来可以去哪儿","接下来可以去哪儿？",[196,3192,3193,3202],{},[199,3194,3195],{},[202,3196,3197,3200],{},[205,3198,3199],{},"目标",[205,3201,750],{},[212,3203,3204,3213,3222,3230,3238,3246,3257,3266,3275],{},[202,3205,3206,3209],{},[217,3207,3208],{},"逛全部文章",[217,3210,3211],{},[45,3212,76],{"href":76},[202,3214,3215,3218],{},[217,3216,3217],{},"JavaScript \u002F 前端基础",[217,3219,3220],{},[45,3221,565],{"href":134},[202,3223,3224,3226],{},[217,3225,589],{},[217,3227,3228],{},[45,3229,140],{"href":139},[202,3231,3232,3234],{},[217,3233,1124],{},[217,3235,3236],{},[45,3237,604],{"href":603},[202,3239,3240,3243],{},[217,3241,3242],{},"部署与调研",[217,3244,3245],{},"列表筛选「服务笔记」",[202,3247,3248,3251],{},[217,3249,3250],{},"业务踩坑",[217,3252,3253,3254],{},"列表筛选「团队文档」或 ",[45,3255,3256],{"href":174},"01 篇",[202,3258,3259,3262],{},[217,3260,3261],{},"摄影入门",[217,3263,3264],{},[45,3265,164],{"href":163},[202,3267,3268,3271],{},[217,3269,3270],{},"站点版本与迁移说明",[217,3272,3273],{},[45,3274,268],{"href":268},[202,3276,3277,3280],{},[217,3278,3279],{},"回到工具台首页",[217,3281,3282],{},[45,3283,3284],{"href":3284},"\u002F",[26,3286,3287],{},"如果你在阅读中发现错误链接、过时命令或错别字，欢迎反馈——知识库会持续修正与增补。",[2448,3289,3290],{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .syTEX, html code.shiki .syTEX{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sDZcc, html code.shiki .sDZcc{--shiki-light:#39ADB5;--shiki-light-font-weight:inherit;--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .s4Q2S, html code.shiki .s4Q2S{--shiki-light:#E2931D;--shiki-light-font-weight:inherit;--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sLrMH, html code.shiki .sLrMH{--shiki-light:#91B859;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sY1H2, html code.shiki .sY1H2{--shiki-light:#90A4AE90;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9AJx, html code.shiki .s9AJx{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .stp6e, html code.shiki .stp6e{--shiki-light:#39ADB5;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .soE4H, html code.shiki .soE4H{--shiki-light:#8796B0;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sw1J6, html code.shiki .sw1J6{--shiki-light:#F76D47;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s83vy, html code.shiki .s83vy{--shiki-light:#E2931D;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":503,"searchDepth":1812,"depth":1812,"links":3292},[3293,3294,3297,3301,3306,3311,3316,3320,3328,3334,3337,3346,3353,3354,3355],{"id":48,"depth":1812,"text":48},{"id":186,"depth":1812,"text":187,"children":3295},[3296],{"id":334,"depth":1825,"text":334},{"id":366,"depth":1812,"text":367,"children":3298},[3299,3300],{"id":381,"depth":1825,"text":381},{"id":495,"depth":1825,"text":495},{"id":528,"depth":1812,"text":3302,"children":3303},"1. 技能小册（booklet\u002F）",[3304,3305],{"id":542,"depth":1825,"text":542},{"id":629,"depth":1825,"text":629},{"id":729,"depth":1812,"text":3307,"children":3308},"2. 生活笔记（life-notes\u002F）",[3309,3310],{"id":738,"depth":1825,"text":542},{"id":792,"depth":1825,"text":629},{"id":866,"depth":1812,"text":3312,"children":3313},"3. 服务笔记（service-notes\u002F）",[3314,3315],{"id":879,"depth":1825,"text":542},{"id":962,"depth":1825,"text":629},{"id":1013,"depth":1812,"text":3317,"children":3318},"4. 团队文档（team-documents\u002F）",[3319],{"id":1034,"depth":1825,"text":1034},{"id":1078,"depth":1812,"text":1079,"children":3321},[3322,3323,3324,3325,3326,3327],{"id":1085,"depth":1825,"text":1086},{"id":1102,"depth":1825,"text":1103},{"id":1144,"depth":1825,"text":1145},{"id":1169,"depth":1825,"text":1170},{"id":1195,"depth":1825,"text":1196},{"id":1222,"depth":1825,"text":1222},{"id":1269,"depth":1812,"text":1270,"children":3329},[3330,3332],{"id":1273,"depth":1825,"text":3331},"列表页 \u002Fknowledge",{"id":1347,"depth":1825,"text":3333},"详情页 \u002Fknowledge\u002F...",{"id":1423,"depth":1812,"text":1424,"children":3335},[3336],{"id":1503,"depth":1825,"text":1503},{"id":1565,"depth":1812,"text":1566,"children":3338},[3339,3340,3341,3343,3344,3345],{"id":1569,"depth":1825,"text":1569},{"id":1593,"depth":1825,"text":1594},{"id":1717,"depth":1825,"text":3342},"建议的 category 取值",{"id":1794,"depth":1825,"text":1794},{"id":1997,"depth":1825,"text":1998},{"id":2100,"depth":1825,"text":2101},{"id":2724,"depth":1812,"text":2725,"children":3347},[3348,3350,3352],{"id":2745,"depth":1825,"text":3349},"列表 GET \u002Fapi\u002Fknowledge",{"id":2860,"depth":1825,"text":3351},"详情 GET \u002Fapi\u002Fknowledge\u002F\u003Cslug...>",{"id":2950,"depth":1825,"text":2950},{"id":2973,"depth":1812,"text":2973},{"id":3052,"depth":1812,"text":3052},{"id":3189,"depth":1812,"text":3190},{"title":8,"description":9},"knowledge\u002Fgetting-started","knowledge\u002Fknowledge\u002Fgetting-started.md",{"series":3360,"title":3360,"items":3361,"index":3362},null,[],-1,{"items":3364},[3365,3367,3371,3374,3378,3382],{"path":603,"title":604,"description":3366,"category":410,"score":1812},"本目录覆盖 JavaScript\u002FTypeScript 服务端运行时与框架、数据存储，以及 Rust 系统编程入门，提供从零到部署的完整学习路径。前置建议：JavaScript 基础、工程化 · 环境变量。",{"path":3368,"title":3369,"description":3370,"category":410,"score":1812},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fbase","Bun 基础与核心命令","Bun 是用 Zig 编写的 JavaScript 运行时，内置包管理（bun install）、打包（bun build）、测试（bun test）等，并持续兼容 Node.js API。本文介绍核心特点、安装方式，以及日常最常用的命令与包管理功能。见 运行时对比。",{"path":614,"title":3372,"description":3373,"category":410,"score":1812},"数据存储导读","本目录覆盖关系型数据库 MySQL 与内存数据库 Redis，从概念、安装到数据操作、性能优化、备份与缓存实践，面向后端开发与运维入门。与 NestJS 数据库、后端入门 等应用层文档配合阅读。",{"path":3375,"title":3376,"description":3377,"category":410,"score":1812},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fredis\u002Fredis","Redis 入门：概念、安装与数据类型","从「是什么\u002F为什么用」到 Docker\u002F本机安装、基本 CLI，再到五大基础类型命令、持久化与过期键机制、与 MySQL 的选型对比，以及常见踩坑，全面梳理 Redis 入门知识。",{"path":3379,"title":3380,"description":3381,"category":410,"score":1812},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-compose","Docker Compose 编排","Docker Compose 是定义和运行多容器 Docker 应用的工具，通过一个 compose.yml 文件即可管理 Web、数据库、缓存等多个服务。本文覆盖安装、完整字段说明、多服务示例、常用指令与常见排错。",{"path":3383,"title":3384,"description":3385,"category":410,"score":1812},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-images","镜像与 Dockerfile","镜像（Image）是 Docker 容器的只读模板，Dockerfile 则是构建镜像的蓝图。本文完整覆盖镜像的搜索、拉取、查看、删除、打标签、推送，以及 Dockerfile 常用指令、多阶段构建与体积优化技巧。"]