[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fgetting-started":3,"knowledge-related-\u002Fknowledge\u002Fgetting-started":3258,"knowledge-series-\u002Fknowledge\u002Fgetting-started":3281},{"source":4,"connector":5,"page":6},"sqlite","node:sqlite",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":16,"pinned":17,"draft":18,"body":19,"seo":3255,"stem":3256,"id":3257,"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":3190},"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,1930,1934,2033,2037,2047,2137,2162,2183,2225,2230,2619,2621,2625,2642,2649,2724,2726,2737,2757,2764,2770,2785,2840,2847,2850,2868,2870,2873,2894,2897,2917,2920,2939,2947,2949,2952,2983,3004,3020,3028,3036,3044,3056,3076,3084,3086,3090,3184,3187],[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（Node 内置 ",[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,1809,1815,1821,1827,1833,1839,1845,1850,1856,1862,1867,1873,1878,1884,1890,1896,1901,1907,1912,1918,1924],{"__ignoreMap":503},[1663,1803,1806],{"class":1804,"line":1805},"line",1,[1663,1807,1808],{},"---\n",[1663,1810,1812],{"class":1804,"line":1811},2,[1663,1813,1814],{},"title: 我的笔记\n",[1663,1816,1818],{"class":1804,"line":1817},3,[1663,1819,1820],{},"description: 一段简短说明，会出现在列表摘要与搜索结果里。\n",[1663,1822,1824],{"class":1804,"line":1823},4,[1663,1825,1826],{},"category: 服务笔记\n",[1663,1828,1830],{"class":1804,"line":1829},5,[1663,1831,1832],{},"tags: [docker, ops]\n",[1663,1834,1836],{"class":1804,"line":1835},6,[1663,1837,1838],{},"date: 2026-07-22\n",[1663,1840,1842],{"class":1804,"line":1841},7,[1663,1843,1844],{},"pinned: false\n",[1663,1846,1848],{"class":1804,"line":1847},8,[1663,1849,1808],{},[1663,1851,1853],{"class":1804,"line":1852},9,[1663,1854,1855],{"emptyLinePlaceholder":17},"\n",[1663,1857,1859],{"class":1804,"line":1858},10,[1663,1860,1861],{},"## 背景\n",[1663,1863,1865],{"class":1804,"line":1864},11,[1663,1866,1855],{"emptyLinePlaceholder":17},[1663,1868,1870],{"class":1804,"line":1869},12,[1663,1871,1872],{},"正文从这里开始。\n",[1663,1874,1876],{"class":1804,"line":1875},13,[1663,1877,1855],{"emptyLinePlaceholder":17},[1663,1879,1881],{"class":1804,"line":1880},14,[1663,1882,1883],{},"::callout{color=\"success\"}\n",[1663,1885,1887],{"class":1804,"line":1886},15,[1663,1888,1889],{},"可以用 callout 强调注意点、结论或风险。\n",[1663,1891,1893],{"class":1804,"line":1892},16,[1663,1894,1895],{},"::\n",[1663,1897,1899],{"class":1804,"line":1898},17,[1663,1900,1855],{"emptyLinePlaceholder":17},[1663,1902,1904],{"class":1804,"line":1903},18,[1663,1905,1906],{},"### 命令示例\n",[1663,1908,1910],{"class":1804,"line":1909},19,[1663,1911,1855],{"emptyLinePlaceholder":17},[1663,1913,1915],{"class":1804,"line":1914},20,[1663,1916,1917],{},"```bash\n",[1663,1919,1921],{"class":1804,"line":1920},21,[1663,1922,1923],{},"docker compose up -d\n",[1663,1925,1927],{"class":1804,"line":1926},22,[1663,1928,1929],{},"```\n",[332,1931,1933],{"id":1932},"写作约定建议","写作约定（建议）",[272,1935,1936,1942,1960,1974,2012,2017,2020,2023,2030],{},[71,1937,1938,1941],{},[30,1939,1940],{},"一篇一个主题","；大专题拆多篇，并用导读页或表格串起来。",[71,1943,1944,1945,1948,1949,1951,1952,1955,1956,1959],{},"标题层级连贯：",[79,1946,1947],{},"#"," 文题（可与 ",[79,1950,1042],{}," 一致）→ ",[79,1953,1954],{},"##"," 大节 → ",[79,1957,1958],{},"###"," 小节；避免跳级。",[71,1961,1962,1963,107,1965,107,1967,107,1970,1973],{},"代码块标明语言（",[79,1964,118],{},[79,1966,81],{},[79,1968,1969],{},"bash",[79,1971,1972],{},"json"," 等），便于高亮。",[71,1975,1976,107,1978,107,1980,107,1982,107,1984,107,1986,107,1988,1990,1991,107,1994,107,1997,2000,2001,2004,2005,2008,2009,33],{},[79,1977,106],{},[79,1979,110],{},[79,1981,113],{},[79,1983,81],{},[79,1985,118],{},[79,1987,121],{},[79,1989,124],{},"（及 ",[79,1992,1993],{},"javascript",[79,1995,1996],{},"typescript",[79,1998,1999],{},"sass","）代码块会显示 ",[30,2002,2003],{},"Playground"," 按钮，可回填到站内演练场；不需要时在 fence meta 加 ",[79,2006,2007],{},"no-playground","。其他语言若也想打开，可加 ",[79,2010,2011],{},"playground",[71,2013,2014,2015,33],{},"外链写清来源；站内互链用 ",[79,2016,326],{},[71,2018,2019],{},"过时命令或版本在文首或 callout 里标明「以官方为准」。",[71,2021,2022],{},"表格列不宜过多；手机上过宽表格会横向滚动。",[71,2024,2025,2026,2029],{},"图片尽量有说明性 ",[79,2027,2028],{},"alt","；大图注意体积。",[71,2031,2032],{},"小说等虚构内容保留免责声明。",[332,2034,2036],{"id":2035},"mdc-callout-速查","MDC \u002F Callout 速查",[26,2038,2039,2040,2046],{},"正文由 ",[45,2041,2045],{"href":2042,"rel":2043},"https:\u002F\u002Fnuxtjs.org.cn\u002Fmodules\u002Fmdc",[2044],"nofollow","MDC"," 渲染，配色与 FORMA \u002F Nuxt UI 主题变量对齐。常用 callout：",[497,2048,2050],{"className":1797,"code":2049,"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,2051,2052,2057,2062,2066,2070,2074,2079,2083,2087,2092,2097,2101,2105,2110,2115,2119,2123,2128,2133],{"__ignoreMap":503},[1663,2053,2054],{"class":1804,"line":1805},[1663,2055,2056],{},"::callout{color=\"info\"}\n",[1663,2058,2059],{"class":1804,"line":1811},[1663,2060,2061],{},"说明、背景、补充信息。\n",[1663,2063,2064],{"class":1804,"line":1817},[1663,2065,1895],{},[1663,2067,2068],{"class":1804,"line":1823},[1663,2069,1855],{"emptyLinePlaceholder":17},[1663,2071,2072],{"class":1804,"line":1829},[1663,2073,1883],{},[1663,2075,2076],{"class":1804,"line":1835},[1663,2077,2078],{},"技巧、推荐做法、正向提示。\n",[1663,2080,2081],{"class":1804,"line":1841},[1663,2082,1895],{},[1663,2084,2085],{"class":1804,"line":1847},[1663,2086,1855],{"emptyLinePlaceholder":17},[1663,2088,2089],{"class":1804,"line":1852},[1663,2090,2091],{},"::callout{color=\"warning\"}\n",[1663,2093,2094],{"class":1804,"line":1858},[1663,2095,2096],{},"注意版本、安全或易踩坑点。\n",[1663,2098,2099],{"class":1804,"line":1864},[1663,2100,1895],{},[1663,2102,2103],{"class":1804,"line":1869},[1663,2104,1855],{"emptyLinePlaceholder":17},[1663,2106,2107],{"class":1804,"line":1875},[1663,2108,2109],{},"::callout{color=\"error\"}\n",[1663,2111,2112],{"class":1804,"line":1880},[1663,2113,2114],{},"严重风险、勿直接照抄的危险操作。\n",[1663,2116,2117],{"class":1804,"line":1886},[1663,2118,1895],{},[1663,2120,2121],{"class":1804,"line":1892},[1663,2122,1855],{"emptyLinePlaceholder":17},[1663,2124,2125],{"class":1804,"line":1898},[1663,2126,2127],{},"::callout{color=\"primary\"}\n",[1663,2129,2130],{"class":1804,"line":1903},[1663,2131,2132],{},"与本站能力相关的强调（迁移说明、产品约定等）。\n",[1663,2134,2135],{"class":1804,"line":1909},[1663,2136,1895],{},[26,2138,2139,2142,2143,107,2145,107,2147,107,2149,107,2152,107,2154,2157,2158,2161],{},[79,2140,2141],{},"color"," 可选：",[79,2144,53],{},[79,2146,178],{},[79,2148,1005],{},[79,2150,2151],{},"error",[79,2153,320],{},[79,2155,2156],{},"secondary","（与 ",[79,2159,2160],{},"app\u002Fapp.config.ts"," 中 prose callout 变体一致）。",[26,2163,2164,2165,107,2167,107,2169,107,2171,107,2173,107,2175,107,2177,2179,2180,2182],{},"代码块可带文件名与 meta（Nuxt Content \u002F MDC 约定）。",[79,2166,106],{},[79,2168,110],{},[79,2170,113],{},[79,2172,81],{},[79,2174,118],{},[79,2176,121],{},[79,2178,124],{}," 默认显示「Playground」；加 ",[79,2181,2007],{}," 可关闭：",[497,2184,2186],{"className":1797,"code":2185,"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,2187,2188,2193,2198,2202,2206,2211,2216,2221],{"__ignoreMap":503},[1663,2189,2190],{"class":1804,"line":1805},[1663,2191,2192],{},"```html [demo.html]\n",[1663,2194,2195],{"class":1804,"line":1811},[1663,2196,2197],{},"\u003Cdiv class=\"card\">Hello\u003C\u002Fdiv>\n",[1663,2199,2200],{"class":1804,"line":1817},[1663,2201,1929],{},[1663,2203,2204],{"class":1804,"line":1823},[1663,2205,1855],{"emptyLinePlaceholder":17},[1663,2207,2208],{"class":1804,"line":1829},[1663,2209,2210],{},"```css no-playground\n",[1663,2212,2213],{"class":1804,"line":1835},[1663,2214,2215],{},"\u002F* 仅展示、不进演练场 *\u002F\n",[1663,2217,2218],{"class":1804,"line":1841},[1663,2219,2220],{},".card { padding: 1rem; }\n",[1663,2222,2223],{"class":1804,"line":1847},[1663,2224,1929],{},[26,2226,2227,2228,270],{},"可直接试用（点右上角 ",[30,2229,2003],{},[497,2231,2235],{"className":2232,"code":2233,"filename":2234,"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,2236,2237,2267,2299,2316,2324,2328,2337,2346,2362,2378,2391,2403,2421,2437,2451,2456,2494,2502,2512,2527,2542,2554,2567,2572,2610],{"__ignoreMap":503},[1663,2238,2239,2243,2247,2251,2254,2258,2262,2264],{"class":1804,"line":1805},[1663,2240,2242],{"class":2241},"sP7_E","\u003C",[1663,2244,2246],{"class":2245},"sQzsp","div",[1663,2248,2250],{"class":2249},"s9AJx"," class",[1663,2252,2253],{"class":2241},"=",[1663,2255,2257],{"class":2256},"sjJ54","\"",[1663,2259,2261],{"class":2260},"s_sjI","card",[1663,2263,2257],{"class":2256},[1663,2265,2266],{"class":2241},">\n",[1663,2268,2269,2272,2274,2276,2278,2280,2283,2285,2288,2292,2295,2297],{"class":1804,"line":1811},[1663,2270,2271],{"class":2241},"  \u003C",[1663,2273,26],{"class":2245},[1663,2275,2250],{"class":2249},[1663,2277,2253],{"class":2241},[1663,2279,2257],{"class":2256},[1663,2281,2282],{"class":2260},"eyebrow",[1663,2284,2257],{"class":2256},[1663,2286,2287],{"class":2241},">",[1663,2289,2291],{"class":2290},"su5hD","FORMA",[1663,2293,2294],{"class":2241},"\u003C\u002F",[1663,2296,26],{"class":2245},[1663,2298,2266],{"class":2241},[1663,2300,2301,2303,2305,2307,2310,2312,2314],{"class":1804,"line":1817},[1663,2302,2271],{"class":2241},[1663,2304,23],{"class":2245},[1663,2306,2287],{"class":2241},[1663,2308,2309],{"class":2290},"在演练场改我",[1663,2311,2294],{"class":2241},[1663,2313,23],{"class":2245},[1663,2315,2266],{"class":2241},[1663,2317,2318,2320,2322],{"class":1804,"line":1823},[1663,2319,2294],{"class":2241},[1663,2321,2246],{"class":2245},[1663,2323,2266],{"class":2241},[1663,2325,2326],{"class":1804,"line":1829},[1663,2327,1855],{"emptyLinePlaceholder":17},[1663,2329,2330,2332,2335],{"class":1804,"line":1835},[1663,2331,2242],{"class":2241},[1663,2333,2334],{"class":2245},"style",[1663,2336,2266],{"class":2241},[1663,2338,2339,2343],{"class":1804,"line":1841},[1663,2340,2342],{"class":2341},"s83vy","  body",[1663,2344,2345],{"class":2241}," {\n",[1663,2347,2348,2352,2355,2359],{"class":1804,"line":1847},[1663,2349,2351],{"class":2350},"soE4H","    margin",[1663,2353,2354],{"class":2241},":",[1663,2356,2358],{"class":2357},"srdBf"," 0",[1663,2360,2361],{"class":2241},";\n",[1663,2363,2364,2367,2369,2372,2376],{"class":1804,"line":1852},[1663,2365,2366],{"class":2350},"    min-height",[1663,2368,2354],{"class":2241},[1663,2370,2371],{"class":2357}," 100",[1663,2373,2375],{"class":2374},"sw1J6","vh",[1663,2377,2361],{"class":2241},[1663,2379,2380,2383,2385,2389],{"class":1804,"line":1858},[1663,2381,2382],{"class":2350},"    display",[1663,2384,2354],{"class":2241},[1663,2386,2388],{"class":2387},"s_hVV"," grid",[1663,2390,2361],{"class":2241},[1663,2392,2393,2396,2398,2401],{"class":1804,"line":1864},[1663,2394,2395],{"class":2350},"    place-items",[1663,2397,2354],{"class":2241},[1663,2399,2400],{"class":2387}," center",[1663,2402,2361],{"class":2241},[1663,2404,2405,2408,2410,2413,2416,2419],{"class":1804,"line":1869},[1663,2406,2407],{"class":2350},"    font-family",[1663,2409,2354],{"class":2241},[1663,2411,2412],{"class":2387}," system-ui",[1663,2414,2415],{"class":2241},",",[1663,2417,2418],{"class":2387}," sans-serif",[1663,2420,2361],{"class":2241},[1663,2422,2423,2426,2428,2432,2435],{"class":1804,"line":1875},[1663,2424,2425],{"class":2350},"    background",[1663,2427,2354],{"class":2241},[1663,2429,2431],{"class":2430},"s39Yj"," #",[1663,2433,2434],{"class":2387},"0b0f14",[1663,2436,2361],{"class":2241},[1663,2438,2439,2442,2444,2446,2449],{"class":1804,"line":1880},[1663,2440,2441],{"class":2350},"    color",[1663,2443,2354],{"class":2241},[1663,2445,2431],{"class":2430},[1663,2447,2448],{"class":2387},"e8edf2",[1663,2450,2361],{"class":2241},[1663,2452,2453],{"class":1804,"line":1886},[1663,2454,2455],{"class":2241},"  }\n",[1663,2457,2458,2462,2465,2468,2471,2473,2475,2478,2481,2483,2486,2489,2491],{"class":1804,"line":1892},[1663,2459,2461],{"class":2460},"stp6e","  .",[1663,2463,2261],{"class":2464},"sbgvK",[1663,2466,2467],{"class":2241}," {",[1663,2469,2470],{"class":2350}," text-align",[1663,2472,2354],{"class":2241},[1663,2474,2400],{"class":2387},[1663,2476,2477],{"class":2241},";",[1663,2479,2480],{"class":2350}," padding",[1663,2482,2354],{"class":2241},[1663,2484,2485],{"class":2357}," 2",[1663,2487,2488],{"class":2374},"rem",[1663,2490,2477],{"class":2241},[1663,2492,2493],{"class":2241}," }\n",[1663,2495,2496,2498,2500],{"class":1804,"line":1898},[1663,2497,2461],{"class":2460},[1663,2499,2282],{"class":2464},[1663,2501,2345],{"class":2241},[1663,2503,2504,2506,2508,2510],{"class":1804,"line":1903},[1663,2505,2351],{"class":2350},[1663,2507,2354],{"class":2241},[1663,2509,2358],{"class":2357},[1663,2511,2361],{"class":2241},[1663,2513,2514,2517,2519,2522,2525],{"class":1804,"line":1909},[1663,2515,2516],{"class":2350},"    font-size",[1663,2518,2354],{"class":2241},[1663,2520,2521],{"class":2357}," 11",[1663,2523,2524],{"class":2374},"px",[1663,2526,2361],{"class":2241},[1663,2528,2529,2532,2534,2537,2540],{"class":1804,"line":1914},[1663,2530,2531],{"class":2350},"    letter-spacing",[1663,2533,2354],{"class":2241},[1663,2535,2536],{"class":2357}," 0.2",[1663,2538,2539],{"class":2374},"em",[1663,2541,2361],{"class":2241},[1663,2543,2544,2547,2549,2552],{"class":1804,"line":1920},[1663,2545,2546],{"class":2350},"    text-transform",[1663,2548,2354],{"class":2241},[1663,2550,2551],{"class":2387}," uppercase",[1663,2553,2361],{"class":2241},[1663,2555,2556,2558,2560,2562,2565],{"class":1804,"line":1926},[1663,2557,2441],{"class":2350},[1663,2559,2354],{"class":2241},[1663,2561,2431],{"class":2430},[1663,2563,2564],{"class":2387},"8b97a5",[1663,2566,2361],{"class":2241},[1663,2568,2570],{"class":1804,"line":2569},23,[1663,2571,2455],{"class":2241},[1663,2573,2575,2578,2580,2583,2585,2588,2590,2592,2594,2596,2599,2601,2604,2606,2608],{"class":1804,"line":2574},24,[1663,2576,2577],{"class":2341},"  h1",[1663,2579,2467],{"class":2241},[1663,2581,2582],{"class":2350}," margin",[1663,2584,2354],{"class":2241},[1663,2586,2587],{"class":2357}," 0.5",[1663,2589,2488],{"class":2374},[1663,2591,2358],{"class":2357},[1663,2593,2358],{"class":2357},[1663,2595,2477],{"class":2241},[1663,2597,2598],{"class":2350}," letter-spacing",[1663,2600,2354],{"class":2241},[1663,2602,2603],{"class":2357}," -0.03",[1663,2605,2539],{"class":2374},[1663,2607,2477],{"class":2241},[1663,2609,2493],{"class":2241},[1663,2611,2613,2615,2617],{"class":1804,"line":2612},25,[1663,2614,2294],{"class":2241},[1663,2616,2334],{"class":2245},[1663,2618,2266],{"class":2241},[62,2620],{},[65,2622,2624],{"id":2623},"数据与接口进阶","数据与接口（进阶）",[26,2626,2627,2628,2631,2632,2634,2635,82,2638,2641],{},"内容在构建 \u002F 开发时由 ",[30,2629,2630],{},"@nuxt\u002Fcontent"," 写入 SQLite（用 Node 内置的 ",[79,2633,5],{},"，无需原生编译依赖）。页面与 API 读的是同一份数据。返回体通常带 ",[79,2636,2637],{},"source: \"sqlite\"",[79,2639,2640],{},"connector: \"node:sqlite\"","，便于确认数据来源。",[332,2643,2645,2646],{"id":2644},"列表-get-apiknowledge","列表 ",[79,2647,2648],{},"GET \u002Fapi\u002Fknowledge",[196,2650,2651,2660],{},[199,2652,2653],{},[202,2654,2655,2658],{},[205,2656,2657],{},"查询参数",[205,2659,210],{},[212,2661,2662,2672,2682,2691,2701,2711],{},[202,2663,2664,2669],{},[217,2665,2666],{},[79,2667,2668],{},"page",[217,2670,2671],{},"页码，从 1 开始",[202,2673,2674,2679],{},[217,2675,2676],{},[79,2677,2678],{},"pageSize",[217,2680,2681],{},"每页条数，默认 20，最大 100",[202,2683,2684,2688],{},[217,2685,2686],{},[79,2687,307],{},[217,2689,2690],{},"精确匹配分类名",[202,2692,2693,2698],{},[217,2694,2695],{},[79,2696,2697],{},"tag",[217,2699,2700],{},"精确匹配单个标签（不区分大小写）",[202,2702,2703,2708],{},[217,2704,2705],{},[79,2706,2707],{},"q",[217,2709,2710],{},"关键词；匹配标题、摘要、分类、标签",[202,2712,2713,2718],{},[217,2714,2715],{},[79,2716,2717],{},"prefix",[217,2719,2720,2721],{},"路径前缀过滤，如 ",[79,2722,2723],{},"\u002Fknowledge\u002Fbooklet",[26,2725,517],{},[497,2727,2731],{"className":2728,"code":2729,"language":2730,"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,2732,2733],{"__ignoreMap":503},[1663,2734,2735],{"class":1804,"line":1805},[1663,2736,2729],{},[26,2738,2739,2740,82,2743,82,2746,82,2749,2752,2753,2756],{},"响应要点：",[79,2741,2742],{},"items",[79,2744,2745],{},"total",[79,2747,2748],{},"hasMore",[79,2750,2751],{},"facets.categories","（各分类计数）、",[79,2754,2755],{},"facets.totalAll","（当前筛选下、分类过滤前的总数，供侧栏「全部」使用）。",[332,2758,2760,2761],{"id":2759},"详情-get-apiknowledgeslug","详情 ",[79,2762,2763],{},"GET \u002Fapi\u002Fknowledge\u002F\u003Cslug...>",[26,2765,2766,2767,304],{},"默认只返回正文与元信息（更快）。需要上下篇时追加 ",[79,2768,2769],{},"surround=1",[497,2771,2773],{"className":2728,"code":2772,"language":2730,"meta":503,"style":503},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics\nGET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics?surround=1\n",[79,2774,2775,2780],{"__ignoreMap":503},[1663,2776,2777],{"class":1804,"line":1805},[1663,2778,2779],{},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics\n",[1663,2781,2782],{"class":1804,"line":1811},[1663,2783,2784],{},"GET \u002Fapi\u002Fknowledge\u002Fbooklet\u002Fweb\u002Fjs\u002Fbasics?surround=1\n",[196,2786,2787,2795],{},[199,2788,2789],{},[202,2790,2791,2793],{},[205,2792,1609],{},[205,2794,210],{},[212,2796,2797,2820],{},[202,2798,2799,2803],{},[217,2800,2801],{},[79,2802,2668],{},[217,2804,2805,2806,82,2809,82,2811,82,2813,82,2815,82,2817,2819],{},"文章对象（含 ",[79,2807,2808],{},"body",[79,2810,1042],{},[79,2812,1045],{},[79,2814,307],{},[79,2816,310],{},[79,2818,99],{}," 等）",[202,2821,2822,2827],{},[217,2823,2824],{},[79,2825,2826],{},"surround",[217,2828,2829,2830,2832,2833,2836,2837],{},"仅 ",[79,2831,2769],{}," 时出现；",[79,2834,2835],{},"[上一篇, 下一篇]","，缺省侧为 ",[79,2838,2839],{},"null",[26,2841,2842,2843,2846],{},"草稿（",[79,2844,2845],{},"draft: true","）对公开接口表现为 404。",[332,2848,2849],{"id":2849},"站点地图",[26,2851,2852,2853,2856,2857,2860,2861,2864,2865,33],{},"公开文章也会进入 ",[79,2854,2855],{},"\u002Fsitemap.xml","（需配置 ",[79,2858,2859],{},"NUXT_PUBLIC_SITE_URL"," 以得到绝对域名）。",[79,2862,2863],{},"\u002Frobots.txt"," 会指向该 sitemap，并禁止抓取 ",[79,2866,2867],{},"\u002Fapi\u002F",[62,2869],{},[65,2871,2872],{"id":2872},"本地开发与预览",[497,2874,2877],{"className":2875,"code":2876,"language":1969,"meta":503,"style":503},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pnpm install\npnpm dev\n",[79,2878,2879,2887],{"__ignoreMap":503},[1663,2880,2881,2884],{"class":1804,"line":1805},[1663,2882,2883],{"class":2464},"pnpm",[1663,2885,2886],{"class":2260}," install\n",[1663,2888,2889,2891],{"class":1804,"line":1811},[1663,2890,2883],{"class":2464},[1663,2892,2893],{"class":2260}," dev\n",[26,2895,2896],{},"然后打开：",[272,2898,2899,2905,2911],{},[71,2900,2901,2902],{},"列表：",[79,2903,2904],{},"http:\u002F\u002Flocalhost:3000\u002Fknowledge",[71,2906,2907,2908],{},"本篇：",[79,2909,2910],{},"http:\u002F\u002Flocalhost:3000\u002Fknowledge\u002Fgetting-started",[71,2912,2913,2914],{},"接口：",[79,2915,2916],{},"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fknowledge?page=1&pageSize=5",[26,2918,2919],{},"生产构建：",[497,2921,2923],{"className":2875,"code":2922,"language":1969,"meta":503,"style":503},"pnpm build\npnpm preview\n",[79,2924,2925,2932],{"__ignoreMap":503},[1663,2926,2927,2929],{"class":1804,"line":1805},[1663,2928,2883],{"class":2464},[1663,2930,2931],{"class":2260}," build\n",[1663,2933,2934,2936],{"class":1804,"line":1811},[1663,2935,2883],{"class":2464},[1663,2937,2938],{"class":2260}," preview\n",[51,2940,2941],{"color":53},[26,2942,2943,2944,2946],{},"知识库列表页会预渲染；单篇详情在生产侧采用按需 ISR \u002F 缓存策略，避免构建时扫完全部 420+ 路由。改完 Markdown 后，开发模式一般会热更新 Content；若列表未见新文，先确认未设 ",[79,2945,2845],{},"，并检查 Frontmatter YAML 是否合法。",[62,2948],{},[65,2950,2951],{"id":2951},"常见问题",[26,2953,2954,2957,2960,2961,2963,2964,521,2967,2970,2971,521,2974,2977,2978,2980,2981,89],{},[30,2955,2956],{},"Q：为什么有的旧链接 404？",[2958,2959],"br",{},"\nA：迁移后统一前缀为 ",[79,2962,326],{},"，且路径段小写。另有一批碎片文已合并（如 ",[79,2965,2966],{},"jenkins-use-1",[79,2968,2969],{},"jenkins-1panel","，",[79,2972,2973],{},"web-update-1\u002F2",[79,2975,2976],{},"web-update","，Git\u002FDocker\u002FSass\u002FRedis\u002F摄影场景等同理）。请用列表搜索标题，或检查是否仍是旧 slug \u002F 大小写不一致（如 ",[79,2979,1470],{}," vs ",[79,2982,113],{},[26,2984,2985,2988,2990,2991,2993,2994,2996,2997,3000,3001,3003],{},[30,2986,2987],{},"Q：列表里找不到刚写的文章？",[2958,2989],{},"\nA：确认未设 ",[79,2992,2845],{},"；",[79,2995,1589],{}," 是否在跑；Frontmatter 的 ",[79,2998,2999],{},"---"," 是否成对、YAML 缩进与引号是否合法；",[79,3002,307],{}," 是否写错导致你筛错分类。",[26,3005,3006,3009,3011,3012,3015,3016,136,3018,33],{},[30,3007,3008],{},"Q：搜索好像搜不到正文里的某一句？",[2958,3010],{},"\nA：当前列表搜索匹配的是标题、摘要、分类与标签，",[30,3013,3014],{},"不包含全文正文","。重要关键词请写进 ",[79,3017,1045],{},[79,3019,310],{},[26,3021,3022,3025,3027],{},[30,3023,3024],{},"Q：技能小册能当完整教程吗？",[2958,3026],{},"\nA：不能替代系统课程与官方文档。它是入门地图与备忘；请搭配练习与权威资料。",[26,3029,3030,3033,3035],{},[30,3031,3032],{},"Q：生活笔记里的小说是真事吗？",[2958,3034],{},"\nA：否，虚构叙事。请以各书文内声明为准。",[26,3037,3038,3041,3043],{},[30,3039,3040],{},"Q：团队文档里的方案能直接拷到我的项目吗？",[2958,3042],{},"\nA：当作思路与踩坑参考。注意文中 Vue \u002F 组件库 \u002F 构建工具版本；直接粘贴前先对照你方技术栈。",[26,3045,3046,3049,3051,3052,3055],{},[30,3047,3048],{},"Q：还能单独部署 Rspress 站吗？",[2958,3050],{},"\nA：内容已迁入本仓库维护。若需导出，可直接使用 ",[79,3053,3054],{},"content\u002Fknowledge\u002F**\u002F*.md","；渲染与路由以 FORMA 为准。",[26,3057,3058,3061,3063,3064,3067,3068,3071,3072,3075],{},[30,3059,3060],{},"Q：callout 不显示或样式不对？",[2958,3062],{},"\nA：请使用 ",[79,3065,3066],{},"::callout{color=\"info\"}"," 等形式（见上文速查），并保证结尾单独一行的 ",[79,3069,3070],{},"::","。配色变体以站点 ",[79,3073,3074],{},"app.config"," 为准。",[26,3077,3078,3081,3083],{},[30,3079,3080],{},"Q：如何反馈错误链接或错别字？",[2958,3082],{},"\nA：直接提仓库 Issue \u002F PR，或在团队内反馈路径与期望文案即可。",[62,3085],{},[65,3087,3089],{"id":3088},"接下来可以去哪儿","接下来可以去哪儿？",[196,3091,3092,3101],{},[199,3093,3094],{},[202,3095,3096,3099],{},[205,3097,3098],{},"目标",[205,3100,750],{},[212,3102,3103,3112,3121,3129,3137,3145,3156,3165,3174],{},[202,3104,3105,3108],{},[217,3106,3107],{},"逛全部文章",[217,3109,3110],{},[45,3111,76],{"href":76},[202,3113,3114,3117],{},[217,3115,3116],{},"JavaScript \u002F 前端基础",[217,3118,3119],{},[45,3120,565],{"href":134},[202,3122,3123,3125],{},[217,3124,589],{},[217,3126,3127],{},[45,3128,140],{"href":139},[202,3130,3131,3133],{},[217,3132,1124],{},[217,3134,3135],{},[45,3136,604],{"href":603},[202,3138,3139,3142],{},[217,3140,3141],{},"部署与调研",[217,3143,3144],{},"列表筛选「服务笔记」",[202,3146,3147,3150],{},[217,3148,3149],{},"业务踩坑",[217,3151,3152,3153],{},"列表筛选「团队文档」或 ",[45,3154,3155],{"href":174},"01 篇",[202,3157,3158,3161],{},[217,3159,3160],{},"摄影入门",[217,3162,3163],{},[45,3164,164],{"href":163},[202,3166,3167,3170],{},[217,3168,3169],{},"站点版本与迁移说明",[217,3171,3172],{},[45,3173,268],{"href":268},[202,3175,3176,3179],{},[217,3177,3178],{},"回到工具台首页",[217,3180,3181],{},[45,3182,3183],{"href":3183},"\u002F",[26,3185,3186],{},"如果你在阅读中发现错误链接、过时命令或错别字，欢迎反馈——知识库会持续修正与增补。",[2334,3188,3189],{},"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 .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 .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 .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s83vy, html code.shiki .s83vy{--shiki-light:#E2931D;--shiki-default:#22863A;--shiki-dark:#85E89D}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 .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .stp6e, html code.shiki .stp6e{--shiki-light:#39ADB5;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":503,"searchDepth":1811,"depth":1811,"links":3191},[3192,3193,3196,3200,3205,3210,3215,3219,3227,3233,3236,3245,3252,3253,3254],{"id":48,"depth":1811,"text":48},{"id":186,"depth":1811,"text":187,"children":3194},[3195],{"id":334,"depth":1817,"text":334},{"id":366,"depth":1811,"text":367,"children":3197},[3198,3199],{"id":381,"depth":1817,"text":381},{"id":495,"depth":1817,"text":495},{"id":528,"depth":1811,"text":3201,"children":3202},"1. 技能小册（booklet\u002F）",[3203,3204],{"id":542,"depth":1817,"text":542},{"id":629,"depth":1817,"text":629},{"id":729,"depth":1811,"text":3206,"children":3207},"2. 生活笔记（life-notes\u002F）",[3208,3209],{"id":738,"depth":1817,"text":542},{"id":792,"depth":1817,"text":629},{"id":866,"depth":1811,"text":3211,"children":3212},"3. 服务笔记（service-notes\u002F）",[3213,3214],{"id":879,"depth":1817,"text":542},{"id":962,"depth":1817,"text":629},{"id":1013,"depth":1811,"text":3216,"children":3217},"4. 团队文档（team-documents\u002F）",[3218],{"id":1034,"depth":1817,"text":1034},{"id":1078,"depth":1811,"text":1079,"children":3220},[3221,3222,3223,3224,3225,3226],{"id":1085,"depth":1817,"text":1086},{"id":1102,"depth":1817,"text":1103},{"id":1144,"depth":1817,"text":1145},{"id":1169,"depth":1817,"text":1170},{"id":1195,"depth":1817,"text":1196},{"id":1222,"depth":1817,"text":1222},{"id":1269,"depth":1811,"text":1270,"children":3228},[3229,3231],{"id":1273,"depth":1817,"text":3230},"列表页 \u002Fknowledge",{"id":1347,"depth":1817,"text":3232},"详情页 \u002Fknowledge\u002F...",{"id":1423,"depth":1811,"text":1424,"children":3234},[3235],{"id":1503,"depth":1817,"text":1503},{"id":1565,"depth":1811,"text":1566,"children":3237},[3238,3239,3240,3242,3243,3244],{"id":1569,"depth":1817,"text":1569},{"id":1593,"depth":1817,"text":1594},{"id":1717,"depth":1817,"text":3241},"建议的 category 取值",{"id":1794,"depth":1817,"text":1794},{"id":1932,"depth":1817,"text":1933},{"id":2035,"depth":1817,"text":2036},{"id":2623,"depth":1811,"text":2624,"children":3246},[3247,3249,3251],{"id":2644,"depth":1817,"text":3248},"列表 GET \u002Fapi\u002Fknowledge",{"id":2759,"depth":1817,"text":3250},"详情 GET \u002Fapi\u002Fknowledge\u002F\u003Cslug...>",{"id":2849,"depth":1817,"text":2849},{"id":2872,"depth":1811,"text":2872},{"id":2951,"depth":1811,"text":2951},{"id":3088,"depth":1811,"text":3089},{"title":8,"description":9},"knowledge\u002Fgetting-started","knowledge\u002Fknowledge\u002Fgetting-started.md",{"items":3259},[3260,3262,3266,3269,3273,3277],{"path":603,"title":604,"description":3261,"category":410,"score":1811},"本目录覆盖 JavaScript\u002FTypeScript 服务端运行时与框架、数据存储，以及 Rust 系统编程入门，提供从零到部署的完整学习路径。前置建议：JavaScript 基础、工程化 · 环境变量。",{"path":3263,"title":3264,"description":3265,"category":410,"score":1811},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fbase","Bun 基础与核心命令","Bun 是用 Zig 编写的 JavaScript 运行时，内置包管理（bun install）、打包（bun build）、测试（bun test）等，并持续兼容 Node.js API。本文介绍核心特点、安装方式，以及日常最常用的命令与包管理功能。见 运行时对比。",{"path":614,"title":3267,"description":3268,"category":410,"score":1811},"数据存储导读","本目录覆盖关系型数据库 MySQL 与内存数据库 Redis，从概念、安装到数据操作、性能优化、备份与缓存实践，面向后端开发与运维入门。与 NestJS 数据库、后端入门 等应用层文档配合阅读。",{"path":3270,"title":3271,"description":3272,"category":410,"score":1811},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fredis\u002Fredis","Redis 入门：概念、安装与数据类型","从「是什么\u002F为什么用」到 Docker\u002F本机安装、基本 CLI，再到五大基础类型命令、持久化与过期键机制、与 MySQL 的选型对比，以及常见踩坑，全面梳理 Redis 入门知识。",{"path":3274,"title":3275,"description":3276,"category":410,"score":1811},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-compose","Docker Compose 编排","Docker Compose 是定义和运行多容器 Docker 应用的工具，通过一个 compose.yml 文件即可管理 Web、数据库、缓存等多个服务。本文覆盖安装、完整字段说明、多服务示例、常用指令与常见排错。",{"path":3278,"title":3279,"description":3280,"category":410,"score":1811},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fdocker\u002Fdocker-images","镜像与 Dockerfile","镜像（Image）是 Docker 容器的只读模板，Dockerfile 则是构建镜像的蓝图。本文完整覆盖镜像的搜索、拉取、查看、删除、打标签、推送，以及 Dockerfile 常用指令、多阶段构建与体积优化技巧。",{"series":3282,"title":3282,"items":3283,"index":3284},null,[],-1]