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