[{"data":1,"prerenderedAt":3807},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fapi\u002Fkit\u002Ftemplates":1018},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615,619,623,627,631,635,639,643,647,651,655,659,663,667,671,675,679,683,687,691,695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755,759,763,767,770,774,778,782,786,790,794,798,802,806,809,813,817,821,825,829,833,837,841,845,849,852,855,859,863,867,871,874,877,881,884,888,892,895,898,901,904,907,911,915,918,922,926,930,934,938,942,946,950,954,958,962,966,970,974,978,982,986,990,994,998,1002,1006,1010,1014],{"path":5,"title":6,"description":7},"\u002Fdocs\u002Fgetting-started\u002Fintroduction","介绍","Nuxt 的目标是提供直观且高性能的 Web 开发体验，并始终将优秀的开发者体验（Developer Experience）放在心上。",{"path":9,"title":10,"description":11},"\u002Fdocs\u002Fgetting-started\u002Finstallation","安装","通过在线 starter 快速上手 Nuxt，或在本地使用终端从零开始。",{"path":13,"title":14,"description":15},"\u002Fdocs\u002Fgetting-started\u002Fconfiguration","配置","Nuxt 提供了合理的默认配置，让你高效开发。",{"path":17,"title":18,"description":19},"\u002Fdocs\u002Fgetting-started\u002Fviews","视图","Nuxt 提供了多个组件层来实现应用的用户界面。",{"path":21,"title":22,"description":23},"\u002Fdocs\u002Fgetting-started\u002Fassets","资源","Nuxt 为你的资源提供了两种处理方式。",{"path":25,"title":26,"description":27},"\u002Fdocs\u002Fgetting-started\u002Fstyling","样式","了解如何为你的 Nuxt 应用添加样式。",{"path":29,"title":30,"description":31},"\u002Fdocs\u002Fgetting-started\u002Frouting","路由","Nuxt 的文件系统路由会为 pages\u002F 目录中的每个文件创建一条路由。",{"path":33,"title":34,"description":35},"\u002Fdocs\u002Fgetting-started\u002Fseo-meta","SEO 与 Meta","借助强大的 head 配置、composables 和组件，改善你的 Nuxt 应用的 SEO。",{"path":37,"title":38,"description":39},"\u002Fdocs\u002Fgetting-started\u002Ftransitions","过渡","使用 Vue 或浏览器原生的 View Transitions，在页面和布局之间应用过渡效果。",{"path":41,"title":42,"description":43},"\u002Fdocs\u002Fgetting-started\u002Fdata-fetching","数据获取","Nuxt 提供了用于处理应用内数据获取的 composables。",{"path":45,"title":46,"description":47},"\u002Fdocs\u002Fgetting-started\u002Fstate-management","状态管理","Nuxt 提供了强大的状态管理库和 useState composable，用于创建响应式且对 SSR 友好的共享状态。",{"path":49,"title":50,"description":51},"\u002Fdocs\u002Fgetting-started\u002Ferror-handling","错误处理","了解如何在 Nuxt 中捕获和处理错误。",{"path":53,"title":54,"description":55},"\u002Fdocs\u002Fgetting-started\u002Fserver","Server","利用 Nuxt 的服务端框架构建全栈应用。你可以从数据库或其他服务端获取数据、创建 API，甚至生成像站点地图或 RSS 这样的静态服务端内容——全部来自同一个代码库。",{"path":57,"title":58,"description":59},"\u002Fdocs\u002Fgetting-started\u002Flayers","Layers","Nuxt 提供了一套强大的系统，允许你扩展默认文件、配置以及更多内容。",{"path":61,"title":62,"description":63},"\u002Fdocs\u002Fgetting-started\u002Fprerendering","Prerendering","Nuxt 允许在构建时静态渲染某些页面，以改善特定的性能或 SEO 指标。",{"path":65,"title":66,"description":67},"\u002Fdocs\u002Fgetting-started\u002Fdeployment","Deployment","了解如何将你的 Nuxt 应用部署到任何托管提供商。",{"path":69,"title":70,"description":71},"\u002Fdocs\u002Fgetting-started\u002Ftesting","Testing","如何测试你的 Nuxt 应用。",{"path":73,"title":74,"description":75},"\u002Fdocs\u002Fgetting-started\u002Fupgrade","Upgrade Guide","了解如何升级到最新的 Nuxt 版本。",{"path":77,"title":78,"description":79},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxt",".nuxt","Nuxt 在开发阶段使用 .nuxt\u002F 目录来生成你的 Vue 应用。",{"path":81,"title":82,"description":83},"\u002Fdocs\u002Fdirectory-structure\u002Foutput",".output","Nuxt 在为生产环境构建应用时创建 .output\u002F 目录。",{"path":85,"title":86,"description":87},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fassets","assets","assets\u002F 目录用于添加所有将由构建工具处理的网站资源。",{"path":89,"title":90,"description":91},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents","components","components\u002F 目录用于存放你所有的 Vue 组件。",{"path":93,"title":94,"description":95},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomposables","composables","使用 composables\u002F 目录将你的 Vue 组合式函数自动导入到应用中。",{"path":97,"title":98,"description":99},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Flayouts","layouts","Nuxt 提供了一个布局框架，用于将通用的 UI 模式提取为可复用的布局。",{"path":101,"title":102,"description":103},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","middleware","Nuxt 提供中间件，用于在导航到特定路由前运行代码。",{"path":105,"title":106,"description":107},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages","pages","Nuxt 提供基于文件的路由，用于在 Web 应用中创建路由。",{"path":109,"title":110,"description":111},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fplugins","plugins","Nuxt 拥有一个插件系统，用于在创建 Vue 应用时使用 Vue 插件等。",{"path":113,"title":114,"description":115},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Futils","utils","使用 utils\u002F 目录在你的应用中自动导入工具函数。",{"path":117,"title":118,"description":119},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fapp","app.vue","app.vue 文件是你 Nuxt 应用的主组件。",{"path":121,"title":122,"description":123},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fapp-config","app.config.ts","使用 App Config 文件在应用内部暴露响应式配置。",{"path":125,"title":126,"description":127},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Ferror","error.vue","error.vue 文件是你 Nuxt 应用中的错误页面。",{"path":129,"title":130,"description":131},"\u002Fdocs\u002Fdirectory-structure\u002Fcontent","content","使用 content\u002F 目录为你的应用创建一个基于文件的 CMS。",{"path":133,"title":134,"description":135},"\u002Fdocs\u002Fdirectory-structure\u002Flayers","layers","使用 layers\u002F 目录在你的应用中组织和自动注册本地 layers。",{"path":137,"title":138,"description":139},"\u002Fdocs\u002Fdirectory-structure\u002Fmodules","modules","使用 modules\u002F 目录在你的应用中自动注册本地模块。",{"path":141,"title":142,"description":143},"\u002Fdocs\u002Fdirectory-structure\u002Fnode_modules","node_modules","包管理器将项目的依赖存储在 node_modules\u002F 目录中。",{"path":145,"title":146,"description":147},"\u002Fdocs\u002Fdirectory-structure\u002Fpublic","public","public\u002F 目录用于提供网站的静态资源。",{"path":149,"title":150,"description":151},"\u002Fdocs\u002Fdirectory-structure\u002Fserver","server","server\u002F 目录用于为你的应用注册 API 和服务端处理器。",{"path":153,"title":154,"description":155},"\u002Fdocs\u002Fdirectory-structure\u002Fshared","shared","使用 shared\u002F 目录在 Vue 应用和 Nitro 服务端之间共享功能。",{"path":157,"title":158,"description":159},"\u002Fdocs\u002Fdirectory-structure\u002Fenv",".env",".env 文件用于指定构建\u002F开发时的环境变量。",{"path":161,"title":162,"description":163},"\u002Fdocs\u002Fdirectory-structure\u002Fgitignore",".gitignore",".gitignore 文件用于指定 git 应当忽略的、有意不跟踪的文件。",{"path":165,"title":166,"description":167},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxtignore",".nuxtignore",".nuxtignore 文件用于让 Nuxt 在构建阶段忽略项目根目录中的文件。",{"path":169,"title":170,"description":171},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxtrc",".nuxtrc",".nuxtrc 文件允许你用扁平语法定义 Nuxt 配置。",{"path":173,"title":174,"description":175},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxt-config","nuxt.config.ts","只需要一个 nuxt.config 文件，即可轻松配置 Nuxt。",{"path":177,"title":178,"description":179},"\u002Fdocs\u002Fdirectory-structure\u002Fpackage","package.json","package.json 文件包含你应用的所有依赖和脚本。",{"path":181,"title":182,"description":183},"\u002Fdocs\u002Fdirectory-structure\u002Ftsconfig","tsconfig.json","了解 Nuxt 如何在项目的不同部分管理 TypeScript 配置。",{"path":185,"title":186,"description":187},"\u002Fdocs\u002Fdirectory-structure","Nuxt 目录结构","了解 Nuxt 应用的目录结构以及如何使用它。",{"path":189,"title":190,"description":191},"\u002Fdocs\u002Fguide","Nuxt 指南","通过深入的指南了解 Nuxt 的工作原理。",{"path":193,"title":194,"description":195},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Frendering","渲染模式","了解 Nuxt 中可用的不同渲染模式。",{"path":197,"title":198,"description":199},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fvuejs-development","Vue.js 开发","Nuxt 使用 Vue.js，并添加了组件自动导入、基于文件的路由以及支持 SSR 的组合式函数等特性。",{"path":201,"title":202,"description":203},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","Nuxt 生命周期","理解 Nuxt 应用的生命周期，可以帮助你更深入地了解框架是如何运作的，尤其是在服务端渲染和客户端渲染两方面。",{"path":205,"title":206,"description":207},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fauto-imports","自动导入","Nuxt 会自动导入组件、组合式函数、辅助函数和 Vue API。",{"path":209,"title":210,"description":211},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fserver-engine","服务端引擎","Nuxt 由一个全新的服务端引擎驱动：Nitro。",{"path":213,"title":214,"description":215},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fmodules","模块","Nuxt 提供了一个模块系统来扩展框架核心并简化集成。",{"path":217,"title":218,"description":219},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fesm","ES 模块","Nuxt 使用原生的 ES 模块。",{"path":221,"title":222,"description":223},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Ftypescript","TypeScript","Nuxt 完全类型化，并提供了有用的快捷方式，确保你在编码时能获取准确的类型信息。",{"path":225,"title":226,"description":227},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fcode-style","代码风格","Nuxt 开箱即用地支持 ESLint",{"path":229,"title":230,"description":231},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fdevcontainers","Dev Containers","在开发容器中设置或打开 Nuxt 项目，以获得一致开发环境。",{"path":233,"title":234,"description":235},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fhydration","Nuxt and Hydration","为什么修复水合问题很重要",{"path":237,"title":238,"description":239},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fperformance","Nuxt performance","提升 Nuxt 应用性能的最佳实践。",{"path":241,"title":242,"description":243},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fplugins","Nuxt Plugins","使用 Nuxt 插件时的最佳实践。",{"path":245,"title":246,"description":247},"\u002Fdocs\u002Fguide\u002Fai\u002Fmcp","Nuxt MCP Server","借助 Model Context Protocol 支持，在你的 AI 助手中使用 Nuxt 文档。",{"path":249,"title":250,"description":251},"\u002Fdocs\u002Fguide\u002Fai\u002Fllms-txt","Nuxt LLMs.txt","如何让 Cursor、Windsurf、GitHub Copilot、ChatGPT 和 Claude 等 AI 工具理解 Nuxt 的概念、API 和最佳实践。",{"path":253,"title":254,"description":255},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fgetting-started","创建你的第一个模块","学习如何使用官方启动模板创建你的第一个 Nuxt 模块。",{"path":257,"title":258,"description":259},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fmodule-anatomy","理解模块结构","学习 Nuxt 模块是如何构成的，以及如何定义它们。",{"path":261,"title":262,"description":263},"\u002Fdocs\u002Fguide\u002Fmodules\u002Frecipes-basics","添加插件、组件等","学习如何从你的模块注入插件、组件、组合式函数和服务端路由。",{"path":265,"title":266,"description":267},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fmodule-dependencies","模块依赖","声明对其它模块的依赖，并带有版本约束和配置合并。",{"path":269,"title":270,"description":271},"\u002Fdocs\u002Fguide\u002Fmodules\u002Frecipes-advanced","使用钩子与扩展类型","在你的模块中掌握生命周期钩子、虚拟文件和 TypeScript 声明。",{"path":273,"title":274,"description":275},"\u002Fdocs\u002Fguide\u002Fmodules\u002Ftesting","测试你的模块","学习如何对你的 Nuxt 模块进行单元、集成和 E2E 测试。",{"path":277,"title":278,"description":279},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fbest-practices","遵循最佳实践","使用这些指南构建高性能且可维护的 Nuxt 模块。",{"path":281,"title":282,"description":283},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fecosystem","发布与分享你的模块","加入 Nuxt 模块生态，并将你的模块发布到 npm。",{"path":285,"title":286,"description":287},"\u002Fdocs\u002Fguide\u002Fmodules","Module Author Guide","学习如何创建 Nuxt 模块，以集成、增强或扩展任意 Nuxt 应用。",{"path":289,"title":290,"description":291},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-routing","自定义路由","在 Nuxt 中，你的路由由 pages 目录内文件的结构定义。不过，由于底层使用了 vue-router，Nuxt 提供了几种在你的项目中添加自定义路由的方式。",{"path":293,"title":294,"description":295},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fvite-plugin","在 Nuxt 中使用 Vite 插件","学习如何将 Vite 插件集成到你的 Nuxt 项目中。",{"path":297,"title":298,"description":299},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-usefetch","Nuxt 中的自定义 useFetch","如何在 Nuxt 中创建用于调用你外部 API 的自定义 fetcher。",{"path":301,"title":302,"description":303},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","会话与鉴权","鉴权是 Web 应用中极其常见的需求。本配方将向你展示如何在你的 Nuxt 应用中实现基本的用户注册与鉴权。",{"path":305,"title":306,"description":307},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fevents","创建自定义事件","Nuxt 提供了一个由 hookable 驱动的强大事件系统。",{"path":309,"title":310,"description":311},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fexperimental-features","实验性特性","启用 Nuxt 实验性特性以解锁新的可能性。",{"path":313,"title":314,"description":315},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Ffeatures","特性开关","启用或禁用可选的 Nuxt 特性，以解锁新的可能性。",{"path":317,"title":318,"description":319},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Finternals","Nuxt 是如何工作的？","Nuxt 是一个极简但高度可定制的框架，用于构建 Web 应用。",{"path":321,"title":322,"description":323},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fruntime-config","运行时配置","Nuxt 提供了一套运行时配置 API，以在你的应用内暴露配置和密钥。",{"path":325,"title":326,"description":327},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","Nightly 发布通道","nightly 发布通道允许使用直接从仓库最新提交构建的 Nuxt。",{"path":329,"title":330,"description":331},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fhooks","生命周期钩子","Nuxt 提供了一个强大的钩子系统，可使用钩子扩展几乎每个方面。",{"path":333,"title":334,"description":335},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fkit","Nuxt Kit","@nuxt\u002Fkit 提供了面向模块作者的功能。",{"path":337,"title":338,"description":339},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fnuxt-app","NuxtApp","在 Nuxt 中，你可以在组合式函数、组件和插件中访问运行时应用上下文。",{"path":341,"title":342,"description":343},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Flayers","编写 Nuxt Layers","Nuxt 提供了一个强大的系统，允许你扩展默认文件、配置等等。",{"path":345,"title":346,"description":347},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fbuilders","创建 Builder","了解 Nuxt builder 是如何工作的，以及如何编写你自己的 builder。",{"path":349,"title":350,"description":351},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fdebugging","调试","在 Nuxt 中，你可以直接在浏览器中以及你的 IDE 里开始调试你的应用。",{"path":353,"title":354,"description":354},"\u002Fdocs\u002Fguide\u002Fgoing-further","",{"path":356,"title":357,"description":358},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fclient-only","\u003CClientOnly>","使用 \u003CClientOnly> 组件仅在客户端渲染组件。",{"path":360,"title":361,"description":362},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fdev-only","\u003CDevOnly>","使用 \u003CDevOnly> 组件仅在开发期间渲染组件。",{"path":364,"title":365,"description":366},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","\u003CNuxtClientFallback>","Nuxt 提供了 \u003CNuxtClientFallback> 组件，当其任意子组件在 SSR 中触发错误时，在客户端渲染其内容",{"path":368,"title":369,"description":370},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-picture","\u003CNuxtPicture>","Nuxt 提供了 \u003CNuxtPicture> 组件来处理自动图像优化。",{"path":372,"title":373,"description":374},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fteleports","\u003CTeleport>","\u003CTeleport> 组件将组件传送到 DOM 中的另一个位置。",{"path":376,"title":377,"description":378},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","\u003CNuxtRouteAnnouncer>","\u003CNuxtRouteAnnouncer> 组件添加一个带有页面标题的隐藏元素，用于向辅助技术播报路由变化。",{"path":380,"title":381,"description":382},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-time","\u003CNuxtTime>","\u003CNuxtTime> 组件以本地化友好的格式显示时间，并保持服务端-客户端一致。",{"path":384,"title":385,"description":386},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","\u003CNuxtAnnouncer>","\u003CNuxtAnnouncer> 组件添加一个隐藏元素，用于向辅助技术播报动态内容变化。",{"path":388,"title":389,"description":390},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-page","\u003CNuxtPage>","\u003CNuxtPage> 组件用于显示位于 pages\u002F 目录中的页面。",{"path":392,"title":393,"description":394},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-layout","\u003CNuxtLayout>","Nuxt 提供了 \u003CNuxtLayout> 组件，用于在页面和错误页面上显示布局。",{"path":396,"title":397,"description":398},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-link","\u003CNuxtLink>","Nuxt 提供了 \u003CNuxtLink> 组件来处理应用内的各类链接。",{"path":400,"title":401,"description":402},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","\u003CNuxtLoadingIndicator>","在页面导航之间显示进度条。",{"path":404,"title":405,"description":406},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","\u003CNuxtErrorBoundary>","\u003CNuxtErrorBoundary> 组件处理其默认插槽中发生的客户端错误。",{"path":408,"title":409,"description":410},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","\u003CNuxtWelcome>","\u003CNuxtWelcome> 组件用于欢迎通过启动模板创建的新项目的用户。",{"path":412,"title":413,"description":414},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-island","\u003CNuxtIsland>","Nuxt 提供了 \u003CNuxtIsland> 组件，用于渲染无客户端 JS 的非交互式组件。",{"path":416,"title":417,"description":418},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-img","\u003CNuxtImg>","Nuxt 提供了 \u003CNuxtImg> 组件来处理自动图像优化。",{"path":420,"title":421,"description":422},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","createUseAsyncData","一个工厂函数，用于创建带有预定义默认选项的自定义 useAsyncData 组合式函数。",{"path":424,"title":425,"description":426},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","createUseFetch","一个工厂函数，用于创建带有预定义默认选项的自定义 useFetch 组合式函数。",{"path":428,"title":429,"description":430},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fon-prehydrate","onPrehydrate","使用 onPrehydrate 在 Nuxt 对页面进行 hydration 之前的客户端立即运行回调。",{"path":432,"title":433,"description":434},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-announcer","useAnnouncer","一个用于向屏幕阅读器播报消息的组合式函数。",{"path":436,"title":437,"description":438},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-app-config","useAppConfig","访问在项目中定义的可响应 app config。",{"path":440,"title":441,"description":442},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-async-data","useAsyncData","useAsyncData 以 SSR 友好的方式提供对异步解析数据的访问。",{"path":444,"title":445,"description":446},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-cookie","useCookie","useCookie 是一个 SSR 友好的组合式函数，用于读写 cookie。",{"path":448,"title":449,"description":450},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-error","useError","useError 组合式函数返回正在被处理的全局 Nuxt 错误。",{"path":452,"title":453,"description":454},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-fetch","useFetch","使用 SSR 友好的组合式函数从 API 端点获取数据。",{"path":456,"title":457,"description":458},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-head","useHead","useHead 用于自定义 Nuxt 应用各个页面的 head 属性。",{"path":460,"title":461,"description":462},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-head-safe","useHeadSafe","处理用户输入时提供 head 数据的推荐方式。",{"path":464,"title":465,"description":466},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-hydration","useHydration","允许完全控制 hydration 周期，以便从服务端设置和接收数据。",{"path":468,"title":469,"description":470},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-layout","useLayout","useLayout 返回为当前路由解析出的布局。",{"path":472,"title":473,"description":474},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","useLazyAsyncData","该组合式函数包装 useAsyncData，会在 handler 解析之前立即触发导航。",{"path":476,"title":477,"description":478},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","useLazyFetch","该组合式函数是对 useFetch 的封装，会在 handler 解析之前立即触发导航。",{"path":480,"title":481,"description":482},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","useLoadingIndicator","该组合式函数让你访问应用页面的加载状态。",{"path":484,"title":485,"description":486},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","useNuxtApp","访问 Nuxt 应用的共享运行时上下文。",{"path":488,"title":489,"description":490},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","useNuxtData","访问数据获取组合式函数的当前缓存值。",{"path":492,"title":493,"description":494},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","usePreviewMode","使用 usePreviewMode 检查并控制 Nuxt 的预览模式",{"path":496,"title":497,"description":498},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-event","useRequestEvent","使用 useRequestEvent 组合式函数访问传入的请求事件。",{"path":500,"title":501,"description":502},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","useRequestFetch","使用 useRequestFetch 组合式函数为服务端 fetch 请求转发请求上下文和请求头。",{"path":504,"title":505,"description":506},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-header","useRequestHeader","使用 useRequestHeader 访问某个特定的传入请求头。",{"path":508,"title":509,"description":510},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-headers","useRequestHeaders","使用 useRequestHeaders 访问传入的请求头。",{"path":512,"title":513,"description":514},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-url","useRequestURL","使用 useRequestURL 组合式函数访问传入的请求 URL。",{"path":516,"title":517,"description":518},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-response-header","useResponseHeader","使用 useResponseHeader 设置服务端响应头。",{"path":520,"title":521,"description":522},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-route","useRoute","useRoute 组合式函数返回当前路由。",{"path":524,"title":525,"description":526},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","useRouteAnnouncer","该组合式函数监视页面标题变化，并相应地更新播报消息。",{"path":528,"title":529,"description":530},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-router","useRouter","useRouter 组合式函数返回 router 实例。",{"path":532,"title":533,"description":534},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","useRuntimeConfig","使用 useRuntimeConfig 组合式函数访问运行时配置变量。",{"path":536,"title":537,"description":538},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","useRuntimeHook","在 Nuxt 应用中注册一个运行时钩子，并确保在作用域销毁时被正确清理。",{"path":540,"title":541,"description":542},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","useSeoMeta","useSeoMeta 组合式函数让你可以将站点的 SEO meta 标签定义为一个扁平对象，并提供完整的 TypeScript 支持。",{"path":544,"title":545,"description":546},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","useServerSeoMeta","useServerSeoMeta 组合式函数让你可以将站点的 SEO meta 标签定义为一个扁平对象，并提供完整的 TypeScript 支持。",{"path":548,"title":549,"description":550},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-state","useState","useState 组合式函数创建一个可响应的、SSR 友好的共享状态。",{"path":552,"title":553,"description":554},"\u002Fdocs\u002Fapi\u002Futils\u002Fdollarfetch","$fetch","Nuxt 使用 ofetch 全局暴露了 $fetch 辅助函数，用于发起 HTTP 请求。",{"path":556,"title":557,"description":558},"\u002Fdocs\u002Fapi\u002Futils\u002Fabort-navigation","abortNavigation","abortNavigation 是一个辅助函数，用于阻止导航的发生，并在设置了参数时抛出错误。",{"path":560,"title":561,"description":562},"\u002Fdocs\u002Fapi\u002Futils\u002Fadd-route-middleware","addRouteMiddleware","addRouteMiddleware() 是一个在你的应用中动态添加中间件的辅助函数。",{"path":564,"title":565,"description":566},"\u002Fdocs\u002Fapi\u002Futils\u002Fcall-once","callOnce","在 SSR 或 CSR 期间只运行一次给定的函数或代码块。",{"path":568,"title":569,"description":570},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-error","clearError","clearError 组合式函数清除所有已处理的错误。",{"path":572,"title":573,"description":574},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-nuxt-data","clearNuxtData","删除 useAsyncData 和 useFetch 的缓存数据、错误状态和挂起的 promise。",{"path":576,"title":577,"description":578},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-nuxt-state","clearNuxtState","删除 useState 的缓存状态。",{"path":580,"title":581,"description":582},"\u002Fdocs\u002Fapi\u002Futils\u002Fcreate-error","createError","创建一个带有附加元数据的错误对象。",{"path":584,"title":585,"description":586},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","defineLazyHydrationComponent","使用特定策略定义一个懒加载 hydration 组件。",{"path":588,"title":589,"description":590},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-component","defineNuxtComponent","defineNuxtComponent() 是一个用于使用 Options API 定义类型安全组件的辅助函数。",{"path":592,"title":593,"description":594},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","defineNuxtPlugin","defineNuxtPlugin() 是一个用于创建 Nuxt 插件的辅助函数。",{"path":596,"title":597,"description":598},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","defineNuxtRouteMiddleware","使用 defineNuxtRouteMiddleware 辅助函数创建命名路由中间件。",{"path":600,"title":601,"description":602},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-page-meta","definePageMeta","为你的页面组件定义元数据。",{"path":604,"title":605,"description":606},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-route-rules","defineRouteRules","在页面层面定义用于混合渲染的路由规则。",{"path":608,"title":609,"description":610},"\u002Fdocs\u002Fapi\u002Futils\u002Fnavigate-to","navigateTo","navigateTo 是一个用于以编程方式导航用户的辅助函数。",{"path":612,"title":613,"description":614},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-before-route-leave","onBeforeRouteLeave","onBeforeRouteLeave 组合式函数允许在组件内部注册一个路由守卫。",{"path":616,"title":617,"description":618},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-before-route-update","onBeforeRouteUpdate","onBeforeRouteUpdate 组合式函数允许在组件内部注册一个路由守卫。",{"path":620,"title":621,"description":622},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-nuxt-ready","onNuxtReady","onNuxtReady 组合式函数允许在你的应用完成初始化之后运行一个回调。",{"path":624,"title":625,"description":626},"\u002Fdocs\u002Fapi\u002Futils\u002Fprefetch-components","prefetchComponents","Nuxt 提供了用于在预取组件方面给予你控制的工具。",{"path":628,"title":629,"description":630},"\u002Fdocs\u002Fapi\u002Futils\u002Fpreload-components","preloadComponents","Nuxt 提供了用于在预加载组件方面给予你控制的工具。",{"path":632,"title":633,"description":634},"\u002Fdocs\u002Fapi\u002Futils\u002Fpreload-route-components","preloadRouteComponents","preloadRouteComponents 允许你手动预加载 Nuxt 应用中的单个页面。",{"path":636,"title":637,"description":638},"\u002Fdocs\u002Fapi\u002Futils\u002Fprerender-routes","prerenderRoutes","prerenderRoutes 向 Nitro 暗示预渲染一个额外的路由。",{"path":640,"title":641,"description":642},"\u002Fdocs\u002Fapi\u002Futils\u002Frefresh-cookie","refreshCookie","当 cookie 发生变化时，手动刷新 useCookie 的值",{"path":644,"title":645,"description":646},"\u002Fdocs\u002Fapi\u002Futils\u002Frefresh-nuxt-data","refreshNuxtData","刷新 Nuxt 中所有或特定的 asyncData 实例",{"path":648,"title":649,"description":650},"\u002Fdocs\u002Fapi\u002Futils\u002Freload-nuxt-app","reloadNuxtApp","reloadNuxtApp 会对页面执行一次硬刷新。",{"path":652,"title":653,"description":654},"\u002Fdocs\u002Fapi\u002Futils\u002Fset-page-layout","setPageLayout","setPageLayout 允许你动态更改页面的布局。",{"path":656,"title":657,"description":658},"\u002Fdocs\u002Fapi\u002Futils\u002Fset-response-status","setResponseStatus","setResponseStatus 设置响应的状态码（以及可选的 statusText）。",{"path":660,"title":661,"description":662},"\u002Fdocs\u002Fapi\u002Futils\u002Fshow-error","showError","Nuxt 提供了一种快速且简单的方式，在需要的时候显示全屏错误页。",{"path":664,"title":665,"description":666},"\u002Fdocs\u002Fapi\u002Futils\u002Fupdate-app-config","updateAppConfig","在运行时更新 App Config。",{"path":668,"title":669,"description":670},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fadd","nuxt add","在你的 Nuxt 应用中快速搭建一个实体（文件）。",{"path":672,"title":673,"description":674},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fanalyze","nuxt analyze","分析生产环境的打包产物或你的 Nuxt 应用。",{"path":676,"title":677,"description":678},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fbuild","nuxt build","构建你的 Nuxt 应用。",{"path":680,"title":681,"description":682},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fbuild-module","nuxt build-module","用于在发布前构建你的 Nuxt 模块的 Nuxt 命令。",{"path":684,"title":685,"description":686},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fcleanup","nuxt cleanup","移除常见的 Nuxt 生成文件和缓存。",{"path":688,"title":689,"description":690},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fdev","nuxt dev","dev 命令会在 http:\u002F\u002Flocalhost:3000 启动一个带有热模块替换（HMR）的开发服务器。",{"path":692,"title":693,"description":694},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fdevtools","nuxt devtools","devtools 命令允许你基于每个项目启用或禁用 Nuxt DevTools。",{"path":696,"title":697,"description":698},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fgenerate","nuxt generate","预渲染应用的每一个路由，并将结果存储为纯 HTML 文件。",{"path":700,"title":701,"description":702},"\u002Fdocs\u002Fapi\u002Fcommands\u002Finfo","nuxt info","info 命令会记录当前或指定 Nuxt 项目的相关信息。",{"path":704,"title":705,"description":706},"\u002Fdocs\u002Fapi\u002Fcommands\u002Finit","create nuxt","init 命令用于初始化一个全新的 Nuxt 项目。",{"path":708,"title":709,"description":710},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fmodule","nuxt module","通过命令行搜索并向你的 Nuxt 应用添加模块。",{"path":712,"title":713,"description":714},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fprepare","nuxt prepare","prepare 命令会在你的应用中创建一个 .nuxt 目录并生成类型。",{"path":716,"title":717,"description":718},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fpreview","nuxt preview","preview 命令会启动一个服务器，用于在运行 build 命令后预览你的应用。",{"path":720,"title":721,"description":722},"\u002Fdocs\u002Fapi\u002Fcommands\u002Ftest","nuxt test","test 命令使用 @nuxt\u002Ftest-utils 运行测试。",{"path":724,"title":725,"description":726},"\u002Fdocs\u002Fapi\u002Fcommands\u002Ftypecheck","nuxt typecheck","typecheck 命令运行 vue-tsc 来全量检查你的应用类型。",{"path":728,"title":729,"description":730},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fupgrade","nuxt upgrade","upgrade 命令将 Nuxt 升级到最新版本。",{"path":732,"title":733,"description":734},"\u002Fdocs\u002Fapi\u002Fkit\u002Fmodules","Modules","Nuxt Kit 提供了一系列工具，帮助你创建和使用模块。你可以使用这些工具来创建自己的模块，或复用已有的模块。",{"path":736,"title":737,"description":738},"\u002Fdocs\u002Fapi\u002Fkit\u002Fruntime-config","Runtime Config","Nuxt Kit 提供了一系列工具，帮助你访问和修改 Nuxt 运行时配置。",{"path":740,"title":741,"description":742},"\u002Fdocs\u002Fapi\u002Fkit\u002Ftemplates","Templates","Nuxt Kit 提供了一系列工具，帮助你处理模板。这些函数允许你在开发和构建期间生成额外的文件。",{"path":744,"title":745,"description":746},"\u002Fdocs\u002Fapi\u002Fkit\u002Fapp-config","App Config","Nuxt Kit 提供了一系列工具，帮助你访问和修改 Nuxt 应用配置。",{"path":748,"title":749,"description":750},"\u002Fdocs\u002Fapi\u002Fkit\u002Fnitro","Nitro","Nuxt Kit 提供了一系列工具，帮助你使用 Nitro。这些函数允许你添加服务器处理器、插件和预渲染路由。",{"path":752,"title":753,"description":754},"\u002Fdocs\u002Fapi\u002Fkit\u002Fresolving","Resolving","Nuxt Kit 提供了从 Nuxt 根目录或自定义基准路径解析路径的实用工具。",{"path":756,"title":757,"description":758},"\u002Fdocs\u002Fapi\u002Fkit\u002Flogging","Logging","Nuxt Kit 提供了一系列工具，帮助你使用日志记录。这些函数允许你以额外功能记录消息。",{"path":760,"title":761,"description":762},"\u002Fdocs\u002Fapi\u002Fkit\u002Fbuilder","Builder","Nuxt Kit 提供了一系列工具，帮助你使用构建器。这些函数允许你扩展 Vite 和 webpack 配置。",{"path":764,"title":765,"description":766},"\u002Fdocs\u002Fapi\u002Fkit\u002Fexamples","Examples","Nuxt Kit 工具的使用示例。",{"path":768,"title":58,"description":769},"\u002Fdocs\u002Fapi\u002Fkit\u002Flayers","Nuxt Kit 提供了帮助你处理层及其目录结构的工具。",{"path":771,"title":772,"description":773},"\u002Fdocs\u002Fapi\u002Fkit\u002Fprogrammatic","Programmatic Usage","Nuxt Kit 提供了一系列工具，帮助你以编程方式使用 Nuxt。这些函数允许你加载 Nuxt、构建 Nuxt，以及加载 Nuxt 配置。",{"path":775,"title":776,"description":777},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcompatibility","Compatibility","Nuxt Kit 提供了一系列工具，帮助你检查模块与不同 Nuxt 版本的兼容性。",{"path":779,"title":780,"description":781},"\u002Fdocs\u002Fapi\u002Fkit\u002Fautoimports","Auto-imports","Nuxt Kit 提供了一系列工具，帮助你处理自动导入。这些函数允许你注册自己的 utils、composables 和 Vue API。",{"path":783,"title":784,"description":785},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcomponents","Components","Nuxt Kit 提供了一系列工具，帮助你处理组件。你可以全局或局部注册组件，也可以添加要被扫描的目录。",{"path":787,"title":788,"description":789},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcontext","Context","Nuxt Kit 提供了一系列工具，帮助你处理上下文。",{"path":791,"title":792,"description":793},"\u002Fdocs\u002Fapi\u002Fkit\u002Fpages","Pages","Nuxt Kit 提供了一系列工具，帮助你创建和使用页面。你可以使用这些工具来操作页面配置或定义路由规则。",{"path":795,"title":796,"description":797},"\u002Fdocs\u002Fapi\u002Fkit\u002Flayout","Layout","Nuxt Kit 提供了一系列工具，帮助你处理布局。",{"path":799,"title":800,"description":801},"\u002Fdocs\u002Fapi\u002Fkit\u002Fhead","Head","Nuxt Kit 提供了一系列工具，帮助你在模块中管理 head 配置。",{"path":803,"title":804,"description":805},"\u002Fdocs\u002Fapi\u002Fkit\u002Fplugins","Plugins","Nuxt Kit 提供了一系列工具，帮助你创建和使用插件。你可以使用这些函数向你的模块添加插件或插件模板。",{"path":807,"title":330,"description":808},"\u002Fdocs\u002Fapi\u002Fadvanced\u002Fhooks","Nuxt 提供了一套强大的钩子系统，可以通过钩子扩展几乎各个方面。",{"path":810,"title":811,"description":812},"\u002Fdocs\u002Fapi\u002Fadvanced\u002Fimport-meta","Import meta","使用 `import.meta` 了解你的代码运行在何处。",{"path":814,"title":815,"description":816},"\u002Fdocs\u002Fapi\u002Fnuxt-config","Nuxt 配置","发现你可以在 nuxt.config.ts 文件中使用的所有选项。",{"path":818,"title":819,"description":820},"\u002Fdocs\u002Fapi","Nuxt API 参考","探索所有 Nuxt 内部机制：组件、组合式函数、工具函数、命令等等。",{"path":822,"title":823,"description":824},"\u002Fdocs\u002Fcommunity\u002Fgetting-help","获取帮助","我们是一个友好的开发者社区，很乐意提供帮助。",{"path":826,"title":827,"description":828},"\u002Fdocs\u002Fcommunity\u002Freporting-bugs","报告 Bug","开源中最有价值的角色之一，就是花时间把 bug 报告得清楚明白。",{"path":830,"title":831,"description":832},"\u002Fdocs\u002Fcommunity\u002Fcontribution","贡献","Nuxt 是一个社区项目——因此我们欢迎各种形式的贡献！❤️",{"path":834,"title":835,"description":836},"\u002Fdocs\u002Fcommunity\u002Fframework-contribution","框架贡献","关于向框架仓库贡献的一些具体要点。",{"path":838,"title":839,"description":840},"\u002Fdocs\u002Fcommunity\u002Froadmap","路线图","Nuxt 在不断发展，新功能和模块一直在增加。",{"path":842,"title":843,"description":844},"\u002Fdocs\u002Fcommunity\u002Fchangelog","发布","发现 Nuxt 及 Nuxt 官方模块的最新发布。",{"path":846,"title":847,"description":848},"\u002Fdocs\u002Fbridge\u002Foverview","概述","缩小与 Nuxt 3 的差异，并减轻迁移到 Nuxt 3 的负担。",{"path":850,"title":14,"description":851},"\u002Fdocs\u002Fbridge\u002Fconfiguration","了解如何根据你的需求配置 Nuxt Bridge。",{"path":853,"title":222,"description":854},"\u002Fdocs\u002Fbridge\u002Ftypescript","了解如何在 Nuxt Bridge 中使用 TypeScript。",{"path":856,"title":857,"description":858},"\u002Fdocs\u002Fbridge\u002Fbridge-composition-api","旧版 Composition API","了解如何使用 Nuxt Bridge 迁移到 Composition API。",{"path":860,"title":861,"description":862},"\u002Fdocs\u002Fbridge\u002Fplugins-and-middleware","插件和中间件","了解如何从 Nuxt 2 迁移到 Nuxt Bridge 的新插件和中间件。",{"path":864,"title":865,"description":866},"\u002Fdocs\u002Fbridge\u002Fnuxt3-compatible-api","新的 Composition API","Nuxt Bridge 实现了与 Nuxt 3 兼容的组合式函数。",{"path":868,"title":869,"description":870},"\u002Fdocs\u002Fbridge\u002Fmeta","Meta 标签","了解如何从 Nuxt 2 迁移到 Nuxt Bridge 的新 meta 标签。",{"path":872,"title":322,"description":873},"\u002Fdocs\u002Fbridge\u002Fruntime-config","Nuxt 提供了一个运行时配置 API，用于在应用中暴露配置和密钥。",{"path":875,"title":749,"description":876},"\u002Fdocs\u002Fbridge\u002Fnitro","通过 Nuxt Bridge 为你的 Nuxt 2 应用激活 Nitro。",{"path":878,"title":879,"description":880},"\u002Fdocs\u002Fbridge\u002Fvite","Vite","通过 Nuxt Bridge 为你的 Nuxt 2 应用激活 Vite。",{"path":882,"title":847,"description":883},"\u002Fdocs\u002Fmigration\u002Foverview","Nuxt 3 是对 Nuxt 2 的完整重写，并且基于一套全新的底层技术。",{"path":885,"title":886,"description":887},"\u002Fdocs\u002Fmigration\u002Fbundling","构建工具","了解如何从 Nuxt 2 迁移到 Nuxt 3 的构建工具。",{"path":889,"title":890,"description":891},"\u002Fdocs\u002Fmigration\u002Fserver","服务器","了解如何从 Nuxt 2 迁移到 Nuxt 3 的服务器。",{"path":893,"title":14,"description":894},"\u002Fdocs\u002Fmigration\u002Fconfiguration","了解如何从 Nuxt 2 迁移到 Nuxt 3 的新配置。",{"path":896,"title":214,"description":897},"\u002Fdocs\u002Fmigration\u002Fmodule-authors","了解如何从 Nuxt 2 迁移到 Nuxt 3 模块。",{"path":899,"title":206,"description":900},"\u002Fdocs\u002Fmigration\u002Fauto-imports","Nuxt 3 采用最小摩擦的方式，即在任何可能的地方自动导入组件和组合式函数。",{"path":902,"title":869,"description":903},"\u002Fdocs\u002Fmigration\u002Fmeta","管理你的 meta 标签，从 Nuxt 2 到 Nuxt 3。",{"path":905,"title":861,"description":906},"\u002Fdocs\u002Fmigration\u002Fplugins-and-middleware","了解如何从 Nuxt 2 迁移到 Nuxt 3 的插件和中间件。",{"path":908,"title":909,"description":910},"\u002Fdocs\u002Fmigration\u002Fpages-and-layouts","页面和布局","了解如何从 Nuxt 2 迁移到 Nuxt 3 的页面和布局。",{"path":912,"title":913,"description":914},"\u002Fdocs\u002Fmigration\u002Fcomponent-options","组件选项","了解如何从 Nuxt 2 的组件选项迁移到 Nuxt 3 的组合式函数。",{"path":916,"title":322,"description":917},"\u002Fdocs\u002Fmigration\u002Fruntime-config","了解如何从 Nuxt 2 迁移到 Nuxt 3 的运行时配置。",{"path":919,"title":920,"description":921},"\u002Fdocs\u002Freadme","Nuxt 文档","本仓库包含 Nuxt 的文档，托管于 https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Fintroduction",{"path":923,"title":924,"description":925},"\u002Fdocs\u002Ferrors\u002Fb5001","NUXT_B5001","缺少 compatibilityDate (兼容性日期)",{"path":927,"title":928,"description":929},"\u002Fdocs\u002Ferrors\u002Fb5003","NUXT_B5003","保留的 runtimeConfig.app 命名空间",{"path":931,"title":932,"description":933},"\u002Fdocs\u002Ferrors\u002Fb5004","NUXT_B5004","不支持外部配置文件",{"path":935,"title":936,"description":937},"\u002Fdocs\u002Ferrors\u002Fe1001","NUXT_E1001","在 Nuxt 上下文之外调用了组合式函数。",{"path":939,"title":940,"description":941},"\u002Fdocs\u002Ferrors\u002Fe1006","NUXT_E1006","onPrehydrate 未被构建流水线处理。",{"path":943,"title":944,"description":945},"\u002Fdocs\u002Ferrors\u002Fe1007","NUXT_E1007","编译期提示辅助函数在运行时被调用。",{"path":947,"title":948,"description":949},"\u002Fdocs\u002Ferrors\u002Fe2001","NUXT_E2001","外部导航未设置 external: true。",{"path":951,"title":952,"description":953},"\u002Fdocs\u002Ferrors\u002Fe2002","NUXT_E2002","使用了危险协议的导航。",{"path":955,"title":956,"description":957},"\u002Fdocs\u002Ferrors\u002Fe2003","NUXT_E2003","abortNavigation() 在中间件之外被调用。",{"path":959,"title":960,"description":961},"\u002Fdocs\u002Ferrors\u002Fe2004","NUXT_E2004","未知的路由中间件。",{"path":963,"title":964,"description":965},"\u002Fdocs\u002Ferrors\u002Fe2005","NUXT_E2005","在中间件内调用了 useRoute。",{"path":967,"title":968,"description":969},"\u002Fdocs\u002Ferrors\u002Fe2007","NUXT_E2007","在组件中于服务端调用了 setPageLayout。",{"path":971,"title":972,"description":973},"\u002Fdocs\u002Ferrors\u002Fe3001","NUXT_E3001","useFetch 的请求 URL 以 \"\u002F\u002F\" 开头。",{"path":975,"title":976,"description":977},"\u002Fdocs\u002Ferrors\u002Fe3008","NUXT_E3008","useAsyncData 的 key 必须是非空字符串。",{"path":979,"title":980,"description":981},"\u002Fdocs\u002Ferrors\u002Fe3009","NUXT_E3009","useAsyncData 的处理函数必须是一个函数。",{"path":983,"title":984,"description":985},"\u002Fdocs\u002Ferrors\u002Fe4012","NUXT_E4012","无法解析 island（岛）响应。",{"path":987,"title":988,"description":989},"\u002Fdocs\u002Ferrors\u002Fe4016","NUXT_E4016","嵌套页面无法显示，因为其父页面没有渲染 \u003CNuxtPage \u002F>。",{"path":991,"title":992,"description":993},"\u002Fdocs\u002Ferrors\u002Fe5001","NUXT_E5001","应用清单（app manifest）未启用。",{"path":995,"title":996,"description":997},"\u002Fdocs\u002Ferrors\u002Fe6001","NUXT_E6001","缺少 Unhead 实例。",{"path":999,"title":1000,"description":1001},"\u002Fdocs\u002Ferrors\u002Fe7001","NUXT_E7001","Payload URL 包含主机名。",{"path":1003,"title":1004,"description":1005},"\u002Fdocs\u002Ferrors\u002Fe7007","NUXT_E7007","useState 的初始化值必须是一个函数。",{"path":1007,"title":1008,"description":1009},"\u002Fdocs\u002Ferrors\u002Fe7008","NUXT_E7008","callOnce 的 fn 必须是一个函数。",{"path":1011,"title":1012,"description":1013},"\u002Fdocs\u002Ferrors\u002Fe7009","NUXT_E7009","useState 的 key 必须是一个字符串。",{"path":1015,"title":1016,"description":1017},"\u002Fdocs\u002Ferrors\u002Fe7010","NUXT_E7010","callOnce 的 key 必须是一个字符串。",{"id":1019,"title":741,"body":1020,"description":742,"extension":3795,"meta":3796,"navigation":3803,"path":740,"seo":3804,"stem":3805,"__hash__":3806},"docs\u002Fdocs\u002F4.api\u002F5.kit\u002F10.templates.md",{"type":1021,"value":1022,"toc":3765},"minimark",[1023,1040,1046,1053,1057,1378,1381,1456,1459,1469,1668,1671,1675,1678,1909,1919,2141,2146,2149,2152,2284,2287,2345,2348,2354,2494,2500,2555,2558,2562,2568,2727,2734,2861,2867,2870,2873,2990,2993,3048,3051,3056,3124,3127,3131,3134,3244,3247,3306,3311,3314,3317,3666,3669,3700,3703,3708,3761],[1024,1025,1026,1027,1031,1032,1035,1036,1039],"p",{},"模板允许你在开发和构建期间生成额外的文件。这些文件会在虚拟文件系统中可用，并可用于插件、布局、组件等。",[1028,1029,1030],"code",{},"addTemplate"," 和 ",[1028,1033,1034],{},"addTypeTemplate"," 允许你向 Nuxt 应用添加模板。",[1028,1037,1038],{},"updateTemplates"," 允许你重新生成匹配过滤条件的模板。",[1041,1042,1044],"h2",{"id":1043},"addtemplate",[1028,1045,1030],{},[1024,1047,1048,1049,1052],{},"在构建期间将给定的模板渲染到虚拟文件系统，并可选地写入项目 ",[1028,1050,1051],{},"buildDir"," 下的磁盘。",[1054,1055,1056],"h3",{"id":1056},"用法",[1058,1059,1064],"pre",{"className":1060,"code":1061,"language":1062,"meta":1063,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","import { addTemplate, defineNuxtModule } from '@nuxt\u002Fkit'\nimport { defu } from 'defu'\n\nexport default defineNuxtModule({\n  setup (options, nuxt) {\n    const globalMeta = defu(nuxt.options.app.head, {\n      charset: options.charset,\n      viewport: options.viewport,\n    })\n\n    addTemplate({\n      filename: 'meta.config.mjs',\n      getContents: () => 'export default ' + JSON.stringify({ globalMeta, mixinKey: 'setup' }),\n    })\n  },\n})\n","ts","twoslash",[1028,1065,1066,1106,1127,1134,1152,1177,1219,1239,1256,1265,1270,1280,1298,1357,1364,1370],{"__ignoreMap":354},[1067,1068,1071,1075,1079,1083,1086,1089,1092,1095,1099,1103],"span",{"class":1069,"line":1070},"line",1,[1067,1072,1074],{"class":1073},"szyBz","import",[1067,1076,1078],{"class":1077},"sF54B"," {",[1067,1080,1082],{"class":1081},"smVNa"," addTemplate",[1067,1084,1085],{"class":1077},",",[1067,1087,1088],{"class":1081}," defineNuxtModule",[1067,1090,1091],{"class":1077}," }",[1067,1093,1094],{"class":1073}," from",[1067,1096,1098],{"class":1097},"s0jeK"," '",[1067,1100,1102],{"class":1101},"s-Aze","@nuxt\u002Fkit",[1067,1104,1105],{"class":1097},"'\n",[1067,1107,1109,1111,1113,1116,1118,1120,1122,1125],{"class":1069,"line":1108},2,[1067,1110,1074],{"class":1073},[1067,1112,1078],{"class":1077},[1067,1114,1115],{"class":1081}," defu",[1067,1117,1091],{"class":1077},[1067,1119,1094],{"class":1073},[1067,1121,1098],{"class":1097},[1067,1123,1124],{"class":1101},"defu",[1067,1126,1105],{"class":1097},[1067,1128,1130],{"class":1069,"line":1129},3,[1067,1131,1133],{"emptyLinePlaceholder":1132},true,"\n",[1067,1135,1137,1140,1143,1146,1149],{"class":1069,"line":1136},4,[1067,1138,1139],{"class":1073},"export",[1067,1141,1142],{"class":1073}," default",[1067,1144,1088],{"class":1145},"srJn9",[1067,1147,1148],{"class":1081},"(",[1067,1150,1151],{"class":1077},"{\n",[1067,1153,1155,1159,1162,1166,1168,1171,1174],{"class":1069,"line":1154},5,[1067,1156,1158],{"class":1157},"syA7L","  setup",[1067,1160,1161],{"class":1077}," (",[1067,1163,1165],{"class":1164},"ssIVr","options",[1067,1167,1085],{"class":1077},[1067,1169,1170],{"class":1164}," nuxt",[1067,1172,1173],{"class":1077},")",[1067,1175,1176],{"class":1077}," {\n",[1067,1178,1180,1184,1188,1192,1194,1197,1200,1203,1205,1207,1210,1212,1215,1217],{"class":1069,"line":1179},6,[1067,1181,1183],{"class":1182},"sV7Px","    const",[1067,1185,1187],{"class":1186},"sJTDI"," globalMeta",[1067,1189,1191],{"class":1190},"sXPRQ"," =",[1067,1193,1115],{"class":1145},[1067,1195,1148],{"class":1196},"sOtFm",[1067,1198,1199],{"class":1081},"nuxt",[1067,1201,1202],{"class":1077},".",[1067,1204,1165],{"class":1081},[1067,1206,1202],{"class":1077},[1067,1208,1209],{"class":1081},"app",[1067,1211,1202],{"class":1077},[1067,1213,1214],{"class":1081},"head",[1067,1216,1085],{"class":1077},[1067,1218,1176],{"class":1077},[1067,1220,1222,1225,1228,1231,1233,1236],{"class":1069,"line":1221},7,[1067,1223,1224],{"class":1196},"      charset",[1067,1226,1227],{"class":1077},":",[1067,1229,1230],{"class":1081}," options",[1067,1232,1202],{"class":1077},[1067,1234,1235],{"class":1081},"charset",[1067,1237,1238],{"class":1077},",\n",[1067,1240,1242,1245,1247,1249,1251,1254],{"class":1069,"line":1241},8,[1067,1243,1244],{"class":1196},"      viewport",[1067,1246,1227],{"class":1077},[1067,1248,1230],{"class":1081},[1067,1250,1202],{"class":1077},[1067,1252,1253],{"class":1081},"viewport",[1067,1255,1238],{"class":1077},[1067,1257,1259,1262],{"class":1069,"line":1258},9,[1067,1260,1261],{"class":1077},"    }",[1067,1263,1264],{"class":1196},")\n",[1067,1266,1268],{"class":1069,"line":1267},10,[1067,1269,1133],{"emptyLinePlaceholder":1132},[1067,1271,1273,1276,1278],{"class":1069,"line":1272},11,[1067,1274,1275],{"class":1145},"    addTemplate",[1067,1277,1148],{"class":1196},[1067,1279,1151],{"class":1077},[1067,1281,1283,1286,1288,1290,1293,1296],{"class":1069,"line":1282},12,[1067,1284,1285],{"class":1196},"      filename",[1067,1287,1227],{"class":1077},[1067,1289,1098],{"class":1097},[1067,1291,1292],{"class":1101},"meta.config.mjs",[1067,1294,1295],{"class":1097},"'",[1067,1297,1238],{"class":1077},[1067,1299,1301,1304,1306,1309,1312,1314,1317,1319,1322,1325,1327,1330,1332,1335,1337,1339,1342,1344,1346,1349,1351,1353,1355],{"class":1069,"line":1300},13,[1067,1302,1303],{"class":1145},"      getContents",[1067,1305,1227],{"class":1077},[1067,1307,1308],{"class":1077}," ()",[1067,1310,1311],{"class":1182}," =>",[1067,1313,1098],{"class":1097},[1067,1315,1316],{"class":1101},"export default ",[1067,1318,1295],{"class":1097},[1067,1320,1321],{"class":1190}," +",[1067,1323,1324],{"class":1186}," JSON",[1067,1326,1202],{"class":1077},[1067,1328,1329],{"class":1145},"stringify",[1067,1331,1148],{"class":1196},[1067,1333,1334],{"class":1077},"{",[1067,1336,1187],{"class":1081},[1067,1338,1085],{"class":1077},[1067,1340,1341],{"class":1196}," mixinKey",[1067,1343,1227],{"class":1077},[1067,1345,1098],{"class":1097},[1067,1347,1348],{"class":1101},"setup",[1067,1350,1295],{"class":1097},[1067,1352,1091],{"class":1077},[1067,1354,1173],{"class":1196},[1067,1356,1238],{"class":1077},[1067,1358,1360,1362],{"class":1069,"line":1359},14,[1067,1361,1261],{"class":1077},[1067,1363,1264],{"class":1196},[1067,1365,1367],{"class":1069,"line":1366},15,[1067,1368,1369],{"class":1077},"  },\n",[1067,1371,1373,1376],{"class":1069,"line":1372},16,[1067,1374,1375],{"class":1077},"}",[1067,1377,1264],{"class":1081},[1054,1379,1380],{"id":1380},"类型",[1058,1382,1384],{"className":1060,"code":1383,"language":1062,"meta":1063,"style":354},"\u002F\u002F @errors: 2391\nimport type { NuxtTemplate, ResolvedNuxtTemplate } from '@nuxt\u002Fschema'\n\u002F\u002F ---cut---\nfunction addTemplate (template: NuxtTemplate | string): ResolvedNuxtTemplate\n",[1028,1385,1386,1392,1420,1425],{"__ignoreMap":354},[1067,1387,1388],{"class":1069,"line":1070},[1067,1389,1391],{"class":1390},"sZqJ9","\u002F\u002F @errors: 2391\n",[1067,1393,1394,1396,1399,1401,1404,1406,1409,1411,1413,1415,1418],{"class":1069,"line":1108},[1067,1395,1074],{"class":1073},[1067,1397,1398],{"class":1073}," type",[1067,1400,1078],{"class":1077},[1067,1402,1403],{"class":1081}," NuxtTemplate",[1067,1405,1085],{"class":1077},[1067,1407,1408],{"class":1081}," ResolvedNuxtTemplate",[1067,1410,1091],{"class":1077},[1067,1412,1094],{"class":1073},[1067,1414,1098],{"class":1097},[1067,1416,1417],{"class":1101},"@nuxt\u002Fschema",[1067,1419,1105],{"class":1097},[1067,1421,1422],{"class":1069,"line":1129},[1067,1423,1424],{"class":1390},"\u002F\u002F ---cut---\n",[1067,1426,1427,1430,1432,1434,1437,1439,1442,1445,1449,1451,1453],{"class":1069,"line":1136},[1067,1428,1429],{"class":1182},"function",[1067,1431,1082],{"class":1145},[1067,1433,1161],{"class":1077},[1067,1435,1436],{"class":1164},"template",[1067,1438,1227],{"class":1190},[1067,1440,1403],{"class":1441},"sJK67",[1067,1443,1444],{"class":1190}," |",[1067,1446,1448],{"class":1447},"seQRr"," string",[1067,1450,1173],{"class":1077},[1067,1452,1227],{"class":1190},[1067,1454,1455],{"class":1441}," ResolvedNuxtTemplate\n",[1054,1457,1458],{"id":1458},"参数",[1024,1460,1461,1464,1465,1468],{},[1462,1463,1436],"strong",{},"：一个模板对象，或一个带有模板路径的字符串。如果提供的是字符串，它会被转换为一个 ",[1028,1466,1467],{},"src"," 设为该字符串值的模板对象。如果提供的是模板对象，它必须包含以下属性：",[1470,1471,1472,1490],"table",{},[1473,1474,1475],"thead",{},[1476,1477,1478,1482,1484,1487],"tr",{},[1479,1480,1481],"th",{},"属性",[1479,1483,1380],{},[1479,1485,1486],{},"必填",[1479,1488,1489],{},"描述",[1491,1492,1493,1520,1547,1573,1591,1645],"tbody",{},[1476,1494,1495,1500,1505,1510],{},[1496,1497,1498],"td",{},[1028,1499,1467],{},[1496,1501,1502],{},[1028,1503,1504],{},"string",[1496,1506,1507],{},[1028,1508,1509],{},"false",[1496,1511,1512,1513,1515,1516,1519],{},"模板的路径。如果未提供 ",[1028,1514,1467],{},"，则必须改为提供 ",[1028,1517,1518],{},"getContents","。",[1476,1521,1522,1527,1531,1535],{},[1496,1523,1524],{},[1028,1525,1526],{},"filename",[1496,1528,1529],{},[1028,1530,1504],{},[1496,1532,1533],{},[1028,1534,1509],{},[1496,1536,1537,1538,1540,1541,1543,1544,1546],{},"模板的文件名。如果未提供 ",[1028,1539,1526],{},"，它会根据 ",[1028,1542,1467],{}," 路径生成。这种情况下，",[1028,1545,1467],{}," 选项是必需的。",[1476,1548,1549,1554,1558,1562],{},[1496,1550,1551],{},[1028,1552,1553],{},"dst",[1496,1555,1556],{},[1028,1557,1504],{},[1496,1559,1560],{},[1028,1561,1509],{},[1496,1563,1564,1565,1540,1567,1569,1570,1572],{},"目标文件的路径。如果未提供 ",[1028,1566,1553],{},[1028,1568,1526],{}," 路径和 nuxt 的 ",[1028,1571,1051],{}," 选项生成。",[1476,1574,1575,1579,1584,1588],{},[1496,1576,1577],{},[1028,1578,1165],{},[1496,1580,1581],{},[1028,1582,1583],{},"Options",[1496,1585,1586],{},[1028,1587,1509],{},[1496,1589,1590],{},"传给模板的选项。",[1476,1592,1593,1597,1632,1636],{},[1496,1594,1595],{},[1028,1596,1518],{},[1496,1598,1599],{},[1028,1600,1601,1603,1606,1608,1611,1613,1615,1618,1621,1624,1627,1629],{"className":1060,"language":1062,"style":354},[1067,1602,1148],{"class":1077},[1067,1604,1605],{"class":1164},"data",[1067,1607,1227],{"class":1190},[1067,1609,1610],{"class":1441}," Options",[1067,1612,1173],{"class":1077},[1067,1614,1311],{"class":1182},[1067,1616,1617],{"class":1081}," string ",[1067,1619,1620],{"class":1190},"|",[1067,1622,1623],{"class":1447}," Promise",[1067,1625,1626],{"class":1190},"\u003C",[1067,1628,1504],{"class":1081},[1067,1630,1631],{"class":1190},">",[1496,1633,1634],{},[1028,1635,1509],{},[1496,1637,1638,1639,1641,1642,1644],{},"一个会接收 ",[1028,1640,1165],{}," 对象的函数。它应返回一个字符串，或解析为字符串的 promise。如果提供了 ",[1028,1643,1467],{},"，该函数会被忽略。",[1476,1646,1647,1652,1657,1661],{},[1496,1648,1649],{},[1028,1650,1651],{},"write",[1496,1653,1654],{},[1028,1655,1656],{},"boolean",[1496,1658,1659],{},[1028,1660,1509],{},[1496,1662,1663,1664,1667],{},"如果设为 ",[1028,1665,1666],{},"true","，模板会被写入目标文件。否则，模板仅用于虚拟文件系统。",[1054,1669,1670],{"id":1670},"示例",[1672,1673,1674],"h4",{"id":1674},"为运行时插件创建虚拟文件",[1024,1676,1677],{},"在这个示例中，我们在模块内部合并一个对象，并在运行时插件中消费该结果。",[1058,1679,1681],{"className":1060,"code":1061,"filename":1680,"language":1062,"meta":1063,"style":354},"module.ts",[1028,1682,1683,1705,1723,1727,1739,1755,1785,1799,1813,1819,1823,1831,1845,1893,1899,1903],{"__ignoreMap":354},[1067,1684,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703],{"class":1069,"line":1070},[1067,1686,1074],{"class":1073},[1067,1688,1078],{"class":1077},[1067,1690,1082],{"class":1081},[1067,1692,1085],{"class":1077},[1067,1694,1088],{"class":1081},[1067,1696,1091],{"class":1077},[1067,1698,1094],{"class":1073},[1067,1700,1098],{"class":1097},[1067,1702,1102],{"class":1101},[1067,1704,1105],{"class":1097},[1067,1706,1707,1709,1711,1713,1715,1717,1719,1721],{"class":1069,"line":1108},[1067,1708,1074],{"class":1073},[1067,1710,1078],{"class":1077},[1067,1712,1115],{"class":1081},[1067,1714,1091],{"class":1077},[1067,1716,1094],{"class":1073},[1067,1718,1098],{"class":1097},[1067,1720,1124],{"class":1101},[1067,1722,1105],{"class":1097},[1067,1724,1725],{"class":1069,"line":1129},[1067,1726,1133],{"emptyLinePlaceholder":1132},[1067,1728,1729,1731,1733,1735,1737],{"class":1069,"line":1136},[1067,1730,1139],{"class":1073},[1067,1732,1142],{"class":1073},[1067,1734,1088],{"class":1145},[1067,1736,1148],{"class":1081},[1067,1738,1151],{"class":1077},[1067,1740,1741,1743,1745,1747,1749,1751,1753],{"class":1069,"line":1154},[1067,1742,1158],{"class":1157},[1067,1744,1161],{"class":1077},[1067,1746,1165],{"class":1164},[1067,1748,1085],{"class":1077},[1067,1750,1170],{"class":1164},[1067,1752,1173],{"class":1077},[1067,1754,1176],{"class":1077},[1067,1756,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783],{"class":1069,"line":1179},[1067,1758,1183],{"class":1182},[1067,1760,1187],{"class":1186},[1067,1762,1191],{"class":1190},[1067,1764,1115],{"class":1145},[1067,1766,1148],{"class":1196},[1067,1768,1199],{"class":1081},[1067,1770,1202],{"class":1077},[1067,1772,1165],{"class":1081},[1067,1774,1202],{"class":1077},[1067,1776,1209],{"class":1081},[1067,1778,1202],{"class":1077},[1067,1780,1214],{"class":1081},[1067,1782,1085],{"class":1077},[1067,1784,1176],{"class":1077},[1067,1786,1787,1789,1791,1793,1795,1797],{"class":1069,"line":1221},[1067,1788,1224],{"class":1196},[1067,1790,1227],{"class":1077},[1067,1792,1230],{"class":1081},[1067,1794,1202],{"class":1077},[1067,1796,1235],{"class":1081},[1067,1798,1238],{"class":1077},[1067,1800,1801,1803,1805,1807,1809,1811],{"class":1069,"line":1241},[1067,1802,1244],{"class":1196},[1067,1804,1227],{"class":1077},[1067,1806,1230],{"class":1081},[1067,1808,1202],{"class":1077},[1067,1810,1253],{"class":1081},[1067,1812,1238],{"class":1077},[1067,1814,1815,1817],{"class":1069,"line":1258},[1067,1816,1261],{"class":1077},[1067,1818,1264],{"class":1196},[1067,1820,1821],{"class":1069,"line":1267},[1067,1822,1133],{"emptyLinePlaceholder":1132},[1067,1824,1825,1827,1829],{"class":1069,"line":1272},[1067,1826,1275],{"class":1145},[1067,1828,1148],{"class":1196},[1067,1830,1151],{"class":1077},[1067,1832,1833,1835,1837,1839,1841,1843],{"class":1069,"line":1282},[1067,1834,1285],{"class":1196},[1067,1836,1227],{"class":1077},[1067,1838,1098],{"class":1097},[1067,1840,1292],{"class":1101},[1067,1842,1295],{"class":1097},[1067,1844,1238],{"class":1077},[1067,1846,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891],{"class":1069,"line":1300},[1067,1848,1303],{"class":1145},[1067,1850,1227],{"class":1077},[1067,1852,1308],{"class":1077},[1067,1854,1311],{"class":1182},[1067,1856,1098],{"class":1097},[1067,1858,1316],{"class":1101},[1067,1860,1295],{"class":1097},[1067,1862,1321],{"class":1190},[1067,1864,1324],{"class":1186},[1067,1866,1202],{"class":1077},[1067,1868,1329],{"class":1145},[1067,1870,1148],{"class":1196},[1067,1872,1334],{"class":1077},[1067,1874,1187],{"class":1081},[1067,1876,1085],{"class":1077},[1067,1878,1341],{"class":1196},[1067,1880,1227],{"class":1077},[1067,1882,1098],{"class":1097},[1067,1884,1348],{"class":1101},[1067,1886,1295],{"class":1097},[1067,1888,1091],{"class":1077},[1067,1890,1173],{"class":1196},[1067,1892,1238],{"class":1077},[1067,1894,1895,1897],{"class":1069,"line":1359},[1067,1896,1261],{"class":1077},[1067,1898,1264],{"class":1196},[1067,1900,1901],{"class":1069,"line":1366},[1067,1902,1369],{"class":1077},[1067,1904,1905,1907],{"class":1069,"line":1372},[1067,1906,1375],{"class":1077},[1067,1908,1264],{"class":1081},[1024,1910,1911,1912,1914,1915,1918],{},"在上面的模块中，我们生成了一个名为 ",[1028,1913,1292],{}," 的虚拟文件。在运行时插件中，我们可以使用 ",[1028,1916,1917],{},"#build"," 别名导入它：",[1058,1920,1923],{"className":1060,"code":1921,"filename":1922,"language":1062,"meta":354,"style":354},"import { createHead as createServerHead } from '@unhead\u002Fvue\u002Fserver'\nimport { createHead as createClientHead } from '@unhead\u002Fvue\u002Fclient'\nimport { defineNuxtPlugin } from '#imports'\n\u002F\u002F @ts-expect-error - 虚拟文件\nimport metaConfig from '#build\u002Fmeta.config.mjs'\n\nexport default defineNuxtPlugin((nuxtApp) => {\n  const createHead = import.meta.server ? createServerHead : createClientHead\n  const head = createHead()\n  head.push(metaConfig.globalMeta)\n\n  nuxtApp.vueApp.use(head)\n})\n","runtime\u002Fplugin.ts",[1028,1924,1925,1951,1975,1995,2000,2017,2021,2042,2074,2088,2110,2114,2135],{"__ignoreMap":354},[1067,1926,1927,1929,1931,1934,1937,1940,1942,1944,1946,1949],{"class":1069,"line":1070},[1067,1928,1074],{"class":1073},[1067,1930,1078],{"class":1077},[1067,1932,1933],{"class":1081}," createHead",[1067,1935,1936],{"class":1073}," as",[1067,1938,1939],{"class":1081}," createServerHead",[1067,1941,1091],{"class":1077},[1067,1943,1094],{"class":1073},[1067,1945,1098],{"class":1097},[1067,1947,1948],{"class":1101},"@unhead\u002Fvue\u002Fserver",[1067,1950,1105],{"class":1097},[1067,1952,1953,1955,1957,1959,1961,1964,1966,1968,1970,1973],{"class":1069,"line":1108},[1067,1954,1074],{"class":1073},[1067,1956,1078],{"class":1077},[1067,1958,1933],{"class":1081},[1067,1960,1936],{"class":1073},[1067,1962,1963],{"class":1081}," createClientHead",[1067,1965,1091],{"class":1077},[1067,1967,1094],{"class":1073},[1067,1969,1098],{"class":1097},[1067,1971,1972],{"class":1101},"@unhead\u002Fvue\u002Fclient",[1067,1974,1105],{"class":1097},[1067,1976,1977,1979,1981,1984,1986,1988,1990,1993],{"class":1069,"line":1129},[1067,1978,1074],{"class":1073},[1067,1980,1078],{"class":1077},[1067,1982,1983],{"class":1081}," defineNuxtPlugin",[1067,1985,1091],{"class":1077},[1067,1987,1094],{"class":1073},[1067,1989,1098],{"class":1097},[1067,1991,1992],{"class":1101},"#imports",[1067,1994,1105],{"class":1097},[1067,1996,1997],{"class":1069,"line":1136},[1067,1998,1999],{"class":1390},"\u002F\u002F @ts-expect-error - 虚拟文件\n",[1067,2001,2002,2004,2007,2010,2012,2015],{"class":1069,"line":1154},[1067,2003,1074],{"class":1073},[1067,2005,2006],{"class":1081}," metaConfig ",[1067,2008,2009],{"class":1073},"from",[1067,2011,1098],{"class":1097},[1067,2013,2014],{"class":1101},"#build\u002Fmeta.config.mjs",[1067,2016,1105],{"class":1097},[1067,2018,2019],{"class":1069,"line":1179},[1067,2020,1133],{"emptyLinePlaceholder":1132},[1067,2022,2023,2025,2027,2029,2031,2033,2036,2038,2040],{"class":1069,"line":1221},[1067,2024,1139],{"class":1073},[1067,2026,1142],{"class":1073},[1067,2028,1983],{"class":1145},[1067,2030,1148],{"class":1081},[1067,2032,1148],{"class":1077},[1067,2034,2035],{"class":1164},"nuxtApp",[1067,2037,1173],{"class":1077},[1067,2039,1311],{"class":1182},[1067,2041,1176],{"class":1077},[1067,2043,2044,2047,2049,2051,2054,2056,2059,2061,2063,2066,2068,2071],{"class":1069,"line":1241},[1067,2045,2046],{"class":1182},"  const",[1067,2048,1933],{"class":1186},[1067,2050,1191],{"class":1190},[1067,2052,2053],{"class":1073}," import",[1067,2055,1202],{"class":1077},[1067,2057,2058],{"class":1186},"meta",[1067,2060,1202],{"class":1077},[1067,2062,150],{"class":1081},[1067,2064,2065],{"class":1190}," ?",[1067,2067,1939],{"class":1081},[1067,2069,2070],{"class":1190}," :",[1067,2072,2073],{"class":1081}," createClientHead\n",[1067,2075,2076,2078,2081,2083,2085],{"class":1069,"line":1258},[1067,2077,2046],{"class":1182},[1067,2079,2080],{"class":1186}," head",[1067,2082,1191],{"class":1190},[1067,2084,1933],{"class":1145},[1067,2086,2087],{"class":1196},"()\n",[1067,2089,2090,2093,2095,2098,2100,2103,2105,2108],{"class":1069,"line":1267},[1067,2091,2092],{"class":1081},"  head",[1067,2094,1202],{"class":1077},[1067,2096,2097],{"class":1145},"push",[1067,2099,1148],{"class":1196},[1067,2101,2102],{"class":1081},"metaConfig",[1067,2104,1202],{"class":1077},[1067,2106,2107],{"class":1081},"globalMeta",[1067,2109,1264],{"class":1196},[1067,2111,2112],{"class":1069,"line":1272},[1067,2113,1133],{"emptyLinePlaceholder":1132},[1067,2115,2116,2119,2121,2124,2126,2129,2131,2133],{"class":1069,"line":1282},[1067,2117,2118],{"class":1081},"  nuxtApp",[1067,2120,1202],{"class":1077},[1067,2122,2123],{"class":1081},"vueApp",[1067,2125,1202],{"class":1077},[1067,2127,2128],{"class":1145},"use",[1067,2130,1148],{"class":1196},[1067,2132,1214],{"class":1081},[1067,2134,1264],{"class":1196},[1067,2136,2137,2139],{"class":1069,"line":1300},[1067,2138,1375],{"class":1077},[1067,2140,1264],{"class":1081},[1041,2142,2144],{"id":2143},"addtypetemplate",[1028,2145,1034],{},[1024,2147,2148],{},"在构建期间将给定模板渲染到项目 buildDir，并将其注册为类型。",[1054,2150,1056],{"id":2151},"用法-1",[1058,2153,2155],{"className":1060,"code":2154,"language":1062,"meta":1063,"style":354},"import { addTypeTemplate, defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  setup () {\n    addTypeTemplate({\n      filename: 'types\u002Fmarkdown.d.ts',\n      getContents: () => `declare module '*.md' {\n  import type { ComponentOptions } from 'vue'\n  const Component: ComponentOptions\n  export default Component\n}`,\n    })\n  },\n})\n",[1028,2156,2157,2180,2184,2196,2204,2213,2228,2244,2249,2254,2259,2268,2274,2278],{"__ignoreMap":354},[1067,2158,2159,2161,2163,2166,2168,2170,2172,2174,2176,2178],{"class":1069,"line":1070},[1067,2160,1074],{"class":1073},[1067,2162,1078],{"class":1077},[1067,2164,2165],{"class":1081}," addTypeTemplate",[1067,2167,1085],{"class":1077},[1067,2169,1088],{"class":1081},[1067,2171,1091],{"class":1077},[1067,2173,1094],{"class":1073},[1067,2175,1098],{"class":1097},[1067,2177,1102],{"class":1101},[1067,2179,1105],{"class":1097},[1067,2181,2182],{"class":1069,"line":1108},[1067,2183,1133],{"emptyLinePlaceholder":1132},[1067,2185,2186,2188,2190,2192,2194],{"class":1069,"line":1129},[1067,2187,1139],{"class":1073},[1067,2189,1142],{"class":1073},[1067,2191,1088],{"class":1145},[1067,2193,1148],{"class":1081},[1067,2195,1151],{"class":1077},[1067,2197,2198,2200,2202],{"class":1069,"line":1136},[1067,2199,1158],{"class":1157},[1067,2201,1308],{"class":1077},[1067,2203,1176],{"class":1077},[1067,2205,2206,2209,2211],{"class":1069,"line":1154},[1067,2207,2208],{"class":1145},"    addTypeTemplate",[1067,2210,1148],{"class":1196},[1067,2212,1151],{"class":1077},[1067,2214,2215,2217,2219,2221,2224,2226],{"class":1069,"line":1179},[1067,2216,1285],{"class":1196},[1067,2218,1227],{"class":1077},[1067,2220,1098],{"class":1097},[1067,2222,2223],{"class":1101},"types\u002Fmarkdown.d.ts",[1067,2225,1295],{"class":1097},[1067,2227,1238],{"class":1077},[1067,2229,2230,2232,2234,2236,2238,2241],{"class":1069,"line":1221},[1067,2231,1303],{"class":1145},[1067,2233,1227],{"class":1077},[1067,2235,1308],{"class":1077},[1067,2237,1311],{"class":1182},[1067,2239,2240],{"class":1097}," `",[1067,2242,2243],{"class":1101},"declare module '*.md' {\n",[1067,2245,2246],{"class":1069,"line":1241},[1067,2247,2248],{"class":1101},"  import type { ComponentOptions } from 'vue'\n",[1067,2250,2251],{"class":1069,"line":1258},[1067,2252,2253],{"class":1101},"  const Component: ComponentOptions\n",[1067,2255,2256],{"class":1069,"line":1267},[1067,2257,2258],{"class":1101},"  export default Component\n",[1067,2260,2261,2263,2266],{"class":1069,"line":1272},[1067,2262,1375],{"class":1101},[1067,2264,2265],{"class":1097},"`",[1067,2267,1238],{"class":1077},[1067,2269,2270,2272],{"class":1069,"line":1282},[1067,2271,1261],{"class":1077},[1067,2273,1264],{"class":1196},[1067,2275,2276],{"class":1069,"line":1300},[1067,2277,1369],{"class":1077},[1067,2279,2280,2282],{"class":1069,"line":1359},[1067,2281,1375],{"class":1077},[1067,2283,1264],{"class":1081},[1054,2285,1380],{"id":2286},"类型-1",[1058,2288,2290],{"className":1060,"code":2289,"language":1062,"meta":354,"style":354},"function addTypeTemplate (template: NuxtTypeTemplate | string, context?: { nitro?: boolean, nuxt?: boolean }): ResolvedNuxtTemplate\n",[1028,2291,2292],{"__ignoreMap":354},[1067,2293,2294,2296,2298,2300,2302,2304,2307,2309,2311,2313,2316,2319,2321,2325,2327,2330,2332,2334,2336,2338,2341,2343],{"class":1069,"line":1070},[1067,2295,1429],{"class":1182},[1067,2297,2165],{"class":1145},[1067,2299,1161],{"class":1077},[1067,2301,1436],{"class":1164},[1067,2303,1227],{"class":1190},[1067,2305,2306],{"class":1441}," NuxtTypeTemplate",[1067,2308,1444],{"class":1190},[1067,2310,1448],{"class":1447},[1067,2312,1085],{"class":1077},[1067,2314,2315],{"class":1164}," context",[1067,2317,2318],{"class":1190},"?:",[1067,2320,1078],{"class":1077},[1067,2322,2324],{"class":2323},"sP6_D"," nitro",[1067,2326,2318],{"class":1190},[1067,2328,2329],{"class":1447}," boolean",[1067,2331,1085],{"class":1077},[1067,2333,1170],{"class":2323},[1067,2335,2318],{"class":1190},[1067,2337,2329],{"class":1447},[1067,2339,2340],{"class":1077}," })",[1067,2342,1227],{"class":1190},[1067,2344,1455],{"class":1441},[1054,2346,1458],{"id":2347},"参数-1",[1024,2349,2350,1464,2352,1468],{},[1462,2351,1436],{},[1028,2353,1467],{},[1470,2355,2356,2368],{},[1473,2357,2358],{},[1476,2359,2360,2362,2364,2366],{},[1479,2361,1481],{},[1479,2363,1380],{},[1479,2365,1486],{},[1479,2367,1489],{},[1491,2369,2370,2390,2412,2434,2450],{},[1476,2371,2372,2376,2380,2384],{},[1496,2373,2374],{},[1028,2375,1467],{},[1496,2377,2378],{},[1028,2379,1504],{},[1496,2381,2382],{},[1028,2383,1509],{},[1496,2385,1512,2386,1515,2388,1519],{},[1028,2387,1467],{},[1028,2389,1518],{},[1476,2391,2392,2396,2400,2404],{},[1496,2393,2394],{},[1028,2395,1526],{},[1496,2397,2398],{},[1028,2399,1504],{},[1496,2401,2402],{},[1028,2403,1509],{},[1496,2405,1537,2406,1540,2408,1543,2410,1546],{},[1028,2407,1526],{},[1028,2409,1467],{},[1028,2411,1467],{},[1476,2413,2414,2418,2422,2426],{},[1496,2415,2416],{},[1028,2417,1553],{},[1496,2419,2420],{},[1028,2421,1504],{},[1496,2423,2424],{},[1028,2425,1509],{},[1496,2427,1564,2428,1540,2430,1569,2432,1572],{},[1028,2429,1553],{},[1028,2431,1526],{},[1028,2433,1051],{},[1476,2435,2436,2440,2444,2448],{},[1496,2437,2438],{},[1028,2439,1165],{},[1496,2441,2442],{},[1028,2443,1583],{},[1496,2445,2446],{},[1028,2447,1509],{},[1496,2449,1590],{},[1476,2451,2452,2456,2484,2488],{},[1496,2453,2454],{},[1028,2455,1518],{},[1496,2457,2458],{},[1028,2459,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482],{"className":1060,"language":1062,"style":354},[1067,2461,1148],{"class":1077},[1067,2463,1605],{"class":1164},[1067,2465,1227],{"class":1190},[1067,2467,1610],{"class":1441},[1067,2469,1173],{"class":1077},[1067,2471,1311],{"class":1182},[1067,2473,1617],{"class":1081},[1067,2475,1620],{"class":1190},[1067,2477,1623],{"class":1447},[1067,2479,1626],{"class":1190},[1067,2481,1504],{"class":1081},[1067,2483,1631],{"class":1190},[1496,2485,2486],{},[1028,2487,1509],{},[1496,2489,1638,2490,1641,2492,1644],{},[1028,2491,1165],{},[1028,2493,1467],{},[1024,2495,2496,2499],{},[1462,2497,2498],{},"context","：可以传入一个可选的 context 对象来控制类型被添加到的位置。如果省略，类型只会添加到 Nuxt 上下文。该对象支持以下属性：",[1470,2501,2502,2514],{},[1473,2503,2504],{},[1476,2505,2506,2508,2510,2512],{},[1479,2507,1481],{},[1479,2509,1380],{},[1479,2511,1486],{},[1479,2513,1489],{},[1491,2515,2516,2535],{},[1476,2517,2518,2522,2526,2530],{},[1496,2519,2520],{},[1028,2521,1199],{},[1496,2523,2524],{},[1028,2525,1656],{},[1496,2527,2528],{},[1028,2529,1509],{},[1496,2531,1663,2532,2534],{},[1028,2533,1666],{},"，类型会被添加到 Nuxt 上下文。",[1476,2536,2537,2542,2546,2550],{},[1496,2538,2539],{},[1028,2540,2541],{},"nitro",[1496,2543,2544],{},[1028,2545,1656],{},[1496,2547,2548],{},[1028,2549,1509],{},[1496,2551,1663,2552,2554],{},[1028,2553,1666],{},"，类型会被添加到 Nitro 上下文。",[1054,2556,1670],{"id":2557},"示例-1",[1672,2559,2561],{"id":2560},"向-nitro-上下文添加类型模板","向 Nitro 上下文添加类型模板",[1024,2563,2564,2565,2567],{},"默认情况下，",[1028,2566,1034],{}," 只将类型声明添加到 Nuxt 上下文。要同时将它们添加到 Nitro 上下文，请将 nitro 设为 true。",[1058,2569,2571],{"className":1060,"code":2570,"language":1062,"meta":1063,"style":354},"import { addTypeTemplate, defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  setup () {\n    addTypeTemplate({\n      filename: 'types\u002Fauth.d.ts',\n      getContents: () => `declare module '#auth-utils' {\n  interface User {\n    id: string;\n    name: string;\n  }\n\n}`,\n    }, {\n      nitro: true,\n    })\n  },\n})\n",[1028,2572,2573,2595,2599,2611,2619,2627,2642,2657,2662,2667,2672,2677,2681,2689,2696,2709,2715,2720],{"__ignoreMap":354},[1067,2574,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593],{"class":1069,"line":1070},[1067,2576,1074],{"class":1073},[1067,2578,1078],{"class":1077},[1067,2580,2165],{"class":1081},[1067,2582,1085],{"class":1077},[1067,2584,1088],{"class":1081},[1067,2586,1091],{"class":1077},[1067,2588,1094],{"class":1073},[1067,2590,1098],{"class":1097},[1067,2592,1102],{"class":1101},[1067,2594,1105],{"class":1097},[1067,2596,2597],{"class":1069,"line":1108},[1067,2598,1133],{"emptyLinePlaceholder":1132},[1067,2600,2601,2603,2605,2607,2609],{"class":1069,"line":1129},[1067,2602,1139],{"class":1073},[1067,2604,1142],{"class":1073},[1067,2606,1088],{"class":1145},[1067,2608,1148],{"class":1081},[1067,2610,1151],{"class":1077},[1067,2612,2613,2615,2617],{"class":1069,"line":1136},[1067,2614,1158],{"class":1157},[1067,2616,1308],{"class":1077},[1067,2618,1176],{"class":1077},[1067,2620,2621,2623,2625],{"class":1069,"line":1154},[1067,2622,2208],{"class":1145},[1067,2624,1148],{"class":1196},[1067,2626,1151],{"class":1077},[1067,2628,2629,2631,2633,2635,2638,2640],{"class":1069,"line":1179},[1067,2630,1285],{"class":1196},[1067,2632,1227],{"class":1077},[1067,2634,1098],{"class":1097},[1067,2636,2637],{"class":1101},"types\u002Fauth.d.ts",[1067,2639,1295],{"class":1097},[1067,2641,1238],{"class":1077},[1067,2643,2644,2646,2648,2650,2652,2654],{"class":1069,"line":1221},[1067,2645,1303],{"class":1145},[1067,2647,1227],{"class":1077},[1067,2649,1308],{"class":1077},[1067,2651,1311],{"class":1182},[1067,2653,2240],{"class":1097},[1067,2655,2656],{"class":1101},"declare module '#auth-utils' {\n",[1067,2658,2659],{"class":1069,"line":1241},[1067,2660,2661],{"class":1101},"  interface User {\n",[1067,2663,2664],{"class":1069,"line":1258},[1067,2665,2666],{"class":1101},"    id: string;\n",[1067,2668,2669],{"class":1069,"line":1267},[1067,2670,2671],{"class":1101},"    name: string;\n",[1067,2673,2674],{"class":1069,"line":1272},[1067,2675,2676],{"class":1101},"  }\n",[1067,2678,2679],{"class":1069,"line":1282},[1067,2680,1133],{"emptyLinePlaceholder":1132},[1067,2682,2683,2685,2687],{"class":1069,"line":1300},[1067,2684,1375],{"class":1101},[1067,2686,2265],{"class":1097},[1067,2688,1238],{"class":1077},[1067,2690,2691,2694],{"class":1069,"line":1359},[1067,2692,2693],{"class":1077},"    },",[1067,2695,1176],{"class":1077},[1067,2697,2698,2701,2703,2707],{"class":1069,"line":1366},[1067,2699,2700],{"class":1196},"      nitro",[1067,2702,1227],{"class":1077},[1067,2704,2706],{"class":2705},"si1Qm"," true",[1067,2708,1238],{"class":1077},[1067,2710,2711,2713],{"class":1069,"line":1372},[1067,2712,1261],{"class":1077},[1067,2714,1264],{"class":1196},[1067,2716,2718],{"class":1069,"line":2717},17,[1067,2719,1369],{"class":1077},[1067,2721,2723,2725],{"class":1069,"line":2722},18,[1067,2724,1375],{"class":1077},[1067,2726,1264],{"class":1081},[1024,2728,2729,2730,2733],{},"这样就允许 ",[1028,2731,2732],{},"#auth-utils"," 模块在 Nitro 上下文中被使用。",[1058,2735,2738],{"className":1060,"code":2736,"filename":2737,"language":1062,"meta":354,"style":354},"import type { User } from '#auth-utils'\n\nexport default eventHandler(() => {\n  const user: User = {\n    id: '123',\n    name: 'John Doe',\n  }\n\n  \u002F\u002F 使用该 user 做点什么\n\n  return user\n})\n","server\u002Fapi\u002Fauth.ts",[1028,2739,2740,2761,2765,2783,2798,2814,2830,2834,2838,2843,2847,2855],{"__ignoreMap":354},[1067,2741,2742,2744,2746,2748,2751,2753,2755,2757,2759],{"class":1069,"line":1070},[1067,2743,1074],{"class":1073},[1067,2745,1398],{"class":1073},[1067,2747,1078],{"class":1077},[1067,2749,2750],{"class":1081}," User",[1067,2752,1091],{"class":1077},[1067,2754,1094],{"class":1073},[1067,2756,1098],{"class":1097},[1067,2758,2732],{"class":1101},[1067,2760,1105],{"class":1097},[1067,2762,2763],{"class":1069,"line":1108},[1067,2764,1133],{"emptyLinePlaceholder":1132},[1067,2766,2767,2769,2771,2774,2776,2779,2781],{"class":1069,"line":1129},[1067,2768,1139],{"class":1073},[1067,2770,1142],{"class":1073},[1067,2772,2773],{"class":1145}," eventHandler",[1067,2775,1148],{"class":1081},[1067,2777,2778],{"class":1077},"()",[1067,2780,1311],{"class":1182},[1067,2782,1176],{"class":1077},[1067,2784,2785,2787,2790,2792,2794,2796],{"class":1069,"line":1136},[1067,2786,2046],{"class":1182},[1067,2788,2789],{"class":1186}," user",[1067,2791,1227],{"class":1190},[1067,2793,2750],{"class":1441},[1067,2795,1191],{"class":1190},[1067,2797,1176],{"class":1077},[1067,2799,2800,2803,2805,2807,2810,2812],{"class":1069,"line":1154},[1067,2801,2802],{"class":1196},"    id",[1067,2804,1227],{"class":1077},[1067,2806,1098],{"class":1097},[1067,2808,2809],{"class":1101},"123",[1067,2811,1295],{"class":1097},[1067,2813,1238],{"class":1077},[1067,2815,2816,2819,2821,2823,2826,2828],{"class":1069,"line":1179},[1067,2817,2818],{"class":1196},"    name",[1067,2820,1227],{"class":1077},[1067,2822,1098],{"class":1097},[1067,2824,2825],{"class":1101},"John Doe",[1067,2827,1295],{"class":1097},[1067,2829,1238],{"class":1077},[1067,2831,2832],{"class":1069,"line":1221},[1067,2833,2676],{"class":1077},[1067,2835,2836],{"class":1069,"line":1241},[1067,2837,1133],{"emptyLinePlaceholder":1132},[1067,2839,2840],{"class":1069,"line":1258},[1067,2841,2842],{"class":1390},"  \u002F\u002F 使用该 user 做点什么\n",[1067,2844,2845],{"class":1069,"line":1267},[1067,2846,1133],{"emptyLinePlaceholder":1132},[1067,2848,2849,2852],{"class":1069,"line":1272},[1067,2850,2851],{"class":1073},"  return",[1067,2853,2854],{"class":1081}," user\n",[1067,2856,2857,2859],{"class":1069,"line":1282},[1067,2858,1375],{"class":1077},[1067,2860,1264],{"class":1081},[1041,2862,2864],{"id":2863},"addservertemplate",[1028,2865,2866],{},"addServerTemplate",[1024,2868,2869],{},"添加一个可在 Nuxt Nitro 服务器构建中使用的虚拟文件。",[1054,2871,1056],{"id":2872},"用法-2",[1058,2874,2876],{"className":1060,"code":2875,"language":1062,"meta":1063,"style":354},"import { addServerTemplate, defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  setup () {\n    addServerTemplate({\n      filename: '#my-module\u002Ftest.mjs',\n      getContents () {\n        return 'export const test = 123'\n      },\n    })\n  },\n})\n",[1028,2877,2878,2901,2905,2917,2925,2934,2949,2957,2969,2974,2980,2984],{"__ignoreMap":354},[1067,2879,2880,2882,2884,2887,2889,2891,2893,2895,2897,2899],{"class":1069,"line":1070},[1067,2881,1074],{"class":1073},[1067,2883,1078],{"class":1077},[1067,2885,2886],{"class":1081}," addServerTemplate",[1067,2888,1085],{"class":1077},[1067,2890,1088],{"class":1081},[1067,2892,1091],{"class":1077},[1067,2894,1094],{"class":1073},[1067,2896,1098],{"class":1097},[1067,2898,1102],{"class":1101},[1067,2900,1105],{"class":1097},[1067,2902,2903],{"class":1069,"line":1108},[1067,2904,1133],{"emptyLinePlaceholder":1132},[1067,2906,2907,2909,2911,2913,2915],{"class":1069,"line":1129},[1067,2908,1139],{"class":1073},[1067,2910,1142],{"class":1073},[1067,2912,1088],{"class":1145},[1067,2914,1148],{"class":1081},[1067,2916,1151],{"class":1077},[1067,2918,2919,2921,2923],{"class":1069,"line":1136},[1067,2920,1158],{"class":1157},[1067,2922,1308],{"class":1077},[1067,2924,1176],{"class":1077},[1067,2926,2927,2930,2932],{"class":1069,"line":1154},[1067,2928,2929],{"class":1145},"    addServerTemplate",[1067,2931,1148],{"class":1196},[1067,2933,1151],{"class":1077},[1067,2935,2936,2938,2940,2942,2945,2947],{"class":1069,"line":1179},[1067,2937,1285],{"class":1196},[1067,2939,1227],{"class":1077},[1067,2941,1098],{"class":1097},[1067,2943,2944],{"class":1101},"#my-module\u002Ftest.mjs",[1067,2946,1295],{"class":1097},[1067,2948,1238],{"class":1077},[1067,2950,2951,2953,2955],{"class":1069,"line":1221},[1067,2952,1303],{"class":1157},[1067,2954,1308],{"class":1077},[1067,2956,1176],{"class":1077},[1067,2958,2959,2962,2964,2967],{"class":1069,"line":1241},[1067,2960,2961],{"class":1073},"        return",[1067,2963,1098],{"class":1097},[1067,2965,2966],{"class":1101},"export const test = 123",[1067,2968,1105],{"class":1097},[1067,2970,2971],{"class":1069,"line":1258},[1067,2972,2973],{"class":1077},"      },\n",[1067,2975,2976,2978],{"class":1069,"line":1267},[1067,2977,1261],{"class":1077},[1067,2979,1264],{"class":1196},[1067,2981,2982],{"class":1069,"line":1272},[1067,2983,1369],{"class":1077},[1067,2985,2986,2988],{"class":1069,"line":1282},[1067,2987,1375],{"class":1077},[1067,2989,1264],{"class":1081},[1054,2991,1380],{"id":2992},"类型-2",[1058,2994,2996],{"className":1060,"code":2995,"language":1062,"meta":1063,"style":354},"\u002F\u002F @errors: 2391\nimport type { NuxtServerTemplate } from '@nuxt\u002Fschema'\n\u002F\u002F ---cut---\nfunction addServerTemplate (template: NuxtServerTemplate): NuxtServerTemplate\n",[1028,2997,2998,3002,3023,3027],{"__ignoreMap":354},[1067,2999,3000],{"class":1069,"line":1070},[1067,3001,1391],{"class":1390},[1067,3003,3004,3006,3008,3010,3013,3015,3017,3019,3021],{"class":1069,"line":1108},[1067,3005,1074],{"class":1073},[1067,3007,1398],{"class":1073},[1067,3009,1078],{"class":1077},[1067,3011,3012],{"class":1081}," NuxtServerTemplate",[1067,3014,1091],{"class":1077},[1067,3016,1094],{"class":1073},[1067,3018,1098],{"class":1097},[1067,3020,1417],{"class":1101},[1067,3022,1105],{"class":1097},[1067,3024,3025],{"class":1069,"line":1129},[1067,3026,1424],{"class":1390},[1067,3028,3029,3031,3033,3035,3037,3039,3041,3043,3045],{"class":1069,"line":1136},[1067,3030,1429],{"class":1182},[1067,3032,2886],{"class":1145},[1067,3034,1161],{"class":1077},[1067,3036,1436],{"class":1164},[1067,3038,1227],{"class":1190},[1067,3040,3012],{"class":1441},[1067,3042,1173],{"class":1077},[1067,3044,1227],{"class":1190},[1067,3046,3047],{"class":1441}," NuxtServerTemplate\n",[1054,3049,1458],{"id":3050},"参数-2",[1024,3052,3053,3055],{},[1462,3054,1436],{},"：一个模板对象。它必须包含以下属性：",[1470,3057,3058,3070],{},[1473,3059,3060],{},[1476,3061,3062,3064,3066,3068],{},[1479,3063,1481],{},[1479,3065,1380],{},[1479,3067,1486],{},[1479,3069,1489],{},[1491,3071,3072,3089],{},[1476,3073,3074,3078,3082,3086],{},[1496,3075,3076],{},[1028,3077,1526],{},[1496,3079,3080],{},[1028,3081,1504],{},[1496,3083,3084],{},[1028,3085,1666],{},[1496,3087,3088],{},"模板的文件名。",[1476,3090,3091,3095,3115,3119],{},[1496,3092,3093],{},[1028,3094,1518],{},[1496,3096,3097],{},[1028,3098,3099,3101,3103,3105,3107,3109,3111,3113],{"className":1060,"language":1062,"style":354},[1067,3100,2778],{"class":1077},[1067,3102,1311],{"class":1182},[1067,3104,1617],{"class":1081},[1067,3106,1620],{"class":1190},[1067,3108,1623],{"class":1447},[1067,3110,1626],{"class":1190},[1067,3112,1504],{"class":1081},[1067,3114,1631],{"class":1190},[1496,3116,3117],{},[1028,3118,1666],{},[1496,3120,1638,3121,3123],{},[1028,3122,1165],{}," 对象的函数。它应返回一个字符串，或解析为字符串的 promise。",[1054,3125,1670],{"id":3126},"示例-2",[1054,3128,3130],{"id":3129},"为-nitro-创建虚拟文件","为 Nitro 创建虚拟文件",[1024,3132,3133],{},"在这个示例中，我们创建一个可在 Nuxt Nitro 服务器构建中使用的虚拟文件。",[1058,3135,3136],{"className":1060,"code":2875,"language":1062,"meta":1063,"style":354},[1028,3137,3138,3160,3164,3176,3184,3192,3206,3214,3224,3228,3234,3238],{"__ignoreMap":354},[1067,3139,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158],{"class":1069,"line":1070},[1067,3141,1074],{"class":1073},[1067,3143,1078],{"class":1077},[1067,3145,2886],{"class":1081},[1067,3147,1085],{"class":1077},[1067,3149,1088],{"class":1081},[1067,3151,1091],{"class":1077},[1067,3153,1094],{"class":1073},[1067,3155,1098],{"class":1097},[1067,3157,1102],{"class":1101},[1067,3159,1105],{"class":1097},[1067,3161,3162],{"class":1069,"line":1108},[1067,3163,1133],{"emptyLinePlaceholder":1132},[1067,3165,3166,3168,3170,3172,3174],{"class":1069,"line":1129},[1067,3167,1139],{"class":1073},[1067,3169,1142],{"class":1073},[1067,3171,1088],{"class":1145},[1067,3173,1148],{"class":1081},[1067,3175,1151],{"class":1077},[1067,3177,3178,3180,3182],{"class":1069,"line":1136},[1067,3179,1158],{"class":1157},[1067,3181,1308],{"class":1077},[1067,3183,1176],{"class":1077},[1067,3185,3186,3188,3190],{"class":1069,"line":1154},[1067,3187,2929],{"class":1145},[1067,3189,1148],{"class":1196},[1067,3191,1151],{"class":1077},[1067,3193,3194,3196,3198,3200,3202,3204],{"class":1069,"line":1179},[1067,3195,1285],{"class":1196},[1067,3197,1227],{"class":1077},[1067,3199,1098],{"class":1097},[1067,3201,2944],{"class":1101},[1067,3203,1295],{"class":1097},[1067,3205,1238],{"class":1077},[1067,3207,3208,3210,3212],{"class":1069,"line":1221},[1067,3209,1303],{"class":1157},[1067,3211,1308],{"class":1077},[1067,3213,1176],{"class":1077},[1067,3215,3216,3218,3220,3222],{"class":1069,"line":1241},[1067,3217,2961],{"class":1073},[1067,3219,1098],{"class":1097},[1067,3221,2966],{"class":1101},[1067,3223,1105],{"class":1097},[1067,3225,3226],{"class":1069,"line":1258},[1067,3227,2973],{"class":1077},[1067,3229,3230,3232],{"class":1069,"line":1267},[1067,3231,1261],{"class":1077},[1067,3233,1264],{"class":1196},[1067,3235,3236],{"class":1069,"line":1272},[1067,3237,1369],{"class":1077},[1067,3239,3240,3242],{"class":1069,"line":1282},[1067,3241,1375],{"class":1077},[1067,3243,1264],{"class":1081},[1024,3245,3246],{},"然后在运行时文件中：",[1058,3248,3251],{"className":1060,"code":3249,"filename":3250,"language":1062,"meta":354,"style":354},"import { test } from '#my-module\u002Ftest.js'\n\nexport default eventHandler(() => {\n  return test\n})\n","server\u002Fapi\u002Ftest.ts",[1028,3252,3253,3273,3277,3293,3300],{"__ignoreMap":354},[1067,3254,3255,3257,3259,3262,3264,3266,3268,3271],{"class":1069,"line":1070},[1067,3256,1074],{"class":1073},[1067,3258,1078],{"class":1077},[1067,3260,3261],{"class":1081}," test",[1067,3263,1091],{"class":1077},[1067,3265,1094],{"class":1073},[1067,3267,1098],{"class":1097},[1067,3269,3270],{"class":1101},"#my-module\u002Ftest.js",[1067,3272,1105],{"class":1097},[1067,3274,3275],{"class":1069,"line":1108},[1067,3276,1133],{"emptyLinePlaceholder":1132},[1067,3278,3279,3281,3283,3285,3287,3289,3291],{"class":1069,"line":1129},[1067,3280,1139],{"class":1073},[1067,3282,1142],{"class":1073},[1067,3284,2773],{"class":1145},[1067,3286,1148],{"class":1081},[1067,3288,2778],{"class":1077},[1067,3290,1311],{"class":1182},[1067,3292,1176],{"class":1077},[1067,3294,3295,3297],{"class":1069,"line":1136},[1067,3296,2851],{"class":1073},[1067,3298,3299],{"class":1081}," test\n",[1067,3301,3302,3304],{"class":1069,"line":1154},[1067,3303,1375],{"class":1077},[1067,3305,1264],{"class":1081},[1041,3307,3309],{"id":3308},"updatetemplates",[1028,3310,1038],{},[1024,3312,3313],{},"重新生成匹配过滤条件的模板。如果未提供过滤条件，所有模板都会被重新生成。",[1054,3315,1056],{"id":3316},"用法-3",[1058,3318,3320],{"className":1060,"code":3319,"language":1062,"meta":354,"style":354},"import { defineNuxtModule, updateTemplates } from '@nuxt\u002Fkit'\nimport { resolve } from 'pathe'\n\nexport default defineNuxtModule({\n  setup (options, nuxt) {\n    const updateTemplatePaths = [\n      resolve(nuxt.options.srcDir, 'pages'),\n    ]\n    \u002F\u002F 当 pages 中的某个文件发生变化时，监视并重建 routes 模板列表\n    nuxt.hook('builder:watch', async (event, relativePath) => {\n      if (event === 'change') {\n        return\n      }\n\n      const path = resolve(nuxt.options.srcDir, relativePath)\n      if (updateTemplatePaths.some(dir => path.startsWith(dir))) {\n        await updateTemplates({\n          filter: template => template.filename === 'routes.mjs',\n        })\n      }\n    })\n  },\n})\n",[1028,3321,3322,3345,3365,3369,3381,3397,3409,3439,3444,3449,3489,3513,3518,3523,3527,3557,3594,3605,3634,3642,3647,3654,3659],{"__ignoreMap":354},[1067,3323,3324,3326,3328,3330,3332,3335,3337,3339,3341,3343],{"class":1069,"line":1070},[1067,3325,1074],{"class":1073},[1067,3327,1078],{"class":1077},[1067,3329,1088],{"class":1081},[1067,3331,1085],{"class":1077},[1067,3333,3334],{"class":1081}," updateTemplates",[1067,3336,1091],{"class":1077},[1067,3338,1094],{"class":1073},[1067,3340,1098],{"class":1097},[1067,3342,1102],{"class":1101},[1067,3344,1105],{"class":1097},[1067,3346,3347,3349,3351,3354,3356,3358,3360,3363],{"class":1069,"line":1108},[1067,3348,1074],{"class":1073},[1067,3350,1078],{"class":1077},[1067,3352,3353],{"class":1081}," resolve",[1067,3355,1091],{"class":1077},[1067,3357,1094],{"class":1073},[1067,3359,1098],{"class":1097},[1067,3361,3362],{"class":1101},"pathe",[1067,3364,1105],{"class":1097},[1067,3366,3367],{"class":1069,"line":1129},[1067,3368,1133],{"emptyLinePlaceholder":1132},[1067,3370,3371,3373,3375,3377,3379],{"class":1069,"line":1136},[1067,3372,1139],{"class":1073},[1067,3374,1142],{"class":1073},[1067,3376,1088],{"class":1145},[1067,3378,1148],{"class":1081},[1067,3380,1151],{"class":1077},[1067,3382,3383,3385,3387,3389,3391,3393,3395],{"class":1069,"line":1154},[1067,3384,1158],{"class":1157},[1067,3386,1161],{"class":1077},[1067,3388,1165],{"class":1164},[1067,3390,1085],{"class":1077},[1067,3392,1170],{"class":1164},[1067,3394,1173],{"class":1077},[1067,3396,1176],{"class":1077},[1067,3398,3399,3401,3404,3406],{"class":1069,"line":1179},[1067,3400,1183],{"class":1182},[1067,3402,3403],{"class":1186}," updateTemplatePaths",[1067,3405,1191],{"class":1190},[1067,3407,3408],{"class":1196}," [\n",[1067,3410,3411,3414,3416,3418,3420,3422,3424,3427,3429,3431,3433,3435,3437],{"class":1069,"line":1221},[1067,3412,3413],{"class":1145},"      resolve",[1067,3415,1148],{"class":1196},[1067,3417,1199],{"class":1081},[1067,3419,1202],{"class":1077},[1067,3421,1165],{"class":1081},[1067,3423,1202],{"class":1077},[1067,3425,3426],{"class":1081},"srcDir",[1067,3428,1085],{"class":1077},[1067,3430,1098],{"class":1097},[1067,3432,106],{"class":1101},[1067,3434,1295],{"class":1097},[1067,3436,1173],{"class":1196},[1067,3438,1238],{"class":1077},[1067,3440,3441],{"class":1069,"line":1241},[1067,3442,3443],{"class":1196},"    ]\n",[1067,3445,3446],{"class":1069,"line":1258},[1067,3447,3448],{"class":1390},"    \u002F\u002F 当 pages 中的某个文件发生变化时，监视并重建 routes 模板列表\n",[1067,3450,3451,3454,3456,3459,3461,3463,3466,3468,3470,3473,3475,3478,3480,3483,3485,3487],{"class":1069,"line":1267},[1067,3452,3453],{"class":1081},"    nuxt",[1067,3455,1202],{"class":1077},[1067,3457,3458],{"class":1145},"hook",[1067,3460,1148],{"class":1196},[1067,3462,1295],{"class":1097},[1067,3464,3465],{"class":1101},"builder:watch",[1067,3467,1295],{"class":1097},[1067,3469,1085],{"class":1077},[1067,3471,3472],{"class":1182}," async",[1067,3474,1161],{"class":1077},[1067,3476,3477],{"class":1164},"event",[1067,3479,1085],{"class":1077},[1067,3481,3482],{"class":1164}," relativePath",[1067,3484,1173],{"class":1077},[1067,3486,1311],{"class":1182},[1067,3488,1176],{"class":1077},[1067,3490,3491,3494,3496,3498,3501,3503,3506,3508,3511],{"class":1069,"line":1272},[1067,3492,3493],{"class":1073},"      if",[1067,3495,1161],{"class":1196},[1067,3497,3477],{"class":1081},[1067,3499,3500],{"class":1190}," ===",[1067,3502,1098],{"class":1097},[1067,3504,3505],{"class":1101},"change",[1067,3507,1295],{"class":1097},[1067,3509,3510],{"class":1196},") ",[1067,3512,1151],{"class":1077},[1067,3514,3515],{"class":1069,"line":1282},[1067,3516,3517],{"class":1073},"        return\n",[1067,3519,3520],{"class":1069,"line":1300},[1067,3521,3522],{"class":1077},"      }\n",[1067,3524,3525],{"class":1069,"line":1359},[1067,3526,1133],{"emptyLinePlaceholder":1132},[1067,3528,3529,3532,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555],{"class":1069,"line":1366},[1067,3530,3531],{"class":1182},"      const",[1067,3533,3534],{"class":1186}," path",[1067,3536,1191],{"class":1190},[1067,3538,3353],{"class":1145},[1067,3540,1148],{"class":1196},[1067,3542,1199],{"class":1081},[1067,3544,1202],{"class":1077},[1067,3546,1165],{"class":1081},[1067,3548,1202],{"class":1077},[1067,3550,3426],{"class":1081},[1067,3552,1085],{"class":1077},[1067,3554,3482],{"class":1081},[1067,3556,1264],{"class":1196},[1067,3558,3559,3561,3563,3566,3568,3571,3573,3576,3578,3580,3582,3585,3587,3589,3592],{"class":1069,"line":1372},[1067,3560,3493],{"class":1073},[1067,3562,1161],{"class":1196},[1067,3564,3565],{"class":1081},"updateTemplatePaths",[1067,3567,1202],{"class":1077},[1067,3569,3570],{"class":1145},"some",[1067,3572,1148],{"class":1196},[1067,3574,3575],{"class":1164},"dir",[1067,3577,1311],{"class":1182},[1067,3579,3534],{"class":1081},[1067,3581,1202],{"class":1077},[1067,3583,3584],{"class":1145},"startsWith",[1067,3586,1148],{"class":1196},[1067,3588,3575],{"class":1081},[1067,3590,3591],{"class":1196},"))) ",[1067,3593,1151],{"class":1077},[1067,3595,3596,3599,3601,3603],{"class":1069,"line":2717},[1067,3597,3598],{"class":1073},"        await",[1067,3600,3334],{"class":1145},[1067,3602,1148],{"class":1196},[1067,3604,1151],{"class":1077},[1067,3606,3607,3610,3612,3615,3617,3619,3621,3623,3625,3627,3630,3632],{"class":1069,"line":2722},[1067,3608,3609],{"class":1145},"          filter",[1067,3611,1227],{"class":1077},[1067,3613,3614],{"class":1164}," template",[1067,3616,1311],{"class":1182},[1067,3618,3614],{"class":1081},[1067,3620,1202],{"class":1077},[1067,3622,1526],{"class":1081},[1067,3624,3500],{"class":1190},[1067,3626,1098],{"class":1097},[1067,3628,3629],{"class":1101},"routes.mjs",[1067,3631,1295],{"class":1097},[1067,3633,1238],{"class":1077},[1067,3635,3637,3640],{"class":1069,"line":3636},19,[1067,3638,3639],{"class":1077},"        }",[1067,3641,1264],{"class":1196},[1067,3643,3645],{"class":1069,"line":3644},20,[1067,3646,3522],{"class":1077},[1067,3648,3650,3652],{"class":1069,"line":3649},21,[1067,3651,1261],{"class":1077},[1067,3653,1264],{"class":1196},[1067,3655,3657],{"class":1069,"line":3656},22,[1067,3658,1369],{"class":1077},[1067,3660,3662,3664],{"class":1069,"line":3661},23,[1067,3663,1375],{"class":1077},[1067,3665,1264],{"class":1081},[1054,3667,1380],{"id":3668},"类型-3",[1058,3670,3672],{"className":1060,"code":3671,"language":1062,"meta":354,"style":354},"async function updateTemplates (options: UpdateTemplatesOptions): void\n",[1028,3673,3674],{"__ignoreMap":354},[1067,3675,3676,3679,3682,3684,3686,3688,3690,3693,3695,3697],{"class":1069,"line":1070},[1067,3677,3678],{"class":1182},"async",[1067,3680,3681],{"class":1182}," function",[1067,3683,3334],{"class":1145},[1067,3685,1161],{"class":1077},[1067,3687,1165],{"class":1164},[1067,3689,1227],{"class":1190},[1067,3691,3692],{"class":1441}," UpdateTemplatesOptions",[1067,3694,1173],{"class":1077},[1067,3696,1227],{"class":1190},[1067,3698,3699],{"class":1447}," void\n",[1054,3701,1458],{"id":3702},"参数-3",[1024,3704,3705,3707],{},[1462,3706,1165],{},"：传给模板的选项。该对象可以包含以下属性：",[1470,3709,3710,3722],{},[1473,3711,3712],{},[1476,3713,3714,3716,3718,3720],{},[1479,3715,1481],{},[1479,3717,1380],{},[1479,3719,1486],{},[1479,3721,1489],{},[1491,3723,3724],{},[1476,3725,3726,3731,3749,3753],{},[1496,3727,3728],{},[1028,3729,3730],{},"filter",[1496,3732,3733],{},[1028,3734,3735,3737,3739,3741,3743,3745,3747],{"className":1060,"language":1062,"style":354},[1067,3736,1148],{"class":1077},[1067,3738,1436],{"class":1164},[1067,3740,1227],{"class":1190},[1067,3742,1408],{"class":1441},[1067,3744,1173],{"class":1077},[1067,3746,1311],{"class":1182},[1067,3748,2329],{"class":1081},[1496,3750,3751],{},[1028,3752,1509],{},[1496,3754,1638,3755,3757,3758,3760],{},[1028,3756,1436],{}," 对象的函数。它应返回一个布尔值，指示该模板是否应该被重新生成。如果未提供 ",[1028,3759,3730],{},"，所有模板都会被重新生成。",[3762,3763,3764],"style",{},"html pre.shiki code .szyBz, html code.shiki .szyBz{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .smVNa, html code.shiki .smVNa{--shiki-light:#90A4AE;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .s0jeK, html code.shiki .s0jeK{--shiki-light:#39ADB5;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .s-Aze, html code.shiki .s-Aze{--shiki-light:#91B859;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .srJn9, html code.shiki .srJn9{--shiki-light:#6182B8;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sV7Px, html code.shiki .sV7Px{--shiki-light:#9C3EDA;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sJTDI, html code.shiki .sJTDI{--shiki-light:#90A4AE;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sXPRQ, html code.shiki .sXPRQ{--shiki-light:#39ADB5;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}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 .sZqJ9, html code.shiki .sZqJ9{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .sP6_D, html code.shiki .sP6_D{--shiki-light:#E53935;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .si1Qm, html code.shiki .si1Qm{--shiki-light:#FF5370;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}",{"title":354,"searchDepth":1129,"depth":1129,"links":3766},[3767,3775,3783,3790],{"id":1043,"depth":1108,"text":1030,"children":3768},[3769,3770,3771,3772],{"id":1056,"depth":1129,"text":1056},{"id":1380,"depth":1129,"text":1380},{"id":1458,"depth":1129,"text":1458},{"id":1670,"depth":1129,"text":1670,"children":3773},[3774],{"id":1674,"depth":1136,"text":1674},{"id":2143,"depth":1108,"text":1034,"children":3776},[3777,3778,3779,3780],{"id":2151,"depth":1129,"text":1056},{"id":2286,"depth":1129,"text":1380},{"id":2347,"depth":1129,"text":1458},{"id":2557,"depth":1129,"text":1670,"children":3781},[3782],{"id":2560,"depth":1136,"text":2561},{"id":2863,"depth":1108,"text":2866,"children":3784},[3785,3786,3787,3788,3789],{"id":2872,"depth":1129,"text":1056},{"id":2992,"depth":1129,"text":1380},{"id":3050,"depth":1129,"text":1458},{"id":3126,"depth":1129,"text":1670},{"id":3129,"depth":1129,"text":3130},{"id":3308,"depth":1108,"text":1038,"children":3791},[3792,3793,3794],{"id":3316,"depth":1129,"text":1056},{"id":3668,"depth":1129,"text":1380},{"id":3702,"depth":1129,"text":1458},"md",{"links":3797},[3798],{"label":3799,"icon":3800,"to":3801,"size":3802},"Source","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Fmain\u002Fpackages\u002Fkit\u002Fsrc\u002Ftemplate.ts","xs",null,{"title":741,"description":742},"docs\u002F4.api\u002F5.kit\u002F10.templates","dYH3TC2U9wIGybY7X4b-cbR48fPHz-PdzXRXPnr0Aqk",1785179859670]