[{"data":1,"prerenderedAt":3274},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-page-meta":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":601,"body":1020,"description":602,"extension":3263,"meta":3264,"navigation":3270,"path":600,"seo":3271,"stem":3272,"__hash__":3273},"docs\u002Fdocs\u002F4.api\u002F3.utils\u002Fdefine-page-meta.md",{"type":1021,"value":1022,"toc":3250},"minimark",[1023,1047,1146,1150,1154,1652,1655,1660,2221,2224,2227,2230,2253,2380,2383,2399,2683,2686,2689,2699,2713,2782,2790,2793,2808,2895,2899,2908,2911,3028,3229,3231,3234,3243,3246],[1024,1025,1026,1029,1030,1036,1037,1041,1042,1046],"p",{},[1027,1028,601],"code",{}," 是一个编译器宏，可用于为位于 ",[1031,1032,1033],"a",{"href":105},[1027,1034,1035],{},"app\u002Fpages\u002F"," 目录中的",[1038,1039,1040],"strong",{},"页面","组件（除非",[1031,1043,1045],{"href":1044},"\u002Fdocs\u002Fapi\u002Fnuxt-config#pages","另有设置","）设置元数据。这样你就可以为 Nuxt 应用的每个静态或动态路由设置自定义元数据。",[1048,1049,1054],"pre",{"className":1050,"code":1051,"filename":1052,"language":1053,"meta":354,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  layout: 'default',\n})\n\u003C\u002Fscript>\n","app\u002Fpages\u002Fsome-page.vue","vue",[1027,1055,1056,1092,1105,1127,1136],{"__ignoreMap":354},[1057,1058,1061,1065,1069,1073,1076,1079,1083,1087,1089],"span",{"class":1059,"line":1060},"line",1,[1057,1062,1064],{"class":1063},"sF54B","\u003C",[1057,1066,1068],{"class":1067},"s6g6u","script",[1057,1070,1072],{"class":1071},"sXjFp"," setup",[1057,1074,1075],{"class":1071}," lang",[1057,1077,1078],{"class":1063},"=",[1057,1080,1082],{"class":1081},"s0jeK","\"",[1057,1084,1086],{"class":1085},"s-Aze","ts",[1057,1088,1082],{"class":1081},[1057,1090,1091],{"class":1063},">\n",[1057,1093,1095,1098,1102],{"class":1059,"line":1094},2,[1057,1096,601],{"class":1097},"srJn9",[1057,1099,1101],{"class":1100},"smVNa","(",[1057,1103,1104],{"class":1063},"{\n",[1057,1106,1108,1112,1115,1118,1121,1124],{"class":1059,"line":1107},3,[1057,1109,1111],{"class":1110},"sOtFm","  layout",[1057,1113,1114],{"class":1063},":",[1057,1116,1117],{"class":1081}," '",[1057,1119,1120],{"class":1085},"default",[1057,1122,1123],{"class":1081},"'",[1057,1125,1126],{"class":1063},",\n",[1057,1128,1130,1133],{"class":1059,"line":1129},4,[1057,1131,1132],{"class":1063},"}",[1057,1134,1135],{"class":1100},")\n",[1057,1137,1139,1142,1144],{"class":1059,"line":1138},5,[1057,1140,1141],{"class":1063},"\u003C\u002F",[1057,1143,1068],{"class":1067},[1057,1145,1091],{"class":1063},[1147,1148],"read-more",{"to":1149},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages#page-metadata",[1151,1152,1153],"h2",{"id":1153},"类型",[1048,1155,1159],{"className":1156,"code":1157,"filename":1158,"language":1086,"meta":354,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","export function definePageMeta (meta: PageMeta): void\n\ninterface PageMeta {\n  validate?: ((route: RouteLocationNormalized) => boolean | Promise\u003Cboolean> | Partial\u003CNuxtError> | Promise\u003CPartial\u003CNuxtError>>)\n  redirect?: RouteRecordRedirectOption\n  name?: string\n  path?: string\n  props?: RouteRecordRaw['props']\n  alias?: string | string[]\n  groups?: string[]\n  pageTransition?: boolean | TransitionProps\n  layoutTransition?: boolean | TransitionProps\n  viewTransition?: ViewTransitionPageOptions['enabled'] | ViewTransitionPageOptions\n  key?: false | string | ((route: RouteLocationNormalizedLoaded) => string)\n  keepalive?: boolean | KeepAliveProps\n  layout?: false | LayoutKey | Ref\u003CLayoutKey> | ComputedRef\u003CLayoutKey> | { name?: LayoutKey | false, props?: Record\u003Cstring, unknown> \u002F* or the selected layout's props *\u002F }\n  middleware?: MiddlewareKey | NavigationGuard | Array\u003CMiddlewareKey | NavigationGuard>\n  scrollToTop?: boolean | ((to: RouteLocationNormalizedLoaded, from: RouteLocationNormalizedLoaded) => boolean)\n  [key: string]: unknown\n}\n","Signature",[1027,1160,1161,1197,1203,1213,1286,1296,1307,1317,1341,1359,1371,1386,1400,1429,1465,1480,1563,1595,1635,1646],{"__ignoreMap":354},[1057,1162,1163,1167,1171,1174,1177,1181,1184,1188,1191,1193],{"class":1059,"line":1060},[1057,1164,1166],{"class":1165},"szyBz","export",[1057,1168,1170],{"class":1169},"sV7Px"," function",[1057,1172,1173],{"class":1097}," definePageMeta",[1057,1175,1176],{"class":1063}," (",[1057,1178,1180],{"class":1179},"ssIVr","meta",[1057,1182,1114],{"class":1183},"sXPRQ",[1057,1185,1187],{"class":1186},"sJK67"," PageMeta",[1057,1189,1190],{"class":1063},")",[1057,1192,1114],{"class":1183},[1057,1194,1196],{"class":1195},"seQRr"," void\n",[1057,1198,1199],{"class":1059,"line":1094},[1057,1200,1202],{"emptyLinePlaceholder":1201},true,"\n",[1057,1204,1205,1208,1210],{"class":1059,"line":1107},[1057,1206,1207],{"class":1169},"interface",[1057,1209,1187],{"class":1186},[1057,1211,1212],{"class":1063}," {\n",[1057,1214,1215,1219,1222,1224,1226,1229,1231,1234,1236,1239,1242,1245,1248,1250,1253,1256,1258,1261,1263,1266,1268,1270,1272,1274,1277,1279,1281,1284],{"class":1059,"line":1129},[1057,1216,1218],{"class":1217},"sP6_D","  validate",[1057,1220,1221],{"class":1183},"?:",[1057,1223,1176],{"class":1100},[1057,1225,1101],{"class":1063},[1057,1227,1228],{"class":1179},"route",[1057,1230,1114],{"class":1183},[1057,1232,1233],{"class":1186}," RouteLocationNormalized",[1057,1235,1190],{"class":1063},[1057,1237,1238],{"class":1169}," =>",[1057,1240,1241],{"class":1195}," boolean",[1057,1243,1244],{"class":1183}," |",[1057,1246,1247],{"class":1186}," Promise",[1057,1249,1064],{"class":1063},[1057,1251,1252],{"class":1195},"boolean",[1057,1254,1255],{"class":1063},">",[1057,1257,1244],{"class":1183},[1057,1259,1260],{"class":1186}," Partial",[1057,1262,1064],{"class":1063},[1057,1264,1265],{"class":1186},"NuxtError",[1057,1267,1255],{"class":1063},[1057,1269,1244],{"class":1183},[1057,1271,1247],{"class":1186},[1057,1273,1064],{"class":1063},[1057,1275,1276],{"class":1186},"Partial",[1057,1278,1064],{"class":1063},[1057,1280,1265],{"class":1186},[1057,1282,1283],{"class":1063},">>",[1057,1285,1135],{"class":1100},[1057,1287,1288,1291,1293],{"class":1059,"line":1138},[1057,1289,1290],{"class":1217},"  redirect",[1057,1292,1221],{"class":1183},[1057,1294,1295],{"class":1186}," RouteRecordRedirectOption\n",[1057,1297,1299,1302,1304],{"class":1059,"line":1298},6,[1057,1300,1301],{"class":1217},"  name",[1057,1303,1221],{"class":1183},[1057,1305,1306],{"class":1195}," string\n",[1057,1308,1310,1313,1315],{"class":1059,"line":1309},7,[1057,1311,1312],{"class":1217},"  path",[1057,1314,1221],{"class":1183},[1057,1316,1306],{"class":1195},[1057,1318,1320,1323,1325,1328,1331,1333,1336,1338],{"class":1059,"line":1319},8,[1057,1321,1322],{"class":1217},"  props",[1057,1324,1221],{"class":1183},[1057,1326,1327],{"class":1186}," RouteRecordRaw",[1057,1329,1330],{"class":1100},"[",[1057,1332,1123],{"class":1081},[1057,1334,1335],{"class":1085},"props",[1057,1337,1123],{"class":1081},[1057,1339,1340],{"class":1100},"]\n",[1057,1342,1344,1347,1349,1352,1354,1356],{"class":1059,"line":1343},9,[1057,1345,1346],{"class":1217},"  alias",[1057,1348,1221],{"class":1183},[1057,1350,1351],{"class":1195}," string",[1057,1353,1244],{"class":1183},[1057,1355,1351],{"class":1195},[1057,1357,1358],{"class":1100},"[]\n",[1057,1360,1362,1365,1367,1369],{"class":1059,"line":1361},10,[1057,1363,1364],{"class":1217},"  groups",[1057,1366,1221],{"class":1183},[1057,1368,1351],{"class":1195},[1057,1370,1358],{"class":1100},[1057,1372,1374,1377,1379,1381,1383],{"class":1059,"line":1373},11,[1057,1375,1376],{"class":1217},"  pageTransition",[1057,1378,1221],{"class":1183},[1057,1380,1241],{"class":1195},[1057,1382,1244],{"class":1183},[1057,1384,1385],{"class":1186}," TransitionProps\n",[1057,1387,1389,1392,1394,1396,1398],{"class":1059,"line":1388},12,[1057,1390,1391],{"class":1217},"  layoutTransition",[1057,1393,1221],{"class":1183},[1057,1395,1241],{"class":1195},[1057,1397,1244],{"class":1183},[1057,1399,1385],{"class":1186},[1057,1401,1403,1406,1408,1411,1413,1415,1418,1420,1423,1426],{"class":1059,"line":1402},13,[1057,1404,1405],{"class":1217},"  viewTransition",[1057,1407,1221],{"class":1183},[1057,1409,1410],{"class":1186}," ViewTransitionPageOptions",[1057,1412,1330],{"class":1100},[1057,1414,1123],{"class":1081},[1057,1416,1417],{"class":1085},"enabled",[1057,1419,1123],{"class":1081},[1057,1421,1422],{"class":1100},"] ",[1057,1424,1425],{"class":1183},"|",[1057,1427,1428],{"class":1186}," ViewTransitionPageOptions\n",[1057,1430,1432,1435,1437,1440,1442,1444,1446,1448,1450,1452,1454,1457,1459,1461,1463],{"class":1059,"line":1431},14,[1057,1433,1434],{"class":1217},"  key",[1057,1436,1221],{"class":1183},[1057,1438,1439],{"class":1195}," false",[1057,1441,1244],{"class":1183},[1057,1443,1351],{"class":1195},[1057,1445,1244],{"class":1183},[1057,1447,1176],{"class":1100},[1057,1449,1101],{"class":1063},[1057,1451,1228],{"class":1179},[1057,1453,1114],{"class":1183},[1057,1455,1456],{"class":1186}," RouteLocationNormalizedLoaded",[1057,1458,1190],{"class":1063},[1057,1460,1238],{"class":1169},[1057,1462,1351],{"class":1195},[1057,1464,1135],{"class":1100},[1057,1466,1468,1471,1473,1475,1477],{"class":1059,"line":1467},15,[1057,1469,1470],{"class":1217},"  keepalive",[1057,1472,1221],{"class":1183},[1057,1474,1241],{"class":1195},[1057,1476,1244],{"class":1183},[1057,1478,1479],{"class":1186}," KeepAliveProps\n",[1057,1481,1483,1485,1487,1489,1491,1494,1496,1499,1501,1504,1506,1508,1511,1513,1515,1517,1519,1522,1525,1527,1529,1531,1533,1536,1539,1541,1544,1546,1549,1551,1554,1556,1560],{"class":1059,"line":1482},16,[1057,1484,1111],{"class":1217},[1057,1486,1221],{"class":1183},[1057,1488,1439],{"class":1195},[1057,1490,1244],{"class":1183},[1057,1492,1493],{"class":1186}," LayoutKey",[1057,1495,1244],{"class":1183},[1057,1497,1498],{"class":1186}," Ref",[1057,1500,1064],{"class":1063},[1057,1502,1503],{"class":1186},"LayoutKey",[1057,1505,1255],{"class":1063},[1057,1507,1244],{"class":1183},[1057,1509,1510],{"class":1186}," ComputedRef",[1057,1512,1064],{"class":1063},[1057,1514,1503],{"class":1186},[1057,1516,1255],{"class":1063},[1057,1518,1244],{"class":1183},[1057,1520,1521],{"class":1063}," {",[1057,1523,1524],{"class":1217}," name",[1057,1526,1221],{"class":1183},[1057,1528,1493],{"class":1186},[1057,1530,1244],{"class":1183},[1057,1532,1439],{"class":1195},[1057,1534,1535],{"class":1063},",",[1057,1537,1538],{"class":1217}," props",[1057,1540,1221],{"class":1183},[1057,1542,1543],{"class":1186}," Record",[1057,1545,1064],{"class":1063},[1057,1547,1548],{"class":1195},"string",[1057,1550,1535],{"class":1063},[1057,1552,1553],{"class":1195}," unknown",[1057,1555,1255],{"class":1063},[1057,1557,1559],{"class":1558},"sZqJ9"," \u002F* or the selected layout's props *\u002F",[1057,1561,1562],{"class":1063}," }\n",[1057,1564,1566,1569,1571,1574,1576,1579,1581,1584,1586,1589,1591,1593],{"class":1059,"line":1565},17,[1057,1567,1568],{"class":1217},"  middleware",[1057,1570,1221],{"class":1183},[1057,1572,1573],{"class":1186}," MiddlewareKey",[1057,1575,1244],{"class":1183},[1057,1577,1578],{"class":1186}," NavigationGuard",[1057,1580,1244],{"class":1183},[1057,1582,1583],{"class":1186}," Array",[1057,1585,1064],{"class":1063},[1057,1587,1588],{"class":1186},"MiddlewareKey",[1057,1590,1244],{"class":1183},[1057,1592,1578],{"class":1186},[1057,1594,1091],{"class":1063},[1057,1596,1598,1601,1603,1605,1607,1609,1611,1614,1616,1618,1620,1623,1625,1627,1629,1631,1633],{"class":1059,"line":1597},18,[1057,1599,1600],{"class":1217},"  scrollToTop",[1057,1602,1221],{"class":1183},[1057,1604,1241],{"class":1195},[1057,1606,1244],{"class":1183},[1057,1608,1176],{"class":1100},[1057,1610,1101],{"class":1063},[1057,1612,1613],{"class":1179},"to",[1057,1615,1114],{"class":1183},[1057,1617,1456],{"class":1186},[1057,1619,1535],{"class":1063},[1057,1621,1622],{"class":1179}," from",[1057,1624,1114],{"class":1183},[1057,1626,1456],{"class":1186},[1057,1628,1190],{"class":1063},[1057,1630,1238],{"class":1169},[1057,1632,1241],{"class":1195},[1057,1634,1135],{"class":1100},[1057,1636,1638,1641,1643],{"class":1059,"line":1637},19,[1057,1639,1640],{"class":1100},"  [key: string]",[1057,1642,1114],{"class":1183},[1057,1644,1645],{"class":1195}," unknown\n",[1057,1647,1649],{"class":1059,"line":1648},20,[1057,1650,1651],{"class":1063},"}\n",[1151,1653,1654],{"id":1654},"参数",[1656,1657,1658],"h3",{"id":1180},[1027,1659,1180],{},[1661,1662,1663],"ul",{},[1664,1665,1666,1668,1669,1672,1675,1676,1678,1683,1700,1702,1707,1723,1725,1729,1750,1752,1757,1782,1784,1789,1790,1798,1815,1817,1822,1850,1852,1857,1880,1882,1887,1926,1928,1933,1954,1956,1960,1988,1990,1995,2014,2016,2021,2103,2105,2110,2126,2128,2133,2153,2155,2160,2190,2192,2197],"li",{},[1038,1667,1153],{},"：",[1027,1670,1671],{},"PageMeta",[1673,1674],"br",{},"一个接受以下页面元数据的对象：",[1673,1677],{},[1038,1679,1680],{},[1027,1681,1682],{},"name",[1661,1684,1685],{},[1664,1686,1687,1668,1689,1691,1693,1694,1699],{},[1038,1688,1153],{},[1027,1690,1548],{},[1673,1692],{},"你可以为这个页面的路由定义一个名称。默认情况下，name 是基于 ",[1031,1695,1696,1698],{"href":105},[1027,1697,1035],{}," 目录"," 中的路径生成的。",[1673,1701],{},[1038,1703,1704],{},[1027,1705,1706],{},"path",[1661,1708,1709],{},[1664,1710,1711,1668,1713,1715,1717,1718,1722],{},[1038,1712,1153],{},[1027,1714,1548],{},[1673,1716],{},"如果你有比文件名能表达的更复杂的模式，可以定义一个",[1031,1719,1721],{"href":1720},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-page-meta#using-a-custom-regular-expression","自定义正则表达式","。",[1673,1724],{},[1038,1726,1727],{},[1027,1728,1335],{},[1661,1730,1731],{},[1664,1732,1733,1668,1735,1743,1745,1746,1749],{},[1038,1734,1153],{},[1031,1736,1740],{"href":1737,"rel":1738},"https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fessentials\u002Fpassing-props",[1739],"nofollow",[1027,1741,1742],{},"RouteRecordRaw['props']",[1673,1744],{},"允许将路由的 ",[1027,1747,1748],{},"params"," 作为 props 传入页面组件。",[1673,1751],{},[1038,1753,1754],{},[1027,1755,1756],{},"alias",[1661,1758,1759],{},[1664,1760,1761,1668,1763,1766,1768,1769,1772,1773,1776,1777,1772,1779,1781],{},[1038,1762,1153],{},[1027,1764,1765],{},"string | string[]",[1673,1767],{},"该记录的别名。允许定义额外的路径，使其表现得像该记录的一个副本。允许使用路径简写，例如 ",[1027,1770,1771],{},"\u002Fusers\u002F:id"," 和 ",[1027,1774,1775],{},"\u002Fu\u002F:id","。所有 ",[1027,1778,1756],{},[1027,1780,1706],{}," 值必须共享相同的 params。",[1673,1783],{},[1038,1785,1786],{},[1027,1787,1788],{},"groups"," ",[1791,1792,1797],"badge",{"className":1793,"color":1795,"size":1796},[1794],"align-middle","info","xs","v4.3",[1661,1799,1800],{},[1664,1801,1802,1668,1804,1807,1809,1810,1814],{},[1038,1803,1153],{},[1027,1805,1806],{},"string[]",[1673,1808],{},"页面所属的路由组，基于文件夹结构。会自动为",[1031,1811,1813],{"href":1812},"\u002Fdocs\u002Fguide\u002Fdirectory-structure\u002Fapp\u002Fpages#route-groups","路由组","中的页面填充。",[1673,1816],{},[1038,1818,1819],{},[1027,1820,1821],{},"keepalive",[1661,1823,1824],{},[1664,1825,1826,1668,1828,1830,1831,1838,1840,1841,1846,1847,1722],{},[1038,1827,1153],{},[1027,1829,1252],{}," | ",[1031,1832,1835],{"href":1833,"rel":1834},"https:\u002F\u002Fvuejs.org\u002Fapi\u002Fbuilt-in-components#keepalive",[1739],[1027,1836,1837],{},"KeepAliveProps",[1673,1839],{},"当你想在路由切换之间保留页面状态，或使用 ",[1031,1842,1844],{"href":1833,"rel":1843},[1739],[1027,1845,1837],{}," 进行细粒度控制时，设为 ",[1027,1848,1849],{},"true",[1673,1851],{},[1038,1853,1854],{},[1027,1855,1856],{},"key",[1661,1858,1859],{},[1664,1860,1861,1668,1863,1830,1866,1830,1868,1871,1873,1874,1876,1877,1879],{},[1038,1862,1153],{},[1027,1864,1865],{},"false",[1027,1867,1548],{},[1027,1869,1870],{},"((route: RouteLocationNormalizedLoaded) => string)",[1673,1872],{},"当你需要更多地控制 ",[1027,1875,389],{}," 组件何时重新渲染时，设置 ",[1027,1878,1856],{}," 值。",[1673,1881],{},[1038,1883,1884],{},[1027,1885,1886],{},"layout",[1661,1888,1889],{},[1664,1890,1891,1668,1893,1830,1895,1830,1897,1830,1900,1830,1903,1906,1908,1909,1722,1911,1913,1914,1772,1916,1918,1919,1922,1923,1925],{},[1038,1892,1153],{},[1027,1894,1865],{},[1027,1896,1503],{},[1027,1898,1899],{},"Ref\u003CLayoutKey>",[1027,1901,1902],{},"ComputedRef\u003CLayoutKey>",[1027,1904,1905],{},"{ name?: LayoutKey | false; props?: Record\u003Cstring, unknown> \u002F* or the selected layout's props *\u002F }",[1673,1907],{},"为每个路由设置静态或动态的布局名称。如果默认布局需要被禁用，可以将其设为 ",[1027,1910,1865],{},[1673,1912],{},"你也可以传入一个带有 ",[1027,1915,1682],{},[1027,1917,1335],{}," 的对象，将带类型的 props 传给你的布局组件。当你的布局用 ",[1027,1920,1921],{},"defineProps"," 定义 props 时，它们在 ",[1027,1924,601],{}," 中会被完全类型化。",[1673,1927],{},[1038,1929,1930],{},[1027,1931,1932],{},"layoutTransition",[1661,1934,1935],{},[1664,1936,1937,1668,1939,1830,1941,1948,1950,1951,1953],{},[1038,1938,1153],{},[1027,1940,1252],{},[1031,1942,1945],{"href":1943,"rel":1944},"https:\u002F\u002Fvuejs.org\u002Fapi\u002Fbuilt-in-components#transition",[1739],[1027,1946,1947],{},"TransitionProps",[1673,1949],{},"设置要应用于当前布局的过渡名称。你也可以将此值设为 ",[1027,1952,1865],{}," 来禁用布局过渡。",[1673,1955],{},[1038,1957,1958],{},[1027,1959,102],{},[1661,1961,1962],{},[1664,1963,1964,1668,1966,1830,1968,1830,1975,1978,1980,1981,1983,1984,1987],{},[1038,1965,1153],{},[1027,1967,1588],{},[1031,1969,1972],{"href":1970,"rel":1971},"https:\u002F\u002Frouter.vuejs.org\u002Fapi\u002Finterfaces\u002Fnavigationguard",[1739],[1027,1973,1974],{},"NavigationGuard",[1027,1976,1977],{},"Array\u003CMiddlewareKey | NavigationGuard>",[1673,1979],{},"直接在 ",[1027,1982,601],{}," 中定义匿名或命名中间件。了解更多关于",[1031,1985,1986],{"href":101},"路由中间件","的内容。",[1673,1989],{},[1038,1991,1992],{},[1027,1993,1994],{},"pageTransition",[1661,1996,1997],{},[1664,1998,1999,1668,2001,1830,2003,2008,2010,2011,2013],{},[1038,2000,1153],{},[1027,2002,1252],{},[1031,2004,2006],{"href":1943,"rel":2005},[1739],[1027,2007,1947],{},[1673,2009],{},"设置要应用于当前页面的过渡名称。你也可以将此值设为 ",[1027,2012,1865],{}," 来禁用页面过渡。",[1673,2015],{},[1038,2017,2018],{},[1027,2019,2020],{},"viewTransition",[1661,2022,2023],{},[1664,2024,2025,1668,2027,2030,2032,2040,2042,2043,2046,2047,2050,2051,2053,2054,2057,2058,1668,2062],{},[1038,2026,1153],{},[1027,2028,2029],{},"boolean | 'always' | ViewTransitionPageOptions",[1673,2031],{},[1038,2033,2034,2035,2039],{},"实验性特性，仅在",[1031,2036,2038],{"href":2037},"\u002Fdocs\u002Fgetting-started\u002Ftransitions#view-transitions-api-experimental","你的 nuxt.config 文件中启用","后才可用",[1673,2041],{},"\n启用\u002F禁用当前页面的视图过渡（View Transitions）。\n如果设为 true，当用户的浏览器匹配 ",[1027,2044,2045],{},"prefers-reduced-motion: reduce"," 时 Nuxt 不会应用过渡（推荐）。如果设为 ",[1027,2048,2049],{},"always","，Nuxt 将总是应用过渡。",[1673,2052],{},"你也可以传入一个 ",[1027,2055,2056],{},"ViewTransitionPageOptions"," 对象来配置",[1031,2059,2061],{"href":2060},"\u002Fdocs\u002Fgetting-started\u002Ftransitions#view-transition-types","视图过渡类型",[1661,2063,2064,2072,2081,2093],{},[1664,2065,2066,1668,2068,2071],{},[1027,2067,1417],{},[1027,2069,2070],{},"boolean | 'always'"," - 启用\u002F禁用过渡",[1664,2073,2074,1668,2077,2080],{},[1027,2075,2076],{},"types",[1027,2078,2079],{},"string[] | (to, from) => string[]"," - 应用于任何涉及此页面的过渡的类型",[1664,2082,2083,1668,2086,2088,2089,2092],{},[1027,2084,2085],{},"toTypes",[1027,2087,2079],{}," - 仅当导航",[1038,2090,2091],{},"到","此页面时应用的类型",[1664,2094,2095,1668,2098,2088,2100,2092],{},[1027,2096,2097],{},"fromTypes",[1027,2099,2079],{},[1038,2101,2102],{},"离开",[1673,2104],{},[1038,2106,2107],{},[1027,2108,2109],{},"redirect",[1661,2111,2112],{},[1664,2113,2114,1668,2116,2123,2125],{},[1038,2115,1153],{},[1031,2117,2120],{"href":2118,"rel":2119},"https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fessentials\u002Fredirect-and-alias",[1739],[1027,2121,2122],{},"RouteRecordRedirectOption",[1673,2124],{},"如果路由被直接匹配，重定向到哪里。重定向发生在任何导航守卫之前，并触发一个以新目标位置为对象的新导航。",[1673,2127],{},[1038,2129,2130],{},[1027,2131,2132],{},"validate",[1661,2134,2135],{},[1664,2136,2137,1668,2139,2142,2144,2145,2148,2149,2152],{},[1038,2138,1153],{},[1027,2140,2141],{},"(route: RouteLocationNormalized) => boolean | Promise\u003Cboolean> | Partial\u003CNuxtError> | Promise\u003CPartial\u003CNuxtError>>",[1673,2143],{},"校验给定的路由是否可以有效地由本页面渲染。如果有效则返回 true，否则返回 false。如果找不到其他匹配项，这意味着 404。你也可以直接返回一个带有 ",[1027,2146,2147],{},"status","\u002F",[1027,2150,2151],{},"statusText"," 的对象，以立即响应一个错误（不会再去检查其他匹配项）。",[1673,2154],{},[1038,2156,2157],{},[1027,2158,2159],{},"scrollToTop",[1661,2161,2162],{},[1664,2163,2164,1668,2166,2169,2171,2172,2177,2178,2181,2182,2185,2186,2189],{},[1038,2165,1153],{},[1027,2167,2168],{},"boolean | (to: RouteLocationNormalized, from: RouteLocationNormalized) => boolean",[1673,2170],{},"告诉 Nuxt 在渲染页面之前是否滚动到顶部。导航与渲染是独立的，因此即使页面没有重新渲染（例如使用固定的 ",[1031,2173,2175],{"href":2174},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-page-meta#key",[1027,2176,1856],{},"），滚动行为也总是会被触发。在这种情况下设置 ",[1027,2179,2180],{},"scrollToTop: false"," 可禁用滚动。如果你想覆盖 Nuxt 的默认滚动行为，可以在 ",[1027,2183,2184],{},"~\u002Frouter.options.ts"," 中进行（参见",[1031,2187,290],{"href":2188},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-routing#using-routeroptions","获取更多信息）。",[1673,2191],{},[1038,2193,2194],{},[1027,2195,2196],{},"[key: string]",[1661,2198,2199],{},[1664,2200,2201,1668,2203,2206,2208,2209,2212,2213,2220],{},[1038,2202,1153],{},[1027,2204,2205],{},"any",[1673,2207],{},"除了上述属性，你还可以设置",[1038,2210,2211],{},"自定义","元数据。你可能希望以类型安全的方式通过",[1031,2214,2216,2217,2219],{"href":2215},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages\u002F#typing-custom-metadata","扩充 ",[1027,2218,1180],{}," 对象的类型","来实现。",[1151,2222,2223],{"id":2223},"示例",[1656,2225,2226],{"id":2226},"基础用法",[1024,2228,2229],{},"下面的示例展示了：",[1661,2231,2232,2237,2246],{},[1664,2233,2234,2236],{},[1027,2235,1856],{}," 如何可以是一个返回值的函数；",[1664,2238,2239,2241,2242,2245],{},[1027,2240,1821],{}," 属性如何确保在多个组件之间切换时 ",[1027,2243,2244],{},"\u003Cmodal>"," 组件不会被缓存；",[1664,2247,2248,2249,2252],{},"如何添加 ",[1027,2250,2251],{},"pageType"," 作为自定义属性：",[1048,2254,2256],{"className":1050,"code":2255,"filename":1052,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  key: route => route.fullPath,\n\n  keepalive: {\n    exclude: ['modal'],\n  },\n\n  pageType: 'Checkout',\n})\n\u003C\u002Fscript>\n",[1027,2257,2258,2278,2286,2307,2311,2319,2341,2346,2350,2366,2372],{"__ignoreMap":354},[1057,2259,2260,2262,2264,2266,2268,2270,2272,2274,2276],{"class":1059,"line":1060},[1057,2261,1064],{"class":1063},[1057,2263,1068],{"class":1067},[1057,2265,1072],{"class":1071},[1057,2267,1075],{"class":1071},[1057,2269,1078],{"class":1063},[1057,2271,1082],{"class":1081},[1057,2273,1086],{"class":1085},[1057,2275,1082],{"class":1081},[1057,2277,1091],{"class":1063},[1057,2279,2280,2282,2284],{"class":1059,"line":1094},[1057,2281,601],{"class":1097},[1057,2283,1101],{"class":1100},[1057,2285,1104],{"class":1063},[1057,2287,2288,2290,2292,2295,2297,2299,2302,2305],{"class":1059,"line":1107},[1057,2289,1434],{"class":1097},[1057,2291,1114],{"class":1063},[1057,2293,2294],{"class":1179}," route",[1057,2296,1238],{"class":1169},[1057,2298,2294],{"class":1100},[1057,2300,2301],{"class":1063},".",[1057,2303,2304],{"class":1100},"fullPath",[1057,2306,1126],{"class":1063},[1057,2308,2309],{"class":1059,"line":1129},[1057,2310,1202],{"emptyLinePlaceholder":1201},[1057,2312,2313,2315,2317],{"class":1059,"line":1138},[1057,2314,1470],{"class":1110},[1057,2316,1114],{"class":1063},[1057,2318,1212],{"class":1063},[1057,2320,2321,2324,2326,2329,2331,2334,2336,2339],{"class":1059,"line":1298},[1057,2322,2323],{"class":1110},"    exclude",[1057,2325,1114],{"class":1063},[1057,2327,2328],{"class":1100}," [",[1057,2330,1123],{"class":1081},[1057,2332,2333],{"class":1085},"modal",[1057,2335,1123],{"class":1081},[1057,2337,2338],{"class":1100},"]",[1057,2340,1126],{"class":1063},[1057,2342,2343],{"class":1059,"line":1309},[1057,2344,2345],{"class":1063},"  },\n",[1057,2347,2348],{"class":1059,"line":1319},[1057,2349,1202],{"emptyLinePlaceholder":1201},[1057,2351,2352,2355,2357,2359,2362,2364],{"class":1059,"line":1343},[1057,2353,2354],{"class":1110},"  pageType",[1057,2356,1114],{"class":1063},[1057,2358,1117],{"class":1081},[1057,2360,2361],{"class":1085},"Checkout",[1057,2363,1123],{"class":1081},[1057,2365,1126],{"class":1063},[1057,2367,2368,2370],{"class":1059,"line":1361},[1057,2369,1132],{"class":1063},[1057,2371,1135],{"class":1100},[1057,2373,2374,2376,2378],{"class":1059,"line":1373},[1057,2375,1141],{"class":1063},[1057,2377,1068],{"class":1067},[1057,2379,1091],{"class":1063},[1656,2381,2382],{"id":2382},"定义中间件",[1024,2384,2385,2386,2388,2389,2392,2393,2396,2397,1668],{},"下面的示例展示了中间件如何使用 ",[1027,2387,601],{}," 内的 ",[1027,2390,2391],{},"function"," 直接定义，或者设置为匹配 ",[1027,2394,2395],{},"app\u002Fmiddleware\u002F"," 目录中中间件文件名的 ",[1027,2398,1548],{},[1048,2400,2402],{"className":1050,"code":2401,"filename":1052,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  \u002F\u002F 使用函数定义中间件\n  middleware: [\n    function (to, from) {\n      const auth = useState('auth')\n\n      if (!auth.value.authenticated) {\n        return navigateTo('\u002Flogin')\n      }\n\n      if (to.path !== '\u002Fcheckout') {\n        return navigateTo('\u002Fcheckout')\n      }\n    },\n  ],\n\n  \u002F\u002F ... 或者一个字符串\n  middleware: 'auth',\n\n  \u002F\u002F ... 或者多个字符串\n  middleware: ['auth', 'another-named-middleware'],\n})\n\u003C\u002Fscript>\n",[1027,2403,2404,2424,2432,2437,2446,2463,2489,2493,2520,2539,2544,2548,2574,2590,2594,2599,2606,2610,2615,2629,2633,2639,2667,2674],{"__ignoreMap":354},[1057,2405,2406,2408,2410,2412,2414,2416,2418,2420,2422],{"class":1059,"line":1060},[1057,2407,1064],{"class":1063},[1057,2409,1068],{"class":1067},[1057,2411,1072],{"class":1071},[1057,2413,1075],{"class":1071},[1057,2415,1078],{"class":1063},[1057,2417,1082],{"class":1081},[1057,2419,1086],{"class":1085},[1057,2421,1082],{"class":1081},[1057,2423,1091],{"class":1063},[1057,2425,2426,2428,2430],{"class":1059,"line":1094},[1057,2427,601],{"class":1097},[1057,2429,1101],{"class":1100},[1057,2431,1104],{"class":1063},[1057,2433,2434],{"class":1059,"line":1107},[1057,2435,2436],{"class":1558},"  \u002F\u002F 使用函数定义中间件\n",[1057,2438,2439,2441,2443],{"class":1059,"line":1129},[1057,2440,1568],{"class":1110},[1057,2442,1114],{"class":1063},[1057,2444,2445],{"class":1100}," [\n",[1057,2447,2448,2451,2453,2455,2457,2459,2461],{"class":1059,"line":1138},[1057,2449,2450],{"class":1169},"    function",[1057,2452,1176],{"class":1063},[1057,2454,1613],{"class":1179},[1057,2456,1535],{"class":1063},[1057,2458,1622],{"class":1179},[1057,2460,1190],{"class":1063},[1057,2462,1212],{"class":1063},[1057,2464,2465,2468,2472,2475,2478,2480,2482,2485,2487],{"class":1059,"line":1298},[1057,2466,2467],{"class":1169},"      const",[1057,2469,2471],{"class":2470},"sJTDI"," auth",[1057,2473,2474],{"class":1183}," =",[1057,2476,2477],{"class":1097}," useState",[1057,2479,1101],{"class":1110},[1057,2481,1123],{"class":1081},[1057,2483,2484],{"class":1085},"auth",[1057,2486,1123],{"class":1081},[1057,2488,1135],{"class":1110},[1057,2490,2491],{"class":1059,"line":1309},[1057,2492,1202],{"emptyLinePlaceholder":1201},[1057,2494,2495,2498,2500,2503,2505,2507,2510,2512,2515,2518],{"class":1059,"line":1319},[1057,2496,2497],{"class":1165},"      if",[1057,2499,1176],{"class":1110},[1057,2501,2502],{"class":1183},"!",[1057,2504,2484],{"class":1100},[1057,2506,2301],{"class":1063},[1057,2508,2509],{"class":1100},"value",[1057,2511,2301],{"class":1063},[1057,2513,2514],{"class":1100},"authenticated",[1057,2516,2517],{"class":1110},") ",[1057,2519,1104],{"class":1063},[1057,2521,2522,2525,2528,2530,2532,2535,2537],{"class":1059,"line":1343},[1057,2523,2524],{"class":1165},"        return",[1057,2526,2527],{"class":1097}," navigateTo",[1057,2529,1101],{"class":1110},[1057,2531,1123],{"class":1081},[1057,2533,2534],{"class":1085},"\u002Flogin",[1057,2536,1123],{"class":1081},[1057,2538,1135],{"class":1110},[1057,2540,2541],{"class":1059,"line":1361},[1057,2542,2543],{"class":1063},"      }\n",[1057,2545,2546],{"class":1059,"line":1373},[1057,2547,1202],{"emptyLinePlaceholder":1201},[1057,2549,2550,2552,2554,2556,2558,2560,2563,2565,2568,2570,2572],{"class":1059,"line":1388},[1057,2551,2497],{"class":1165},[1057,2553,1176],{"class":1110},[1057,2555,1613],{"class":1100},[1057,2557,2301],{"class":1063},[1057,2559,1706],{"class":1100},[1057,2561,2562],{"class":1183}," !==",[1057,2564,1117],{"class":1081},[1057,2566,2567],{"class":1085},"\u002Fcheckout",[1057,2569,1123],{"class":1081},[1057,2571,2517],{"class":1110},[1057,2573,1104],{"class":1063},[1057,2575,2576,2578,2580,2582,2584,2586,2588],{"class":1059,"line":1402},[1057,2577,2524],{"class":1165},[1057,2579,2527],{"class":1097},[1057,2581,1101],{"class":1110},[1057,2583,1123],{"class":1081},[1057,2585,2567],{"class":1085},[1057,2587,1123],{"class":1081},[1057,2589,1135],{"class":1110},[1057,2591,2592],{"class":1059,"line":1431},[1057,2593,2543],{"class":1063},[1057,2595,2596],{"class":1059,"line":1467},[1057,2597,2598],{"class":1063},"    },\n",[1057,2600,2601,2604],{"class":1059,"line":1482},[1057,2602,2603],{"class":1100},"  ]",[1057,2605,1126],{"class":1063},[1057,2607,2608],{"class":1059,"line":1565},[1057,2609,1202],{"emptyLinePlaceholder":1201},[1057,2611,2612],{"class":1059,"line":1597},[1057,2613,2614],{"class":1558},"  \u002F\u002F ... 或者一个字符串\n",[1057,2616,2617,2619,2621,2623,2625,2627],{"class":1059,"line":1637},[1057,2618,1568],{"class":1110},[1057,2620,1114],{"class":1063},[1057,2622,1117],{"class":1081},[1057,2624,2484],{"class":1085},[1057,2626,1123],{"class":1081},[1057,2628,1126],{"class":1063},[1057,2630,2631],{"class":1059,"line":1648},[1057,2632,1202],{"emptyLinePlaceholder":1201},[1057,2634,2636],{"class":1059,"line":2635},21,[1057,2637,2638],{"class":1558},"  \u002F\u002F ... 或者多个字符串\n",[1057,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2661,2663,2665],{"class":1059,"line":2641},22,[1057,2643,1568],{"class":1110},[1057,2645,1114],{"class":1063},[1057,2647,2328],{"class":1100},[1057,2649,1123],{"class":1081},[1057,2651,2484],{"class":1085},[1057,2653,1123],{"class":1081},[1057,2655,1535],{"class":1063},[1057,2657,1117],{"class":1081},[1057,2659,2660],{"class":1085},"another-named-middleware",[1057,2662,1123],{"class":1081},[1057,2664,2338],{"class":1100},[1057,2666,1126],{"class":1063},[1057,2668,2670,2672],{"class":1059,"line":2669},23,[1057,2671,1132],{"class":1063},[1057,2673,1135],{"class":1100},[1057,2675,2677,2679,2681],{"class":1059,"line":2676},24,[1057,2678,1141],{"class":1063},[1057,2680,1068],{"class":1067},[1057,2682,1091],{"class":1063},[1656,2684,2685],{"id":2685},"使用自定义正则表达式",[1024,2687,2688],{},"自定义正则表达式是解决重叠路由之间冲突的好方法，例如：",[1024,2690,2691,2692,1772,2695,2698],{},"两个路由 \"\u002Ftest-category\" 和 \"\u002F1234-post\" 都同时匹配 ",[1027,2693,2694],{},"[postId]-[postSlug].vue",[1027,2696,2697],{},"[categorySlug].vue"," 页面路由。",[1024,2700,2701,2702,2705,2706,2709,2710,2712],{},"为了确保我们只在 ",[1027,2703,2704],{},"[postId]-[postSlug]"," 路由中匹配数字（",[1027,2707,2708],{},"\\d+","），我们可以在 ",[1027,2711,2694],{}," 页面模板中添加以下内容：",[1048,2714,2717],{"className":1050,"code":2715,"filename":2716,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  path: '\u002F:postId(\\\\d+)-:postSlug',\n})\n\u003C\u002Fscript>\n","app\u002Fpages\u002F[postId]-[postSlug].vue",[1027,2718,2719,2739,2747,2768,2774],{"__ignoreMap":354},[1057,2720,2721,2723,2725,2727,2729,2731,2733,2735,2737],{"class":1059,"line":1060},[1057,2722,1064],{"class":1063},[1057,2724,1068],{"class":1067},[1057,2726,1072],{"class":1071},[1057,2728,1075],{"class":1071},[1057,2730,1078],{"class":1063},[1057,2732,1082],{"class":1081},[1057,2734,1086],{"class":1085},[1057,2736,1082],{"class":1081},[1057,2738,1091],{"class":1063},[1057,2740,2741,2743,2745],{"class":1059,"line":1094},[1057,2742,601],{"class":1097},[1057,2744,1101],{"class":1100},[1057,2746,1104],{"class":1063},[1057,2748,2749,2751,2753,2755,2758,2761,2764,2766],{"class":1059,"line":1107},[1057,2750,1312],{"class":1110},[1057,2752,1114],{"class":1063},[1057,2754,1117],{"class":1081},[1057,2756,2757],{"class":1085},"\u002F:postId(",[1057,2759,2760],{"class":2470},"\\\\",[1057,2762,2763],{"class":1085},"d+)-:postSlug",[1057,2765,1123],{"class":1081},[1057,2767,1126],{"class":1063},[1057,2769,2770,2772],{"class":1059,"line":1129},[1057,2771,1132],{"class":1063},[1057,2773,1135],{"class":1100},[1057,2775,2776,2778,2780],{"class":1059,"line":1138},[1057,2777,1141],{"class":1063},[1057,2779,1068],{"class":1067},[1057,2781,1091],{"class":1063},[1024,2783,2784,2785,1722],{},"更多示例参见 ",[1031,2786,2789],{"href":2787,"rel":2788},"https:\u002F\u002Frouter.vuejs.org\u002Fguide\u002Fessentials\u002Froute-matching-syntax",[1739],"Vue Router 的匹配语法",[1656,2791,2792],{"id":2792},"定义布局",[1024,2794,2795,2796,2801,2802,2804,2805,2807],{},"你可以定义（默认情况下）匹配 ",[1031,2797,2798,1698],{"href":97},[1027,2799,2800],{},"app\u002Flayouts\u002F"," 中布局文件名的布局。你也可以通过将 ",[1027,2803,1886],{}," 设为 ",[1027,2806,1865],{}," 来禁用布局：",[1048,2809,2811],{"className":1050,"code":2810,"filename":1052,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  \u002F\u002F 设置自定义布局\n  layout: 'admin',\n\n  \u002F\u002F ... 或者禁用默认布局\n  layout: false,\n})\n\u003C\u002Fscript>\n",[1027,2812,2813,2833,2841,2846,2861,2865,2870,2881,2887],{"__ignoreMap":354},[1057,2814,2815,2817,2819,2821,2823,2825,2827,2829,2831],{"class":1059,"line":1060},[1057,2816,1064],{"class":1063},[1057,2818,1068],{"class":1067},[1057,2820,1072],{"class":1071},[1057,2822,1075],{"class":1071},[1057,2824,1078],{"class":1063},[1057,2826,1082],{"class":1081},[1057,2828,1086],{"class":1085},[1057,2830,1082],{"class":1081},[1057,2832,1091],{"class":1063},[1057,2834,2835,2837,2839],{"class":1059,"line":1094},[1057,2836,601],{"class":1097},[1057,2838,1101],{"class":1100},[1057,2840,1104],{"class":1063},[1057,2842,2843],{"class":1059,"line":1107},[1057,2844,2845],{"class":1558},"  \u002F\u002F 设置自定义布局\n",[1057,2847,2848,2850,2852,2854,2857,2859],{"class":1059,"line":1129},[1057,2849,1111],{"class":1110},[1057,2851,1114],{"class":1063},[1057,2853,1117],{"class":1081},[1057,2855,2856],{"class":1085},"admin",[1057,2858,1123],{"class":1081},[1057,2860,1126],{"class":1063},[1057,2862,2863],{"class":1059,"line":1138},[1057,2864,1202],{"emptyLinePlaceholder":1201},[1057,2866,2867],{"class":1059,"line":1298},[1057,2868,2869],{"class":1558},"  \u002F\u002F ... 或者禁用默认布局\n",[1057,2871,2872,2874,2876,2879],{"class":1059,"line":1309},[1057,2873,1111],{"class":1110},[1057,2875,1114],{"class":1063},[1057,2877,1439],{"class":2878},"si1Qm",[1057,2880,1126],{"class":1063},[1057,2882,2883,2885],{"class":1059,"line":1319},[1057,2884,1132],{"class":1063},[1057,2886,1135],{"class":1100},[1057,2888,2889,2891,2893],{"class":1059,"line":1343},[1057,2890,1141],{"class":1063},[1057,2892,1068],{"class":1067},[1057,2894,1091],{"class":1063},[1656,2896,2898],{"id":2897},"向布局传递-props","向布局传递 Props",[1024,2900,2901,2902,2904,2905,2907],{},"你可以使用 ",[1027,2903,1886],{}," 的对象语法向布局传递 props。如果你的布局用 ",[1027,2906,1921],{}," 定义 props，这些 props 会被完全类型化。",[2909,2910],"code-group",{},[1048,2912,2915],{"className":1050,"code":2913,"filename":2914,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  layout: {\n    name: 'panel',\n    props: {\n      sidebar: true,\n      title: 'Dashboard',\n    },\n  },\n})\n\u003C\u002Fscript>\n","app\u002Fpages\u002Fdashboard.vue",[1027,2916,2917,2937,2945,2953,2969,2978,2990,3006,3010,3014,3020],{"__ignoreMap":354},[1057,2918,2919,2921,2923,2925,2927,2929,2931,2933,2935],{"class":1059,"line":1060},[1057,2920,1064],{"class":1063},[1057,2922,1068],{"class":1067},[1057,2924,1072],{"class":1071},[1057,2926,1075],{"class":1071},[1057,2928,1078],{"class":1063},[1057,2930,1082],{"class":1081},[1057,2932,1086],{"class":1085},[1057,2934,1082],{"class":1081},[1057,2936,1091],{"class":1063},[1057,2938,2939,2941,2943],{"class":1059,"line":1094},[1057,2940,601],{"class":1097},[1057,2942,1101],{"class":1100},[1057,2944,1104],{"class":1063},[1057,2946,2947,2949,2951],{"class":1059,"line":1107},[1057,2948,1111],{"class":1110},[1057,2950,1114],{"class":1063},[1057,2952,1212],{"class":1063},[1057,2954,2955,2958,2960,2962,2965,2967],{"class":1059,"line":1129},[1057,2956,2957],{"class":1110},"    name",[1057,2959,1114],{"class":1063},[1057,2961,1117],{"class":1081},[1057,2963,2964],{"class":1085},"panel",[1057,2966,1123],{"class":1081},[1057,2968,1126],{"class":1063},[1057,2970,2971,2974,2976],{"class":1059,"line":1138},[1057,2972,2973],{"class":1110},"    props",[1057,2975,1114],{"class":1063},[1057,2977,1212],{"class":1063},[1057,2979,2980,2983,2985,2988],{"class":1059,"line":1298},[1057,2981,2982],{"class":1110},"      sidebar",[1057,2984,1114],{"class":1063},[1057,2986,2987],{"class":2878}," true",[1057,2989,1126],{"class":1063},[1057,2991,2992,2995,2997,2999,3002,3004],{"class":1059,"line":1309},[1057,2993,2994],{"class":1110},"      title",[1057,2996,1114],{"class":1063},[1057,2998,1117],{"class":1081},[1057,3000,3001],{"class":1085},"Dashboard",[1057,3003,1123],{"class":1081},[1057,3005,1126],{"class":1063},[1057,3007,3008],{"class":1059,"line":1319},[1057,3009,2598],{"class":1063},[1057,3011,3012],{"class":1059,"line":1343},[1057,3013,2345],{"class":1063},[1057,3015,3016,3018],{"class":1059,"line":1361},[1057,3017,1132],{"class":1063},[1057,3019,1135],{"class":1100},[1057,3021,3022,3024,3026],{"class":1059,"line":1373},[1057,3023,1141],{"class":1063},[1057,3025,1068],{"class":1067},[1057,3027,1091],{"class":1063},[1048,3029,3032],{"className":1050,"code":3030,"filename":3031,"language":1053,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{\n  sidebar?: boolean\n  title?: string\n}>()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Caside v-if=\"sidebar\">\n      Sidebar\n    \u003C\u002Faside>\n    \u003Cmain>\n      \u003Ch1>{{ title }}\u003C\u002Fh1>\n      \u003Cslot \u002F>\n    \u003C\u002Fmain>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","app\u002Flayouts\u002Fpanel.vue",[1027,3033,3034,3054,3069,3079,3088,3096,3104,3108,3117,3127,3149,3154,3163,3172,3191,3204,3212,3221],{"__ignoreMap":354},[1057,3035,3036,3038,3040,3042,3044,3046,3048,3050,3052],{"class":1059,"line":1060},[1057,3037,1064],{"class":1063},[1057,3039,1068],{"class":1067},[1057,3041,1072],{"class":1071},[1057,3043,1075],{"class":1071},[1057,3045,1078],{"class":1063},[1057,3047,1082],{"class":1081},[1057,3049,1086],{"class":1085},[1057,3051,1082],{"class":1081},[1057,3053,1091],{"class":1063},[1057,3055,3056,3059,3061,3063,3066],{"class":1059,"line":1094},[1057,3057,3058],{"class":1169},"const",[1057,3060,1538],{"class":2470},[1057,3062,2474],{"class":1183},[1057,3064,3065],{"class":1097}," defineProps",[1057,3067,3068],{"class":1063},"\u003C{\n",[1057,3070,3071,3074,3076],{"class":1059,"line":1107},[1057,3072,3073],{"class":1217},"  sidebar",[1057,3075,1221],{"class":1183},[1057,3077,3078],{"class":1195}," boolean\n",[1057,3080,3081,3084,3086],{"class":1059,"line":1129},[1057,3082,3083],{"class":1217},"  title",[1057,3085,1221],{"class":1183},[1057,3087,1306],{"class":1195},[1057,3089,3090,3093],{"class":1059,"line":1138},[1057,3091,3092],{"class":1063},"}>",[1057,3094,3095],{"class":1100},"()\n",[1057,3097,3098,3100,3102],{"class":1059,"line":1298},[1057,3099,1141],{"class":1063},[1057,3101,1068],{"class":1067},[1057,3103,1091],{"class":1063},[1057,3105,3106],{"class":1059,"line":1309},[1057,3107,1202],{"emptyLinePlaceholder":1201},[1057,3109,3110,3112,3115],{"class":1059,"line":1319},[1057,3111,1064],{"class":1063},[1057,3113,3114],{"class":1067},"template",[1057,3116,1091],{"class":1063},[1057,3118,3119,3122,3125],{"class":1059,"line":1343},[1057,3120,3121],{"class":1063},"  \u003C",[1057,3123,3124],{"class":1067},"div",[1057,3126,1091],{"class":1063},[1057,3128,3129,3132,3135,3138,3140,3142,3145,3147],{"class":1059,"line":1361},[1057,3130,3131],{"class":1063},"    \u003C",[1057,3133,3134],{"class":1067},"aside",[1057,3136,3137],{"class":1071}," v-if",[1057,3139,1078],{"class":1063},[1057,3141,1082],{"class":1081},[1057,3143,3144],{"class":1085},"sidebar",[1057,3146,1082],{"class":1081},[1057,3148,1091],{"class":1063},[1057,3150,3151],{"class":1059,"line":1373},[1057,3152,3153],{"class":1100},"      Sidebar\n",[1057,3155,3156,3159,3161],{"class":1059,"line":1388},[1057,3157,3158],{"class":1063},"    \u003C\u002F",[1057,3160,3134],{"class":1067},[1057,3162,1091],{"class":1063},[1057,3164,3165,3167,3170],{"class":1059,"line":1402},[1057,3166,3131],{"class":1063},[1057,3168,3169],{"class":1067},"main",[1057,3171,1091],{"class":1063},[1057,3173,3174,3177,3180,3182,3185,3187,3189],{"class":1059,"line":1431},[1057,3175,3176],{"class":1063},"      \u003C",[1057,3178,3179],{"class":1067},"h1",[1057,3181,1255],{"class":1063},[1057,3183,3184],{"class":1100},"{{ title }}",[1057,3186,1141],{"class":1063},[1057,3188,3179],{"class":1067},[1057,3190,1091],{"class":1063},[1057,3192,3193,3195,3198,3202],{"class":1059,"line":1467},[1057,3194,3176],{"class":1063},[1057,3196,3197],{"class":1067},"slot",[1057,3199,3201],{"class":3200},"sMKz0"," \u002F",[1057,3203,1091],{"class":1063},[1057,3205,3206,3208,3210],{"class":1059,"line":1482},[1057,3207,3158],{"class":1063},[1057,3209,3169],{"class":1067},[1057,3211,1091],{"class":1063},[1057,3213,3214,3217,3219],{"class":1059,"line":1565},[1057,3215,3216],{"class":1063},"  \u003C\u002F",[1057,3218,3124],{"class":1067},[1057,3220,1091],{"class":1063},[1057,3222,3223,3225,3227],{"class":1059,"line":1597},[1057,3224,1141],{"class":1063},[1057,3226,3114],{"class":1067},[1057,3228,1091],{"class":1063},[1024,3230,1114],{},[3232,3233],"tip",{},[1024,3235,3236,3237,3239,3240,3242],{},"通过 ",[1027,3238,601],{}," 设置的布局 props 是基于布局的 ",[1027,3241,1921],{}," 完全类型化的。你会在编辑器中获得自动补全和类型检查。\n:",[1147,3244],{"to":3245},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Flayouts#passing-props-to-layouts",[3247,3248,3249],"style",{},"html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .s6g6u, html code.shiki .s6g6u{--shiki-light:#E53935;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sXjFp, html code.shiki .sXjFp{--shiki-light:#9C3EDA;--shiki-default:#B392F0;--shiki-dark:#C792EA}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 .smVNa, html code.shiki .smVNa{--shiki-light:#90A4AE;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}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 .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 .sV7Px, html code.shiki .sV7Px{--shiki-light:#9C3EDA;--shiki-default:#F97583;--shiki-dark:#C792EA}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 .sXPRQ, html code.shiki .sXPRQ{--shiki-light:#39ADB5;--shiki-default:#F97583;--shiki-dark:#89DDFF}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 .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 .sJTDI, html code.shiki .sJTDI{--shiki-light:#90A4AE;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .si1Qm, html code.shiki .si1Qm{--shiki-light:#FF5370;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}html pre.shiki code .sMKz0, html code.shiki .sMKz0{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#FDAEB7;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:inherit}",{"title":354,"searchDepth":1107,"depth":1107,"links":3251},[3252,3253,3256],{"id":1153,"depth":1094,"text":1153},{"id":1654,"depth":1094,"text":1654,"children":3254},[3255],{"id":1180,"depth":1107,"text":1180},{"id":2223,"depth":1094,"text":2223,"children":3257},[3258,3259,3260,3261,3262],{"id":2226,"depth":1107,"text":2226},{"id":2382,"depth":1107,"text":2382},{"id":2685,"depth":1107,"text":2685},{"id":2792,"depth":1107,"text":2792},{"id":2897,"depth":1107,"text":2898},"md",{"links":3265},[3266],{"label":3267,"icon":3268,"to":3269,"size":1796},"Source","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Fmain\u002Fpackages\u002Fnuxt\u002Fsrc\u002Fpages\u002Fruntime\u002Fcomposables.ts",null,{"title":601,"description":602},"docs\u002F4.api\u002F3.utils\u002Fdefine-page-meta","7m9LrDF3afXAtBTlc-crg9jEKf6yI2ikGkMjfYklBEU",1785179858382]