[{"data":1,"prerenderedAt":564},["ShallowReactive",2],{"\u002Fblog\u002Fhello-world":3,"blog-all-for-nav":155},{"id":4,"title":5,"body":6,"date":142,"description":143,"draft":144,"extension":145,"meta":146,"navigation":147,"path":148,"seo":149,"stem":150,"tags":151,"__hash__":154},"blog\u002Fblog\u002Fhello-world.md","Hello World",{"type":7,"value":8,"toc":138},"minimark",[9,13,26,30,33,46,49,131,134],[10,11,5],"h1",{"id":12},"hello-world",[14,15,16,17,21,22,25],"p",{},"欢迎来到我的个人博客！这是使用 ",[18,19,20],"strong",{},"Nuxt 4"," 和 ",[18,23,24],{},"Nuxt Content"," 搭建的静态博客站点。",[27,28,29],"h2",{"id":29},"为什么写博客",[14,31,32],{},"记录是最好的思考方式。在这里，我会分享：",[34,35,36,40,43],"ul",{},[37,38,39],"li",{},"前端开发经验与技巧",[37,41,42],{},"项目实践中的思考",[37,44,45],{},"偶尔的生活片段",[27,47,48],{"id":48},"技术栈",[50,51,56],"pre",{"className":52,"code":53,"language":54,"meta":55,"style":55},"language-typescript shiki shiki-themes github-light github-dark","const stack = {\n  framework: 'Nuxt 4',\n  ui: 'Vue 3',\n  content: '@nuxt\u002Fcontent',\n  styling: 'UnoCSS',\n}\n","typescript","",[57,58,59,79,92,103,114,125],"code",{"__ignoreMap":55},[60,61,64,68,72,75],"span",{"class":62,"line":63},"line",1,[60,65,67],{"class":66},"szBVR","const",[60,69,71],{"class":70},"sj4cs"," stack",[60,73,74],{"class":66}," =",[60,76,78],{"class":77},"sVt8B"," {\n",[60,80,82,85,89],{"class":62,"line":81},2,[60,83,84],{"class":77},"  framework: ",[60,86,88],{"class":87},"sZZnC","'Nuxt 4'",[60,90,91],{"class":77},",\n",[60,93,95,98,101],{"class":62,"line":94},3,[60,96,97],{"class":77},"  ui: ",[60,99,100],{"class":87},"'Vue 3'",[60,102,91],{"class":77},[60,104,106,109,112],{"class":62,"line":105},4,[60,107,108],{"class":77},"  content: ",[60,110,111],{"class":87},"'@nuxt\u002Fcontent'",[60,113,91],{"class":77},[60,115,117,120,123],{"class":62,"line":116},5,[60,118,119],{"class":77},"  styling: ",[60,121,122],{"class":87},"'UnoCSS'",[60,124,91],{"class":77},[60,126,128],{"class":62,"line":127},6,[60,129,130],{"class":77},"}\n",[14,132,133],{},"感谢来访，期待与你交流！",[135,136,137],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":55,"searchDepth":81,"depth":81,"links":139},[140,141],{"id":29,"depth":81,"text":29},{"id":48,"depth":81,"text":48},"2026-05-20","欢迎来到 Ethan Wang 的个人博客，这是第一篇文章。",false,"md",{},true,"\u002Fblog\u002Fhello-world",{"title":5,"description":143},"blog\u002Fhello-world",[152,153],"随笔","Nuxt","vBCV7VuAIY8PqROTfMXdRT75-6ZmQo5lConjPB-3Exk",[156,182,244,478],{"id":157,"title":158,"body":159,"date":173,"description":174,"draft":147,"extension":145,"meta":175,"navigation":147,"path":176,"seo":177,"stem":178,"tags":179,"__hash__":181},"blog\u002Fblog\u002Fdraft-example.md","未完成的文章（草稿）",{"type":7,"value":160,"toc":171},[161,164],[10,162,163],{"id":163},"草稿文章",[14,165,166,167,170],{},"这篇文章设置了 ",[57,168,169],{},"draft: true","，生产环境中不会出现在列表页。",{"title":55,"searchDepth":81,"depth":81,"links":172},[],"2026-05-27","这是一篇草稿，不会在博客列表中显示。",{},"\u002Fblog\u002Fdraft-example",{"title":158,"description":174},"blog\u002Fdraft-example",[180],"草稿","JDZn62BILAjRr4MQ0SzyjNY9AF2cIckjDp3mLkywYiw",{"id":183,"title":184,"body":185,"date":235,"description":236,"draft":144,"extension":145,"meta":237,"navigation":147,"path":238,"seo":239,"stem":240,"tags":241,"__hash__":243},"blog\u002Fblog\u002Ffrontend-trends-2026.md","2026 前端开发趋势观察",{"type":7,"value":186,"toc":230},[187,190,193,197,200,204,207,211,218,224],[10,188,184],{"id":189},"_2026-前端开发趋势观察",[14,191,192],{},"站在 2026 年中，前端生态已经相当成熟。以下是我的一些观察。",[27,194,196],{"id":195},"ssr-框架成为默认选择","SSR 框架成为默认选择",[14,198,199],{},"Nuxt 4 的发布标志着 Vue 生态 SSR 方案的成熟。对于内容型网站，SSG + 预渲染是性能和 SEO 的最佳平衡点。",[27,201,203],{"id":202},"原子化-css-持续流行","原子化 CSS 持续流行",[14,205,206],{},"UnoCSS 和 Tailwind 依然是主流选择。原子化 CSS 在组件化开发中提供了极好的开发体验。",[27,208,210],{"id":209},"ai-辅助开发","AI 辅助开发",[14,212,213,214,217],{},"AI 工具已经深度融入日常开发流程，但",[18,215,216],{},"架构决策和代码审查","仍然需要开发者的判断。",[219,220,221],"blockquote",{},[14,222,223],{},"工具会变，但对用户体验和代码质量的关注不会变。",[14,225,226,227,229],{},"这篇是草稿示例的反面——它已正式发布。你可以在 frontmatter 中设置 ",[57,228,169],{}," 来隐藏未完成的文章。",{"title":55,"searchDepth":81,"depth":81,"links":231},[232,233,234],{"id":195,"depth":81,"text":196},{"id":202,"depth":81,"text":203},{"id":209,"depth":81,"text":210},"2026-05-25","对 Vue 生态、SSR 框架和 AI 辅助开发的一些个人看法。",{},"\u002Fblog\u002Ffrontend-trends-2026",{"title":184,"description":236},"blog\u002Ffrontend-trends-2026",[242,152],"前端","x--9tMQw15duVGqbsdqw4WdXSHVd7_j_EOH9OI4F6O0",{"id":245,"title":246,"body":247,"date":469,"description":470,"draft":144,"extension":145,"meta":471,"navigation":147,"path":472,"seo":473,"stem":474,"tags":475,"__hash__":477},"blog\u002Fblog\u002Fnuxt-content-guide.md","用 Nuxt Content 搭建 Markdown 博客",{"type":7,"value":248,"toc":464},[249,252,263,267,274,374,377,384,444,447,454,461],[10,250,246],{"id":251},"用-nuxt-content-搭建-markdown-博客",[14,253,254,255,258,259,262],{},"Nuxt Content 让 Markdown 文件变成了一等公民的内容源。只需在 ",[57,256,257],{},"content\u002Fblog\u002F"," 目录下创建 ",[57,260,261],{},".md"," 文件，框架会自动解析 frontmatter 并生成路由。",[27,264,266],{"id":265},"collection-配置","Collection 配置",[14,268,269,270,273],{},"在 ",[57,271,272],{},"content.config.ts"," 中定义 collection：",[50,275,277],{"className":52,"code":276,"language":54,"meta":55,"style":55},"defineCollection({\n  type: 'page',\n  source: 'blog\u002F**\u002F*.md',\n  schema: z.object({\n    title: z.string(),\n    date: z.coerce.date(),\n    tags: z.array(z.string()).default([]),\n  }),\n})\n",[57,278,279,288,298,308,318,329,339,362,368],{"__ignoreMap":55},[60,280,281,285],{"class":62,"line":63},[60,282,284],{"class":283},"sScJk","defineCollection",[60,286,287],{"class":77},"({\n",[60,289,290,293,296],{"class":62,"line":81},[60,291,292],{"class":77},"  type: ",[60,294,295],{"class":87},"'page'",[60,297,91],{"class":77},[60,299,300,303,306],{"class":62,"line":94},[60,301,302],{"class":77},"  source: ",[60,304,305],{"class":87},"'blog\u002F**\u002F*.md'",[60,307,91],{"class":77},[60,309,310,313,316],{"class":62,"line":105},[60,311,312],{"class":77},"  schema: z.",[60,314,315],{"class":283},"object",[60,317,287],{"class":77},[60,319,320,323,326],{"class":62,"line":116},[60,321,322],{"class":77},"    title: z.",[60,324,325],{"class":283},"string",[60,327,328],{"class":77},"(),\n",[60,330,331,334,337],{"class":62,"line":127},[60,332,333],{"class":77},"    date: z.coerce.",[60,335,336],{"class":283},"date",[60,338,328],{"class":77},[60,340,342,345,348,351,353,356,359],{"class":62,"line":341},7,[60,343,344],{"class":77},"    tags: z.",[60,346,347],{"class":283},"array",[60,349,350],{"class":77},"(z.",[60,352,325],{"class":283},[60,354,355],{"class":77},"()).",[60,357,358],{"class":283},"default",[60,360,361],{"class":77},"([]),\n",[60,363,365],{"class":62,"line":364},8,[60,366,367],{"class":77},"  }),\n",[60,369,371],{"class":62,"line":370},9,[60,372,373],{"class":77},"})\n",[27,375,376],{"id":376},"查询文章",[14,378,379,380,383],{},"使用 ",[57,381,382],{},"queryCollection"," 获取文章列表：",[50,385,387],{"className":52,"code":386,"language":54,"meta":55,"style":55},"const posts = await queryCollection('blog')\n  .order('date', 'DESC')\n  .all()\n",[57,388,389,413,434],{"__ignoreMap":55},[60,390,391,393,396,398,401,404,407,410],{"class":62,"line":63},[60,392,67],{"class":66},[60,394,395],{"class":70}," posts",[60,397,74],{"class":66},[60,399,400],{"class":66}," await",[60,402,403],{"class":283}," queryCollection",[60,405,406],{"class":77},"(",[60,408,409],{"class":87},"'blog'",[60,411,412],{"class":77},")\n",[60,414,415,418,421,423,426,429,432],{"class":62,"line":81},[60,416,417],{"class":77},"  .",[60,419,420],{"class":283},"order",[60,422,406],{"class":77},[60,424,425],{"class":87},"'date'",[60,427,428],{"class":77},", ",[60,430,431],{"class":87},"'DESC'",[60,433,412],{"class":77},[60,435,436,438,441],{"class":62,"line":94},[60,437,417],{"class":77},[60,439,440],{"class":283},"all",[60,442,443],{"class":77},"()\n",[27,445,446],{"id":446},"渲染内容",[14,448,449,450,453],{},"详情页使用 ",[57,451,452],{},"\u003CContentRenderer>"," 组件即可渲染 Markdown 正文，代码高亮由 Shiki 自动处理。",[14,455,456,457,460],{},"这种方案的优势是：",[18,458,459],{},"零后端、Git 版本管理、构建时预渲染","，非常适合个人博客。",[135,462,463],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":55,"searchDepth":81,"depth":81,"links":465},[466,467,468],{"id":265,"depth":81,"text":266},{"id":376,"depth":81,"text":376},{"id":446,"depth":81,"text":446},"2026-05-22","介绍如何使用 Nuxt Content v3 的 collection 机制管理 Markdown 文章。",{},"\u002Fblog\u002Fnuxt-content-guide",{"title":246,"description":470},"blog\u002Fnuxt-content-guide",[153,476],"Vue","V6IIXFNjKyR0Mz9Nr9-1_dBPoIHU35q1LgEBOhC3b5w",{"id":4,"title":5,"body":479,"date":142,"description":143,"draft":144,"extension":145,"meta":561,"navigation":147,"path":148,"seo":562,"stem":150,"tags":563,"__hash__":154},{"type":7,"value":480,"toc":557},[481,483,489,491,493,501,503,553,555],[10,482,5],{"id":12},[14,484,16,485,21,487,25],{},[18,486,20],{},[18,488,24],{},[27,490,29],{"id":29},[14,492,32],{},[34,494,495,497,499],{},[37,496,39],{},[37,498,42],{},[37,500,45],{},[27,502,48],{"id":48},[50,504,505],{"className":52,"code":53,"language":54,"meta":55,"style":55},[57,506,507,517,525,533,541,549],{"__ignoreMap":55},[60,508,509,511,513,515],{"class":62,"line":63},[60,510,67],{"class":66},[60,512,71],{"class":70},[60,514,74],{"class":66},[60,516,78],{"class":77},[60,518,519,521,523],{"class":62,"line":81},[60,520,84],{"class":77},[60,522,88],{"class":87},[60,524,91],{"class":77},[60,526,527,529,531],{"class":62,"line":94},[60,528,97],{"class":77},[60,530,100],{"class":87},[60,532,91],{"class":77},[60,534,535,537,539],{"class":62,"line":105},[60,536,108],{"class":77},[60,538,111],{"class":87},[60,540,91],{"class":77},[60,542,543,545,547],{"class":62,"line":116},[60,544,119],{"class":77},[60,546,122],{"class":87},[60,548,91],{"class":77},[60,550,551],{"class":62,"line":127},[60,552,130],{"class":77},[14,554,133],{},[135,556,137],{},{"title":55,"searchDepth":81,"depth":81,"links":558},[559,560],{"id":29,"depth":81,"text":29},{"id":48,"depth":81,"text":48},{},{"title":5,"description":143},[152,153],1779933176499]