[{"data":1,"prerenderedAt":3056},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fguide\u002Fgoing-further\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":342,"body":1020,"description":343,"extension":3050,"meta":3051,"navigation":3052,"path":341,"seo":3053,"stem":3054,"__hash__":3055},"docs\u002Fdocs\u002F3.guide\u002F6.going-further\u002F7.layers.md",{"type":1021,"value":1022,"toc":3030},"minimark",[1023,1027,3026],[1024,1025,1026],"p",{},"Nuxt layers 是一个强大的特性，你可以用来在 monorepo 中、或从 git 仓库或 npm 包中，共享和复用部分 Nuxt 应用。layer 的结构与标准的 Nuxt 应用几乎完全相同，这使得它们易于编写和维护。",[1028,1029,1030,1040,1076,1079,1162,1166,1447,1451,1459,1462,1491,1495,1512,1534,1537,1622,1629,1651,1660,1663,1673,1706,1709,1713,1716,1720,1723,1861,1881,1890,1916,1926,2005,2009,2012,2015,2084,2090,2244,2263,2266,2271,2274,2278,2292,2295,2347,2354,2357,2372,2384,2538,2550,2557,2634,2659,2662,2673,2681,2685,2695,2981,2986,2994,2997,3018],"read-more",{"to":57},[1024,1031,1032,1033,1039],{},"一个最小的 Nuxt layer 目录应该包含一个 ",[1034,1035,1036],"a",{"href":173},[1037,1038,174],"code",{}," 文件，以表明它是一个 layer。",[1041,1042,1047],"pre",{"className":1043,"code":1044,"filename":1045,"language":1046,"meta":354,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","export default defineNuxtConfig({})\n","base\u002Fnuxt.config.ts","ts",[1037,1048,1049],{"__ignoreMap":354},[1050,1051,1054,1058,1061,1065,1069,1073],"span",{"class":1052,"line":1053},"line",1,[1050,1055,1057],{"class":1056},"szyBz","export",[1050,1059,1060],{"class":1056}," default",[1050,1062,1064],{"class":1063},"srJn9"," defineNuxtConfig",[1050,1066,1068],{"class":1067},"smVNa","(",[1050,1070,1072],{"class":1071},"sF54B","{}",[1050,1074,1075],{"class":1067},")\n",[1024,1077,1078],{},"此外，layer 目录中的某些其它文件会被 Nuxt 自动扫描，并被扩展该 layer 的项目所使用。",[1080,1081,1082,1091,1099,1107,1115,1123,1131,1139,1147,1155],"ul",{},[1083,1084,1085,1090],"li",{},[1034,1086,1087],{"href":89},[1037,1088,1089],{},"app\u002Fcomponents\u002F*","   - 扩展默认组件",[1083,1092,1093,1098],{},[1034,1094,1095],{"href":93},[1037,1096,1097],{},"app\u002Fcomposables\u002F*","  - 扩展默认组合式函数",[1083,1100,1101,1106],{},[1034,1102,1103],{"href":97},[1037,1104,1105],{},"app\u002Flayouts\u002F*","  - 扩展默认布局",[1083,1108,1109,1114],{},[1034,1110,1111],{"href":101},[1037,1112,1113],{},"app\u002Fmiddleware\u002F*","  - 扩展默认中间件",[1083,1116,1117,1122],{},[1034,1118,1119],{"href":105},[1037,1120,1121],{},"app\u002Fpages\u002F*","        - 扩展默认页面",[1083,1124,1125,1130],{},[1034,1126,1127],{"href":109},[1037,1128,1129],{},"app\u002Fplugins\u002F*","        - 扩展默认插件",[1083,1132,1133,1138],{},[1034,1134,1135],{"href":113},[1037,1136,1137],{},"app\u002Futils\u002F*","   - 扩展默认工具函数",[1083,1140,1141,1146],{},[1034,1142,1143],{"href":121},[1037,1144,1145],{},"app\u002Fapp.config.ts","  - 扩展默认 app config",[1083,1148,1149,1154],{},[1034,1150,1151],{"href":149},[1037,1152,1153],{},"server\u002F*","       - 扩展默认服务端端点和中间件",[1083,1156,1157,1161],{},[1034,1158,1159],{"href":173},[1037,1160,174],{},"- 扩展默认 nuxt config",[1163,1164,1165],"h2",{"id":1165},"基础示例",[1167,1168,1170,1234,1274,1406],"code-tree",{":expand-all":1169,"default-value":174},"true",[1041,1171,1173],{"className":1043,"code":1172,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: [\n    '.\u002Fbase',\n  ],\n})\n",[1037,1174,1175,1188,1201,1218,1226],{"__ignoreMap":354},[1050,1176,1177,1179,1181,1183,1185],{"class":1052,"line":1053},[1050,1178,1057],{"class":1056},[1050,1180,1060],{"class":1056},[1050,1182,1064],{"class":1063},[1050,1184,1068],{"class":1067},[1050,1186,1187],{"class":1071},"{\n",[1050,1189,1191,1195,1198],{"class":1052,"line":1190},2,[1050,1192,1194],{"class":1193},"sOtFm","  extends",[1050,1196,1197],{"class":1071},":",[1050,1199,1200],{"class":1067}," [\n",[1050,1202,1204,1208,1212,1215],{"class":1052,"line":1203},3,[1050,1205,1207],{"class":1206},"s0jeK","    '",[1050,1209,1211],{"class":1210},"s-Aze",".\u002Fbase",[1050,1213,1214],{"class":1206},"'",[1050,1216,1217],{"class":1071},",\n",[1050,1219,1221,1224],{"class":1052,"line":1220},4,[1050,1222,1223],{"class":1067},"  ]",[1050,1225,1217],{"class":1071},[1050,1227,1229,1232],{"class":1052,"line":1228},5,[1050,1230,1231],{"class":1071},"}",[1050,1233,1075],{"class":1067},[1041,1235,1240],{"className":1236,"code":1237,"filename":1238,"language":1239,"meta":354,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Ctemplate>\n  \u003CBaseComponent \u002F>\n\u003C\u002Ftemplate>\n","app\u002Fapp.vue","vue",[1037,1241,1242,1254,1265],{"__ignoreMap":354},[1050,1243,1244,1247,1251],{"class":1052,"line":1053},[1050,1245,1246],{"class":1071},"\u003C",[1050,1248,1250],{"class":1249},"s6g6u","template",[1050,1252,1253],{"class":1071},">\n",[1050,1255,1256,1259,1262],{"class":1052,"line":1190},[1050,1257,1258],{"class":1071},"  \u003C",[1050,1260,1261],{"class":1249},"BaseComponent",[1050,1263,1264],{"class":1071}," \u002F>\n",[1050,1266,1267,1270,1272],{"class":1052,"line":1203},[1050,1268,1269],{"class":1071},"\u003C\u002F",[1050,1271,1250],{"class":1249},[1050,1273,1253],{"class":1071},[1041,1275,1277],{"className":1043,"code":1276,"filename":1045,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  \u002F\u002F 从 base 的 nuxt.config.ts 扩展！\n  app: {\n    head: {\n      title: '扩展配置很有趣！',\n      meta: [\n        { name: 'description', content: '我正在使用 Nuxt 的 extends 特性！' },\n      ],\n    },\n  },\n})\n",[1037,1278,1279,1291,1297,1307,1316,1333,1343,1379,1387,1393,1399],{"__ignoreMap":354},[1050,1280,1281,1283,1285,1287,1289],{"class":1052,"line":1053},[1050,1282,1057],{"class":1056},[1050,1284,1060],{"class":1056},[1050,1286,1064],{"class":1063},[1050,1288,1068],{"class":1067},[1050,1290,1187],{"class":1071},[1050,1292,1293],{"class":1052,"line":1190},[1050,1294,1296],{"class":1295},"sZqJ9","  \u002F\u002F 从 base 的 nuxt.config.ts 扩展！\n",[1050,1298,1299,1302,1304],{"class":1052,"line":1203},[1050,1300,1301],{"class":1193},"  app",[1050,1303,1197],{"class":1071},[1050,1305,1306],{"class":1071}," {\n",[1050,1308,1309,1312,1314],{"class":1052,"line":1220},[1050,1310,1311],{"class":1193},"    head",[1050,1313,1197],{"class":1071},[1050,1315,1306],{"class":1071},[1050,1317,1318,1321,1323,1326,1329,1331],{"class":1052,"line":1228},[1050,1319,1320],{"class":1193},"      title",[1050,1322,1197],{"class":1071},[1050,1324,1325],{"class":1206}," '",[1050,1327,1328],{"class":1210},"扩展配置很有趣！",[1050,1330,1214],{"class":1206},[1050,1332,1217],{"class":1071},[1050,1334,1336,1339,1341],{"class":1052,"line":1335},6,[1050,1337,1338],{"class":1193},"      meta",[1050,1340,1197],{"class":1071},[1050,1342,1200],{"class":1067},[1050,1344,1346,1349,1352,1354,1356,1359,1361,1364,1367,1369,1371,1374,1376],{"class":1052,"line":1345},7,[1050,1347,1348],{"class":1071},"        {",[1050,1350,1351],{"class":1193}," name",[1050,1353,1197],{"class":1071},[1050,1355,1325],{"class":1206},[1050,1357,1358],{"class":1210},"description",[1050,1360,1214],{"class":1206},[1050,1362,1363],{"class":1071},",",[1050,1365,1366],{"class":1193}," content",[1050,1368,1197],{"class":1071},[1050,1370,1325],{"class":1206},[1050,1372,1373],{"class":1210},"我正在使用 Nuxt 的 extends 特性！",[1050,1375,1214],{"class":1206},[1050,1377,1378],{"class":1071}," },\n",[1050,1380,1382,1385],{"class":1052,"line":1381},8,[1050,1383,1384],{"class":1067},"      ]",[1050,1386,1217],{"class":1071},[1050,1388,1390],{"class":1052,"line":1389},9,[1050,1391,1392],{"class":1071},"    },\n",[1050,1394,1396],{"class":1052,"line":1395},10,[1050,1397,1398],{"class":1071},"  },\n",[1050,1400,1402,1404],{"class":1052,"line":1401},11,[1050,1403,1231],{"class":1071},[1050,1405,1075],{"class":1067},[1041,1407,1410],{"className":1236,"code":1408,"filename":1409,"language":1239,"meta":354,"style":354},"\u003Ctemplate>\n  \u003Ch1>扩展组件很有趣！\u003C\u002Fh1>\n\u003C\u002Ftemplate>\n","base\u002Fapp\u002Fcomponents\u002FBaseComponent.vue",[1037,1411,1412,1420,1439],{"__ignoreMap":354},[1050,1413,1414,1416,1418],{"class":1052,"line":1053},[1050,1415,1246],{"class":1071},[1050,1417,1250],{"class":1249},[1050,1419,1253],{"class":1071},[1050,1421,1422,1424,1427,1430,1433,1435,1437],{"class":1052,"line":1190},[1050,1423,1258],{"class":1071},[1050,1425,1426],{"class":1249},"h1",[1050,1428,1429],{"class":1071},">",[1050,1431,1432],{"class":1067},"扩展组件很有趣！",[1050,1434,1269],{"class":1071},[1050,1436,1426],{"class":1249},[1050,1438,1253],{"class":1071},[1050,1440,1441,1443,1445],{"class":1052,"line":1203},[1050,1442,1269],{"class":1071},[1050,1444,1250],{"class":1249},[1050,1446,1253],{"class":1071},[1163,1448,1450],{"id":1449},"layer-优先级","Layer 优先级",[1024,1452,1453,1454,1458],{},"当从多个 layer 扩展时，理解覆盖顺序很重要。当它们定义了相同的文件或组件时，",[1455,1456,1457],"strong",{},"优先级更高","的 layer 会覆盖优先级更低的 layer。",[1024,1460,1461],{},"优先级从高到低为：",[1463,1464,1465,1471,1482],"ol",{},[1083,1466,1467,1470],{},[1455,1468,1469],{},"你的项目文件"," - 始终拥有最高的优先级",[1083,1472,1473,1474,1477,1478,1481],{},"来自 ",[1037,1475,1476],{},"~~\u002Flayers"," 目录的",[1455,1479,1480],{},"自动扫描 layer"," - 按字母顺序排序（Z 的优先级高于 A）",[1083,1483,1484,1490],{},[1455,1485,1486,1489],{},[1037,1487,1488],{},"extends"," 配置中的 layer"," - 第一个条目的优先级高于第二个",[1492,1493,1494],"h3",{"id":1494},"何时使用哪种",[1080,1496,1497,1504],{},[1083,1498,1499,1503],{},[1455,1500,1501],{},[1037,1502,1488],{}," - 用于外部依赖（npm 包、远程仓库）或项目目录之外的 layer",[1083,1505,1506,1511],{},[1455,1507,1508,1510],{},[1037,1509,1476],{}," 目录"," - 用于作为你项目一部分的本地 layer",[1513,1514,1515],"tip",{},[1024,1516,1517,1518,1521,1522,1525,1526,1529,1530,1533],{},"如果你需要控制自动扫描 layer 的顺序，可以给它们加上数字前缀：",[1037,1519,1520],{},"~\u002Flayers\u002F1.z-layer","、",[1037,1523,1524],{},"~\u002Flayers\u002F2.a-layer","。这样 ",[1037,1527,1528],{},"2.a-layer"," 的优先级会高于 ",[1037,1531,1532],{},"1.z-layer","。",[1492,1535,1536],{"id":1536},"示例",[1041,1538,1540],{"className":1043,"code":1539,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: [\n    \u002F\u002F 项目外的本地 layer\n    '..\u002Fbase',\n    \u002F\u002F NPM 包\n    '@my-themes\u002Fawesome',\n    \u002F\u002F 远程仓库\n    'github:my-themes\u002Fawesome#v1',\n  ],\n})\n",[1037,1541,1542,1554,1562,1567,1578,1583,1594,1599,1610,1616],{"__ignoreMap":354},[1050,1543,1544,1546,1548,1550,1552],{"class":1052,"line":1053},[1050,1545,1057],{"class":1056},[1050,1547,1060],{"class":1056},[1050,1549,1064],{"class":1063},[1050,1551,1068],{"class":1067},[1050,1553,1187],{"class":1071},[1050,1555,1556,1558,1560],{"class":1052,"line":1190},[1050,1557,1194],{"class":1193},[1050,1559,1197],{"class":1071},[1050,1561,1200],{"class":1067},[1050,1563,1564],{"class":1052,"line":1203},[1050,1565,1566],{"class":1295},"    \u002F\u002F 项目外的本地 layer\n",[1050,1568,1569,1571,1574,1576],{"class":1052,"line":1220},[1050,1570,1207],{"class":1206},[1050,1572,1573],{"class":1210},"..\u002Fbase",[1050,1575,1214],{"class":1206},[1050,1577,1217],{"class":1071},[1050,1579,1580],{"class":1052,"line":1228},[1050,1581,1582],{"class":1295},"    \u002F\u002F NPM 包\n",[1050,1584,1585,1587,1590,1592],{"class":1052,"line":1335},[1050,1586,1207],{"class":1206},[1050,1588,1589],{"class":1210},"@my-themes\u002Fawesome",[1050,1591,1214],{"class":1206},[1050,1593,1217],{"class":1071},[1050,1595,1596],{"class":1052,"line":1345},[1050,1597,1598],{"class":1295},"    \u002F\u002F 远程仓库\n",[1050,1600,1601,1603,1606,1608],{"class":1052,"line":1381},[1050,1602,1207],{"class":1206},[1050,1604,1605],{"class":1210},"github:my-themes\u002Fawesome#v1",[1050,1607,1214],{"class":1206},[1050,1609,1217],{"class":1071},[1050,1611,1612,1614],{"class":1052,"line":1389},[1050,1613,1223],{"class":1067},[1050,1615,1217],{"class":1071},[1050,1617,1618,1620],{"class":1052,"line":1395},[1050,1619,1231],{"class":1071},[1050,1621,1075],{"class":1067},[1024,1623,1624,1625,1628],{},"如果你同时拥有 ",[1037,1626,1627],{},"~~\u002Flayers\u002Fcustom","，优先级顺序是：",[1080,1630,1631,1634,1638,1642,1646],{},[1083,1632,1633],{},"你的项目文件（最高）",[1083,1635,1636],{},[1037,1637,1627],{},[1083,1639,1640],{},[1037,1641,1573],{},[1083,1643,1644],{},[1037,1645,1589],{},[1083,1647,1648,1650],{},[1037,1649,1605],{},"（最低）",[1024,1652,1653,1654,1656,1657,1659],{},"这意味着你的项目文件会覆盖任何 layer，而 ",[1037,1655,1627],{}," 会覆盖 ",[1037,1658,1488],{}," 中的任何内容。",[1163,1661,1662],{"id":1662},"启动模板",[1024,1664,1665,1666,1672],{},"要开始，你可以使用 ",[1034,1667,1671],{"href":1668,"rel":1669},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fstarter\u002Ftree\u002Flayer",[1670],"nofollow","nuxt\u002Fstarter\u002Flayer 模板"," 初始化一个 layer。这会创建一个你可以继续构建的基础结构。在终端中执行此命令来开始：",[1041,1674,1679],{"className":1675,"code":1676,"filename":1677,"language":1678,"meta":354,"style":354},"language-bash shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","npm create nuxt -- --template layer nuxt-layer\n","Terminal","bash",[1037,1680,1681],{"__ignoreMap":354},[1050,1682,1683,1687,1690,1693,1697,1700,1703],{"class":1052,"line":1053},[1050,1684,1686],{"class":1685},"sJK67","npm",[1050,1688,1689],{"class":1210}," create",[1050,1691,1692],{"class":1210}," nuxt",[1050,1694,1696],{"class":1695},"supr-"," --",[1050,1698,1699],{"class":1695}," --template",[1050,1701,1702],{"class":1210}," layer",[1050,1704,1705],{"class":1210}," nuxt-layer\n",[1024,1707,1708],{},"按照 README 中的说明进行后续步骤。",[1163,1710,1712],{"id":1711},"发布-layers","发布 Layers",[1024,1714,1715],{},"你可以通过远程源或 npm 包来发布和共享 layer。",[1492,1717,1719],{"id":1718},"git-仓库","Git 仓库",[1024,1721,1722],{},"你可以使用 git 仓库来共享你的 Nuxt layer。一些例子：",[1041,1724,1726],{"className":1043,"code":1725,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: [\n    \u002F\u002F GitHub 远程源\n    'github:username\u002FrepoName',\n    \u002F\u002F GitHub 位于 \u002Fbase 目录下的远程源\n    'github:username\u002FrepoName\u002Fbase',\n    \u002F\u002F 使用 dev 分支的 GitHub 远程源\n    'github:username\u002FrepoName#dev',\n    \u002F\u002F 使用 v1.0.0 tag 的 GitHub 远程源\n    'github:username\u002FrepoName#v1.0.0',\n    \u002F\u002F GitLab 远程源示例\n    'gitlab:username\u002FrepoName',\n    \u002F\u002F Bitbucket 远程源示例\n    'bitbucket:username\u002FrepoName',\n  ],\n})\n",[1037,1727,1728,1740,1748,1753,1764,1769,1780,1785,1796,1801,1812,1817,1829,1835,1847,1854],{"__ignoreMap":354},[1050,1729,1730,1732,1734,1736,1738],{"class":1052,"line":1053},[1050,1731,1057],{"class":1056},[1050,1733,1060],{"class":1056},[1050,1735,1064],{"class":1063},[1050,1737,1068],{"class":1067},[1050,1739,1187],{"class":1071},[1050,1741,1742,1744,1746],{"class":1052,"line":1190},[1050,1743,1194],{"class":1193},[1050,1745,1197],{"class":1071},[1050,1747,1200],{"class":1067},[1050,1749,1750],{"class":1052,"line":1203},[1050,1751,1752],{"class":1295},"    \u002F\u002F GitHub 远程源\n",[1050,1754,1755,1757,1760,1762],{"class":1052,"line":1220},[1050,1756,1207],{"class":1206},[1050,1758,1759],{"class":1210},"github:username\u002FrepoName",[1050,1761,1214],{"class":1206},[1050,1763,1217],{"class":1071},[1050,1765,1766],{"class":1052,"line":1228},[1050,1767,1768],{"class":1295},"    \u002F\u002F GitHub 位于 \u002Fbase 目录下的远程源\n",[1050,1770,1771,1773,1776,1778],{"class":1052,"line":1335},[1050,1772,1207],{"class":1206},[1050,1774,1775],{"class":1210},"github:username\u002FrepoName\u002Fbase",[1050,1777,1214],{"class":1206},[1050,1779,1217],{"class":1071},[1050,1781,1782],{"class":1052,"line":1345},[1050,1783,1784],{"class":1295},"    \u002F\u002F 使用 dev 分支的 GitHub 远程源\n",[1050,1786,1787,1789,1792,1794],{"class":1052,"line":1381},[1050,1788,1207],{"class":1206},[1050,1790,1791],{"class":1210},"github:username\u002FrepoName#dev",[1050,1793,1214],{"class":1206},[1050,1795,1217],{"class":1071},[1050,1797,1798],{"class":1052,"line":1389},[1050,1799,1800],{"class":1295},"    \u002F\u002F 使用 v1.0.0 tag 的 GitHub 远程源\n",[1050,1802,1803,1805,1808,1810],{"class":1052,"line":1395},[1050,1804,1207],{"class":1206},[1050,1806,1807],{"class":1210},"github:username\u002FrepoName#v1.0.0",[1050,1809,1214],{"class":1206},[1050,1811,1217],{"class":1071},[1050,1813,1814],{"class":1052,"line":1401},[1050,1815,1816],{"class":1295},"    \u002F\u002F GitLab 远程源示例\n",[1050,1818,1820,1822,1825,1827],{"class":1052,"line":1819},12,[1050,1821,1207],{"class":1206},[1050,1823,1824],{"class":1210},"gitlab:username\u002FrepoName",[1050,1826,1214],{"class":1206},[1050,1828,1217],{"class":1071},[1050,1830,1832],{"class":1052,"line":1831},13,[1050,1833,1834],{"class":1295},"    \u002F\u002F Bitbucket 远程源示例\n",[1050,1836,1838,1840,1843,1845],{"class":1052,"line":1837},14,[1050,1839,1207],{"class":1206},[1050,1841,1842],{"class":1210},"bitbucket:username\u002FrepoName",[1050,1844,1214],{"class":1206},[1050,1846,1217],{"class":1071},[1050,1848,1850,1852],{"class":1052,"line":1849},15,[1050,1851,1223],{"class":1067},[1050,1853,1217],{"class":1071},[1050,1855,1857,1859],{"class":1052,"line":1856},16,[1050,1858,1231],{"class":1071},[1050,1860,1075],{"class":1067},[1862,1863,1864,1873],"note",{},[1024,1865,1866,1867,1872],{},"我们建议将你的 layer 内容作为 npm 包（公开或私有，例如通过 ",[1034,1868,1871],{"href":1869,"rel":1870},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Flearn-github-packages\u002Fintroduction-to-github-packages",[1670],"GitHub Packages","）发布，而不是依赖远程 layer。",[1024,1874,1875,1876,1533],{},"或者，你可以",[1034,1877,1880],{"href":1878,"rel":1879},"https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fv11\u002Fconfiguring-npm\u002Fpackage-json#git-urls-as-dependencies",[1670],"直接将远程 git URL 作为依赖添加",[1513,1882,1883],{},[1024,1884,1885,1886,1889],{},"如果你想扩展一个私有的远程源，你需要添加环境变量 ",[1037,1887,1888],{},"GIGET_AUTH=\u003Ctoken>"," 来提供一个 token。",[1513,1891,1892],{},[1024,1893,1894,1895,1898,1899,1902,1903,1906,1907,1533],{},"如果你想从一个自托管的 GitHub 或 GitLab 实例扩展远程源，你需要用 ",[1037,1896,1897],{},"GIGET_GITHUB_URL=\u003Curl>"," 或 ",[1037,1900,1901],{},"GIGET_GITLAB_URL=\u003Curl>"," 环境变量提供它的 URL——或者直接在 ",[1037,1904,1905],{},"nuxt.config"," 中",[1034,1908,1911,1912,1915],{"href":1909,"rel":1910},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fc12#extending-config-layer-from-remote-sources",[1670],"用 ",[1037,1913,1914],{},"auth"," 选项配置",[1917,1918,1919],"warning",{},[1024,1920,1921,1922,1925],{},"请记住，如果你作为 layer 扩展一个远程源，你将无法在 Nuxt 之外访问它的依赖。例如，如果远程 layer 依赖一个 eslint 插件，这无法在你的 eslint 配置中使用。这是因为这些依赖位于一个特殊的位置（",[1037,1923,1924],{},"node_modules\u002F.c12\u002Flayer_name\u002Fnode_modules\u002F","），你的包管理器无法访问。",[1862,1927,1928,1935],{},[1024,1929,1930,1931,1934],{},"使用 git 远程源时，如果某个 layer 有 npm 依赖且你希望安装它们，你可以通过在 layer 选项中指定 ",[1037,1932,1933],{},"install: true"," 来实现。",[1041,1936,1938],{"className":1043,"code":1937,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: [\n    ['github:username\u002FrepoName', { install: true }],\n  ],\n})\n",[1037,1939,1940,1952,1960,1993,1999],{"__ignoreMap":354},[1050,1941,1942,1944,1946,1948,1950],{"class":1052,"line":1053},[1050,1943,1057],{"class":1056},[1050,1945,1060],{"class":1056},[1050,1947,1064],{"class":1063},[1050,1949,1068],{"class":1067},[1050,1951,1187],{"class":1071},[1050,1953,1954,1956,1958],{"class":1052,"line":1190},[1050,1955,1194],{"class":1193},[1050,1957,1197],{"class":1071},[1050,1959,1200],{"class":1067},[1050,1961,1962,1965,1967,1969,1971,1973,1976,1979,1981,1985,1988,1991],{"class":1052,"line":1203},[1050,1963,1964],{"class":1067},"    [",[1050,1966,1214],{"class":1206},[1050,1968,1759],{"class":1210},[1050,1970,1214],{"class":1206},[1050,1972,1363],{"class":1071},[1050,1974,1975],{"class":1071}," {",[1050,1977,1978],{"class":1193}," install",[1050,1980,1197],{"class":1071},[1050,1982,1984],{"class":1983},"si1Qm"," true",[1050,1986,1987],{"class":1071}," }",[1050,1989,1990],{"class":1067},"]",[1050,1992,1217],{"class":1071},[1050,1994,1995,1997],{"class":1052,"line":1220},[1050,1996,1223],{"class":1067},[1050,1998,1217],{"class":1071},[1050,2000,2001,2003],{"class":1052,"line":1228},[1050,2002,1231],{"class":1071},[1050,2004,1075],{"class":1067},[1492,2006,2008],{"id":2007},"npm-包","npm 包",[1024,2010,2011],{},"你可以将 Nuxt layers 作为 npm 包发布，其中包含你想要扩展的文件和依赖。这允许你与他人共享你的配置、在多个项目中使用它，或者私有地使用它。",[1024,2013,2014],{},"要从 npm 包扩展，你需要确保该模块已发布到 npm，并作为 devDependency 安装在用户的项目中。然后你就可以使用该模块名来扩展当前的 nuxt 配置：",[1041,2016,2018],{"className":1043,"code":2017,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: [\n    \u002F\u002F 带作用域的 Node 模块\n    '@scope\u002FmoduleName',\n    \u002F\u002F 或者仅仅是模块名\n    'moduleName',\n  ],\n})\n",[1037,2019,2020,2032,2040,2045,2056,2061,2072,2078],{"__ignoreMap":354},[1050,2021,2022,2024,2026,2028,2030],{"class":1052,"line":1053},[1050,2023,1057],{"class":1056},[1050,2025,1060],{"class":1056},[1050,2027,1064],{"class":1063},[1050,2029,1068],{"class":1067},[1050,2031,1187],{"class":1071},[1050,2033,2034,2036,2038],{"class":1052,"line":1190},[1050,2035,1194],{"class":1193},[1050,2037,1197],{"class":1071},[1050,2039,1200],{"class":1067},[1050,2041,2042],{"class":1052,"line":1203},[1050,2043,2044],{"class":1295},"    \u002F\u002F 带作用域的 Node 模块\n",[1050,2046,2047,2049,2052,2054],{"class":1052,"line":1220},[1050,2048,1207],{"class":1206},[1050,2050,2051],{"class":1210},"@scope\u002FmoduleName",[1050,2053,1214],{"class":1206},[1050,2055,1217],{"class":1071},[1050,2057,2058],{"class":1052,"line":1228},[1050,2059,2060],{"class":1295},"    \u002F\u002F 或者仅仅是模块名\n",[1050,2062,2063,2065,2068,2070],{"class":1052,"line":1335},[1050,2064,1207],{"class":1206},[1050,2066,2067],{"class":1210},"moduleName",[1050,2069,1214],{"class":1206},[1050,2071,1217],{"class":1071},[1050,2073,2074,2076],{"class":1052,"line":1345},[1050,2075,1223],{"class":1067},[1050,2077,1217],{"class":1071},[1050,2079,2080,2082],{"class":1052,"line":1381},[1050,2081,1231],{"class":1071},[1050,2083,1075],{"class":1067},[1024,2085,2086,2087,2089],{},"要将一个 layer 目录作为 npm 包发布，你需要确保 ",[1037,2088,178],{}," 中填写了正确的属性。这能确保在发布包时包含相应的文件。",[1041,2091,2095],{"className":2092,"code":2093,"filename":178,"language":2094,"meta":354,"style":354},"language-json shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","{\n  \"name\": \"my-theme\",\n  \"version\": \"1.0.0\",\n  \"type\": \"module\",\n  \"main\": \".\u002Fnuxt.config.ts\",\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"nuxt\": \"^3.0.0\"\n  }\n}\n","json",[1037,2096,2097,2101,2126,2146,2166,2186,2200,2213,2234,2239],{"__ignoreMap":354},[1050,2098,2099],{"class":1052,"line":1053},[1050,2100,1187],{"class":1071},[1050,2102,2103,2107,2111,2114,2116,2119,2122,2124],{"class":1052,"line":1190},[1050,2104,2106],{"class":2105},"s0q4w","  \"",[1050,2108,2110],{"class":2109},"sS9nB","name",[1050,2112,2113],{"class":2105},"\"",[1050,2115,1197],{"class":1071},[1050,2117,2118],{"class":1206}," \"",[1050,2120,2121],{"class":1210},"my-theme",[1050,2123,2113],{"class":1206},[1050,2125,1217],{"class":1071},[1050,2127,2128,2130,2133,2135,2137,2139,2142,2144],{"class":1052,"line":1203},[1050,2129,2106],{"class":2105},[1050,2131,2132],{"class":2109},"version",[1050,2134,2113],{"class":2105},[1050,2136,1197],{"class":1071},[1050,2138,2118],{"class":1206},[1050,2140,2141],{"class":1210},"1.0.0",[1050,2143,2113],{"class":1206},[1050,2145,1217],{"class":1071},[1050,2147,2148,2150,2153,2155,2157,2159,2162,2164],{"class":1052,"line":1220},[1050,2149,2106],{"class":2105},[1050,2151,2152],{"class":2109},"type",[1050,2154,2113],{"class":2105},[1050,2156,1197],{"class":1071},[1050,2158,2118],{"class":1206},[1050,2160,2161],{"class":1210},"module",[1050,2163,2113],{"class":1206},[1050,2165,1217],{"class":1071},[1050,2167,2168,2170,2173,2175,2177,2179,2182,2184],{"class":1052,"line":1228},[1050,2169,2106],{"class":2105},[1050,2171,2172],{"class":2109},"main",[1050,2174,2113],{"class":2105},[1050,2176,1197],{"class":1071},[1050,2178,2118],{"class":1206},[1050,2180,2181],{"class":1210},".\u002Fnuxt.config.ts",[1050,2183,2113],{"class":1206},[1050,2185,1217],{"class":1071},[1050,2187,2188,2190,2193,2195,2197],{"class":1052,"line":1335},[1050,2189,2106],{"class":2105},[1050,2191,2192],{"class":2109},"dependencies",[1050,2194,2113],{"class":2105},[1050,2196,1197],{"class":1071},[1050,2198,2199],{"class":1071}," {},\n",[1050,2201,2202,2204,2207,2209,2211],{"class":1052,"line":1345},[1050,2203,2106],{"class":2105},[1050,2205,2206],{"class":2109},"devDependencies",[1050,2208,2113],{"class":2105},[1050,2210,1197],{"class":1071},[1050,2212,1306],{"class":1071},[1050,2214,2215,2218,2222,2224,2226,2228,2231],{"class":1052,"line":1381},[1050,2216,2217],{"class":2105},"    \"",[1050,2219,2221],{"class":2220},"seQRr","nuxt",[1050,2223,2113],{"class":2105},[1050,2225,1197],{"class":1071},[1050,2227,2118],{"class":1206},[1050,2229,2230],{"class":1210},"^3.0.0",[1050,2232,2233],{"class":1206},"\"\n",[1050,2235,2236],{"class":1052,"line":1389},[1050,2237,2238],{"class":1071},"  }\n",[1050,2240,2241],{"class":1052,"line":1395},[1050,2242,2243],{"class":1071},"}\n",[2245,2246,2247],"important",{},[1024,2248,2249,2250,2253,2254,2256,2257,2259,2260,2262],{},"确保 layer 中导入的任何依赖都被",[1455,2251,2252],{},"显式添加","到 ",[1037,2255,2192],{}," 中。",[1037,2258,2221],{}," 依赖，以及任何仅用于在发布前测试 layer 的依赖，应该保留在 ",[1037,2261,2206],{}," 字段中。",[1024,2264,2265],{},"现在你可以继续将模块发布到 npm，无论是公开还是私有。",[2245,2267,2268],{},[1024,2269,2270],{},"当将 layer 作为私有 npm 包发布时，你需要确保已登录，以向 npm 进行身份验证来下载该 node 模块。",[1163,2272,2273],{"id":2273},"提示",[1492,2275,2277],{"id":2276},"具名-layer-别名","具名 Layer 别名",[1024,2279,2280,2281,2283,2284,2287,2288,2291],{},"自动扫描的 layer（来自你的 ",[1037,2282,1476],{}," 目录）会自动创建别名。例如，你可以通过 ",[1037,2285,2286],{},"#layers\u002Ftest"," 访问你的 ",[1037,2289,2290],{},"~~\u002Flayers\u002Ftest"," layer。",[1024,2293,2294],{},"如果你想为其它 layer 创建具名 layer 别名，你可以在该 layer 的配置中指定一个名称。",[1041,2296,2298],{"className":1043,"code":2297,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  $meta: {\n    name: 'example',\n  },\n})\n",[1037,2299,2300,2312,2321,2337,2341],{"__ignoreMap":354},[1050,2301,2302,2304,2306,2308,2310],{"class":1052,"line":1053},[1050,2303,1057],{"class":1056},[1050,2305,1060],{"class":1056},[1050,2307,1064],{"class":1063},[1050,2309,1068],{"class":1067},[1050,2311,1187],{"class":1071},[1050,2313,2314,2317,2319],{"class":1052,"line":1190},[1050,2315,2316],{"class":1193},"  $meta",[1050,2318,1197],{"class":1071},[1050,2320,1306],{"class":1071},[1050,2322,2323,2326,2328,2330,2333,2335],{"class":1052,"line":1203},[1050,2324,2325],{"class":1193},"    name",[1050,2327,1197],{"class":1071},[1050,2329,1325],{"class":1206},[1050,2331,2332],{"class":1210},"example",[1050,2334,1214],{"class":1206},[1050,2336,1217],{"class":1071},[1050,2338,2339],{"class":1052,"line":1220},[1050,2340,1398],{"class":1071},[1050,2342,2343,2345],{"class":1052,"line":1228},[1050,2344,1231],{"class":1071},[1050,2346,1075],{"class":1067},[1024,2348,2349,2350,2353],{},"这会生成一个指向你 layer 的 ",[1037,2351,2352],{},"#layers\u002Fexample"," 别名。",[1492,2355,2356],{"id":2356},"相对路径与别名",[1024,2358,2359,2360,2363,2364,2367,2368,2371],{},"在 layer 的组件和组合式函数中使用全局别名（如 ",[1037,2361,2362],{},"~\u002F"," 和 ",[1037,2365,2366],{},"@\u002F","）导入时，请注意这些别名是相对于用户项目路径解析的。作为变通方案，你可以",[1455,2369,2370],{},"使用相对路径","来导入它们，或者使用具名 layer 别名。",[1024,2373,2374,2375,2377,2378,2380,2381,2383],{},"同样，在 layer 的 ",[1037,2376,1905],{}," 文件中使用相对路径时（嵌套的 ",[1037,2379,1488],{}," 除外），它们是相对于用户的项目解析的，而不是相对于 layer。作为变通方案，在 ",[1037,2382,1905],{}," 中使用完整的解析路径：",[1041,2385,2387],{"className":1043,"code":2386,"filename":174,"language":1046,"meta":354,"style":354},"import { fileURLToPath } from 'node:url'\nimport { dirname, join } from 'node:path'\n\nconst currentDir = dirname(fileURLToPath(import.meta.url))\n\nexport default defineNuxtConfig({\n  css: [\n    join(currentDir, '.\u002Fapp\u002Fassets\u002Fmain.css'),\n  ],\n})\n",[1037,2388,2389,2412,2437,2443,2479,2483,2495,2504,2526,2532],{"__ignoreMap":354},[1050,2390,2391,2394,2396,2399,2401,2404,2406,2409],{"class":1052,"line":1053},[1050,2392,2393],{"class":1056},"import",[1050,2395,1975],{"class":1071},[1050,2397,2398],{"class":1067}," fileURLToPath",[1050,2400,1987],{"class":1071},[1050,2402,2403],{"class":1056}," from",[1050,2405,1325],{"class":1206},[1050,2407,2408],{"class":1210},"node:url",[1050,2410,2411],{"class":1206},"'\n",[1050,2413,2414,2416,2418,2421,2423,2426,2428,2430,2432,2435],{"class":1052,"line":1190},[1050,2415,2393],{"class":1056},[1050,2417,1975],{"class":1071},[1050,2419,2420],{"class":1067}," dirname",[1050,2422,1363],{"class":1071},[1050,2424,2425],{"class":1067}," join",[1050,2427,1987],{"class":1071},[1050,2429,2403],{"class":1056},[1050,2431,1325],{"class":1206},[1050,2433,2434],{"class":1210},"node:path",[1050,2436,2411],{"class":1206},[1050,2438,2439],{"class":1052,"line":1203},[1050,2440,2442],{"emptyLinePlaceholder":2441},true,"\n",[1050,2444,2445,2449,2453,2457,2459,2461,2464,2466,2468,2471,2474,2476],{"class":1052,"line":1220},[1050,2446,2448],{"class":2447},"sV7Px","const",[1050,2450,2452],{"class":2451},"sJTDI"," currentDir",[1050,2454,2456],{"class":2455},"sXPRQ"," =",[1050,2458,2420],{"class":1063},[1050,2460,1068],{"class":1067},[1050,2462,2463],{"class":1063},"fileURLToPath",[1050,2465,1068],{"class":1067},[1050,2467,2393],{"class":1056},[1050,2469,2470],{"class":1071},".",[1050,2472,2473],{"class":2451},"meta",[1050,2475,2470],{"class":1071},[1050,2477,2478],{"class":1067},"url))\n",[1050,2480,2481],{"class":1052,"line":1228},[1050,2482,2442],{"emptyLinePlaceholder":2441},[1050,2484,2485,2487,2489,2491,2493],{"class":1052,"line":1335},[1050,2486,1057],{"class":1056},[1050,2488,1060],{"class":1056},[1050,2490,1064],{"class":1063},[1050,2492,1068],{"class":1067},[1050,2494,1187],{"class":1071},[1050,2496,2497,2500,2502],{"class":1052,"line":1345},[1050,2498,2499],{"class":1193},"  css",[1050,2501,1197],{"class":1071},[1050,2503,1200],{"class":1067},[1050,2505,2506,2509,2512,2514,2516,2519,2521,2524],{"class":1052,"line":1381},[1050,2507,2508],{"class":1063},"    join",[1050,2510,2511],{"class":1067},"(currentDir",[1050,2513,1363],{"class":1071},[1050,2515,1325],{"class":1206},[1050,2517,2518],{"class":1210},".\u002Fapp\u002Fassets\u002Fmain.css",[1050,2520,1214],{"class":1206},[1050,2522,2523],{"class":1067},")",[1050,2525,1217],{"class":1071},[1050,2527,2528,2530],{"class":1052,"line":1389},[1050,2529,1223],{"class":1067},[1050,2531,1217],{"class":1071},[1050,2533,2534,2536],{"class":1052,"line":1395},[1050,2535,1231],{"class":1071},[1050,2537,1075],{"class":1067},[1163,2539,2541,2542],{"id":2540},"从-layers-中禁用模块-v43","从 Layers 中禁用模块 ",[2543,2544,2549],"badge",{"className":2545,"color":2547,"size":2548},[2546],"align-middle","info","xs","v4.3",[1024,2551,2552,2553,2556],{},"当扩展一个 layer 时，你可能想禁用它包含的某些模块。你可以通过将模块的 config key 设为 ",[1037,2554,2555],{},"false"," 来做到这一点，在你的 Nuxt 配置中。",[1041,2558,2560],{"className":1043,"code":2559,"filename":174,"language":1046,"meta":354,"style":354},"export default defineNuxtConfig({\n  extends: ['.\u002Fbase-layer'],\n  \u002F\u002F 通过将它们的 config key 设为 false 来禁用 layer 中的模块\n  image: false, \u002F\u002F 禁用 @nuxt\u002Fimage\n  pinia: false, \u002F\u002F 禁用 @pinia\u002Fnuxt\n})\n",[1037,2561,2562,2574,2594,2599,2614,2628],{"__ignoreMap":354},[1050,2563,2564,2566,2568,2570,2572],{"class":1052,"line":1053},[1050,2565,1057],{"class":1056},[1050,2567,1060],{"class":1056},[1050,2569,1064],{"class":1063},[1050,2571,1068],{"class":1067},[1050,2573,1187],{"class":1071},[1050,2575,2576,2578,2580,2583,2585,2588,2590,2592],{"class":1052,"line":1190},[1050,2577,1194],{"class":1193},[1050,2579,1197],{"class":1071},[1050,2581,2582],{"class":1067}," [",[1050,2584,1214],{"class":1206},[1050,2586,2587],{"class":1210},".\u002Fbase-layer",[1050,2589,1214],{"class":1206},[1050,2591,1990],{"class":1067},[1050,2593,1217],{"class":1071},[1050,2595,2596],{"class":1052,"line":1203},[1050,2597,2598],{"class":1295},"  \u002F\u002F 通过将它们的 config key 设为 false 来禁用 layer 中的模块\n",[1050,2600,2601,2604,2606,2609,2611],{"class":1052,"line":1220},[1050,2602,2603],{"class":1193},"  image",[1050,2605,1197],{"class":1071},[1050,2607,2608],{"class":1983}," false",[1050,2610,1363],{"class":1071},[1050,2612,2613],{"class":1295}," \u002F\u002F 禁用 @nuxt\u002Fimage\n",[1050,2615,2616,2619,2621,2623,2625],{"class":1052,"line":1228},[1050,2617,2618],{"class":1193},"  pinia",[1050,2620,1197],{"class":1071},[1050,2622,2608],{"class":1983},[1050,2624,1363],{"class":1071},[1050,2626,2627],{"class":1295}," \u002F\u002F 禁用 @pinia\u002Fnuxt\n",[1050,2629,2630,2632],{"class":1052,"line":1335},[1050,2631,1231],{"class":1071},[1050,2633,1075],{"class":1067},[1862,2635,2636],{},[1024,2637,2638,2639,2642,2643,1521,2646,2642,2649,2652,2653,2642,2656,2658],{},"config key 由每个模块定义。常见的例子包括 ",[1037,2640,2641],{},"@nuxt\u002Fimage"," 的 ",[1037,2644,2645],{},"image",[1037,2647,2648],{},"@pinia\u002Fnuxt",[1037,2650,2651],{},"pinia","，以及 ",[1037,2654,2655],{},"@nuxt\u002Fcontent",[1037,2657,130],{},"。请查阅模块的文档了解它特定的 config key。",[1024,2660,2661],{},"这在以下情况很有用：",[1080,2663,2664,2667,2670],{},[1083,2665,2666],{},"一个 layer 包含了你的项目中不需要的模块",[1083,2668,2669],{},"你想使用与该 layer 提供的不同的实现",[1083,2671,2672],{},"你需要在特定环境中禁用分析或其它模块",[1513,2674,2675],{},[1024,2676,2677,2678,2680],{},"你也可以使用这种方式在你自己的项目中禁用模块——而不只是来自 layer 的模块。将模块的 config key 设为 ",[1037,2679,2555],{}," 会阻止其 setup 函数运行，同时仍然为该模块生成类型。",[1163,2682,2684],{"id":2683},"nuxt-模块对多-layer-的支持","Nuxt 模块对多 Layer 的支持",[1024,2686,2687,2688,2694],{},"你可以使用 Nuxt Kit 中的 ",[1034,2689,2691],{"href":2690},"\u002Fdocs\u002Fapi\u002Fkit\u002Flayers#getlayerdirectories",[1037,2692,2693],{},"getLayerDirectories"," 工具函数，为你的模块支持自定义的多 layer 处理。",[1041,2696,2699],{"className":1043,"code":2697,"filename":2698,"language":1046,"meta":354,"style":354},"import { defineNuxtModule, getLayerDirectories } from 'nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  setup (_options, nuxt) {\n    const layerDirs = getLayerDirectories()\n\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","modules\u002Fmy-module.ts",[1037,2700,2701,2726,2730,2742,2763,2778,2782,2817,2848,2878,2906,2933,2961,2966,2971,2975],{"__ignoreMap":354},[1050,2702,2703,2705,2707,2710,2712,2715,2717,2719,2721,2724],{"class":1052,"line":1053},[1050,2704,2393],{"class":1056},[1050,2706,1975],{"class":1071},[1050,2708,2709],{"class":1067}," defineNuxtModule",[1050,2711,1363],{"class":1071},[1050,2713,2714],{"class":1067}," getLayerDirectories",[1050,2716,1987],{"class":1071},[1050,2718,2403],{"class":1056},[1050,2720,1325],{"class":1206},[1050,2722,2723],{"class":1210},"nuxt\u002Fkit",[1050,2725,2411],{"class":1206},[1050,2727,2728],{"class":1052,"line":1190},[1050,2729,2442],{"emptyLinePlaceholder":2441},[1050,2731,2732,2734,2736,2738,2740],{"class":1052,"line":1203},[1050,2733,1057],{"class":1056},[1050,2735,1060],{"class":1056},[1050,2737,2709],{"class":1063},[1050,2739,1068],{"class":1067},[1050,2741,1187],{"class":1071},[1050,2743,2744,2748,2751,2755,2757,2759,2761],{"class":1052,"line":1220},[1050,2745,2747],{"class":2746},"syA7L","  setup",[1050,2749,2750],{"class":1071}," (",[1050,2752,2754],{"class":2753},"ssIVr","_options",[1050,2756,1363],{"class":1071},[1050,2758,1692],{"class":2753},[1050,2760,2523],{"class":1071},[1050,2762,1306],{"class":1071},[1050,2764,2765,2768,2771,2773,2775],{"class":1052,"line":1228},[1050,2766,2767],{"class":2447},"    const",[1050,2769,2770],{"class":2451}," layerDirs",[1050,2772,2456],{"class":2455},[1050,2774,2714],{"class":1063},[1050,2776,2777],{"class":1193},"()\n",[1050,2779,2780],{"class":1052,"line":1335},[1050,2781,2442],{"emptyLinePlaceholder":2441},[1050,2783,2784,2787,2789,2791,2793,2796,2798,2800,2802,2805,2807,2809,2812,2815],{"class":1052,"line":1345},[1050,2785,2786],{"class":1056},"    for",[1050,2788,2750],{"class":1193},[1050,2790,2448],{"class":2447},[1050,2792,2582],{"class":1071},[1050,2794,2795],{"class":2451},"index",[1050,2797,1363],{"class":1071},[1050,2799,1702],{"class":2451},[1050,2801,1990],{"class":1071},[1050,2803,2804],{"class":2455}," of",[1050,2806,2770],{"class":1067},[1050,2808,2470],{"class":1071},[1050,2810,2811],{"class":1063},"entries",[1050,2813,2814],{"class":1193},"()) ",[1050,2816,1187],{"class":1071},[1050,2818,2819,2822,2824,2827,2829,2832,2835,2838,2840,2842,2844,2846],{"class":1052,"line":1381},[1050,2820,2821],{"class":1067},"      console",[1050,2823,2470],{"class":1071},[1050,2825,2826],{"class":1063},"log",[1050,2828,1068],{"class":1193},[1050,2830,2831],{"class":1206},"`",[1050,2833,2834],{"class":1210},"Layer ",[1050,2836,2837],{"class":1206},"${",[1050,2839,2795],{"class":1067},[1050,2841,1231],{"class":1206},[1050,2843,1197],{"class":1210},[1050,2845,2831],{"class":1206},[1050,2847,1075],{"class":1193},[1050,2849,2850,2852,2854,2856,2858,2860,2863,2865,2868,2870,2873,2876],{"class":1052,"line":1389},[1050,2851,2821],{"class":1067},[1050,2853,2470],{"class":1071},[1050,2855,2826],{"class":1063},[1050,2857,1068],{"class":1193},[1050,2859,2831],{"class":1206},[1050,2861,2862],{"class":1210},"  Root: ",[1050,2864,2837],{"class":1206},[1050,2866,2867],{"class":1067},"layer",[1050,2869,2470],{"class":1206},[1050,2871,2872],{"class":1067},"root",[1050,2874,2875],{"class":1206},"}`",[1050,2877,1075],{"class":1193},[1050,2879,2880,2882,2884,2886,2888,2890,2893,2895,2897,2899,2902,2904],{"class":1052,"line":1395},[1050,2881,2821],{"class":1067},[1050,2883,2470],{"class":1071},[1050,2885,2826],{"class":1063},[1050,2887,1068],{"class":1193},[1050,2889,2831],{"class":1206},[1050,2891,2892],{"class":1210},"  App: ",[1050,2894,2837],{"class":1206},[1050,2896,2867],{"class":1067},[1050,2898,2470],{"class":1206},[1050,2900,2901],{"class":1067},"app",[1050,2903,2875],{"class":1206},[1050,2905,1075],{"class":1193},[1050,2907,2908,2910,2912,2914,2916,2918,2921,2923,2925,2927,2929,2931],{"class":1052,"line":1401},[1050,2909,2821],{"class":1067},[1050,2911,2470],{"class":1071},[1050,2913,2826],{"class":1063},[1050,2915,1068],{"class":1193},[1050,2917,2831],{"class":1206},[1050,2919,2920],{"class":1210},"  Server: ",[1050,2922,2837],{"class":1206},[1050,2924,2867],{"class":1067},[1050,2926,2470],{"class":1206},[1050,2928,150],{"class":1067},[1050,2930,2875],{"class":1206},[1050,2932,1075],{"class":1193},[1050,2934,2935,2937,2939,2941,2943,2945,2948,2950,2952,2954,2957,2959],{"class":1052,"line":1819},[1050,2936,2821],{"class":1067},[1050,2938,2470],{"class":1071},[1050,2940,2826],{"class":1063},[1050,2942,1068],{"class":1193},[1050,2944,2831],{"class":1206},[1050,2946,2947],{"class":1210},"  Pages: ",[1050,2949,2837],{"class":1206},[1050,2951,2867],{"class":1067},[1050,2953,2470],{"class":1206},[1050,2955,2956],{"class":1067},"appPages",[1050,2958,2875],{"class":1206},[1050,2960,1075],{"class":1193},[1050,2962,2963],{"class":1052,"line":1831},[1050,2964,2965],{"class":1295},"      \u002F\u002F ... 其它目录\n",[1050,2967,2968],{"class":1052,"line":1837},[1050,2969,2970],{"class":1071},"    }\n",[1050,2972,2973],{"class":1052,"line":1849},[1050,2974,1398],{"class":1071},[1050,2976,2977,2979],{"class":1052,"line":1856},[1050,2978,1231],{"class":1071},[1050,2980,1075],{"class":1067},[1024,2982,2983],{},[1455,2984,2985],{},"注意：",[1080,2987,2988,2991],{},[1083,2989,2990],{},"数组中靠前的项优先级更高，会覆盖靠后的项",[1083,2992,2993],{},"用户的项目是数组中的第一项",[1163,2995,2996],{"id":2996},"深入了解",[1024,2998,2999,3000,3005,3006,3011,3012,3017],{},"配置加载和 extends 支持由 ",[1034,3001,3004],{"href":3002,"rel":3003},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fc12",[1670],"unjs\u002Fc12"," 处理，使用 ",[1034,3007,3010],{"href":3008,"rel":3009},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fdefu",[1670],"unjs\u002Fdefu"," 合并，远程 git 源由 ",[1034,3013,3016],{"href":3014,"rel":3015},"https:\u002F\u002Fgithub.com\u002Funjs\u002Fgiget",[1670],"unjs\u002Fgiget"," 支持。查看文档和源代码以了解更多信息。",[1028,3019,3023],{"to":3020,"icon":3021,"target":3022},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F13367","i-simple-icons-github","_blank",[1024,3024,3025],{},"在 GitHub 上查看我们为 layer 支持带来更多改进的持续推进。",[3027,3028,3029],"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 .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 .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}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 .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}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 .s6g6u, html code.shiki .s6g6u{--shiki-light:#E53935;--shiki-default:#85E89D;--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 .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .supr-, html code.shiki .supr-{--shiki-light:#91B859;--shiki-default:#79B8FF;--shiki-dark:#C3E88D}html pre.shiki code .si1Qm, html code.shiki .si1Qm{--shiki-light:#FF5370;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}html pre.shiki code .s0q4w, html code.shiki .s0q4w{--shiki-light:#39ADB5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .sS9nB, html code.shiki .sS9nB{--shiki-light:#9C3EDA;--shiki-default:#79B8FF;--shiki-dark:#C792EA}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}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 .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":354,"searchDepth":1203,"depth":1203,"links":3031},[3032,3033,3037,3038,3042,3046,3048,3049],{"id":1165,"depth":1190,"text":1165},{"id":1449,"depth":1190,"text":1450,"children":3034},[3035,3036],{"id":1494,"depth":1203,"text":1494},{"id":1536,"depth":1203,"text":1536},{"id":1662,"depth":1190,"text":1662},{"id":1711,"depth":1190,"text":1712,"children":3039},[3040,3041],{"id":1718,"depth":1203,"text":1719},{"id":2007,"depth":1203,"text":2008},{"id":2273,"depth":1190,"text":2273,"children":3043},[3044,3045],{"id":2276,"depth":1203,"text":2277},{"id":2356,"depth":1203,"text":2356},{"id":2540,"depth":1190,"text":3047},"从 Layers 中禁用模块 v4.3",{"id":2683,"depth":1190,"text":2684},{"id":2996,"depth":1190,"text":2996},"md",{},null,{"title":342,"description":343},"docs\u002F3.guide\u002F6.going-further\u002F7.layers","cdpY2JjkldV1fTSGuZUsabW2gGJ5cOECVBAoYHLpoOU",1785179849663]