[{"data":1,"prerenderedAt":4514},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fapi\u002Fkit\u002Fmodules":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":733,"body":1020,"description":734,"extension":4502,"meta":4503,"navigation":4510,"path":732,"seo":4511,"stem":4512,"__hash__":4513},"docs\u002Fdocs\u002F4.api\u002F5.kit\u002F1.modules.md",{"type":1021,"value":1022,"toc":4480},"minimark",[1023,1036,1042,1045,1049,1283,1286,1571,1574,1581,1954,1956,1965,1975,2142,2148,2195,2201,2239,2242,2250,2253,2259,2408,2411,2428,2435,2441,2810,2833,2836,2839,2842,2857,2863,2870,2877,2881,3329,3332,3338,3343,3346,3682,3685,3949,3955,3959,3976,3986,3989,4166,4169,4215,4218,4302,4305,4476],[1024,1025,1026,1027,1031,1032,1035],"p",{},"模块是 Nuxt 的构建基石。Kit 提供了一系列工具，帮助你创建和使用模块。你可以使用这些工具来创建自己的模块，或复用已有的模块。例如，你可以使用 ",[1028,1029,1030],"code",{},"defineNuxtModule"," 函数定义一个模块，并使用 ",[1028,1033,1034],{},"moduleDependencies"," 选项指定依赖。",[1037,1038,1040],"h2",{"id":1039},"definenuxtmodule",[1028,1041,1030],{},[1024,1043,1044],{},"定义一个 Nuxt 模块，自动将默认值与用户提供的选项合并，安装所提供的任何钩子，并调用一个可选的 setup 函数以获得完全的控制。",[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 } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'my-module',\n    configKey: 'myModule',\n  },\n  defaults: {\n    enabled: true,\n  },\n  setup (options) {\n    if (options.enabled) {\n      console.log('My Nuxt module is enabled!')\n    }\n  },\n})\n","ts","twoslash",[1028,1057,1058,1092,1099,1117,1130,1149,1166,1172,1182,1196,1201,1220,1241,1264,1270,1275],{"__ignoreMap":354},[1059,1060,1063,1067,1071,1075,1078,1081,1085,1089],"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":1065}," from",[1059,1082,1084],{"class":1083},"s0jeK"," '",[1059,1086,1088],{"class":1087},"s-Aze","@nuxt\u002Fkit",[1059,1090,1091],{"class":1083},"'\n",[1059,1093,1095],{"class":1061,"line":1094},2,[1059,1096,1098],{"emptyLinePlaceholder":1097},true,"\n",[1059,1100,1102,1105,1108,1111,1114],{"class":1061,"line":1101},3,[1059,1103,1104],{"class":1065},"export",[1059,1106,1107],{"class":1065}," default",[1059,1109,1074],{"class":1110},"srJn9",[1059,1112,1113],{"class":1073},"(",[1059,1115,1116],{"class":1069},"{\n",[1059,1118,1120,1124,1127],{"class":1061,"line":1119},4,[1059,1121,1123],{"class":1122},"sOtFm","  meta",[1059,1125,1126],{"class":1069},":",[1059,1128,1129],{"class":1069}," {\n",[1059,1131,1133,1136,1138,1140,1143,1146],{"class":1061,"line":1132},5,[1059,1134,1135],{"class":1122},"    name",[1059,1137,1126],{"class":1069},[1059,1139,1084],{"class":1083},[1059,1141,1142],{"class":1087},"my-module",[1059,1144,1145],{"class":1083},"'",[1059,1147,1148],{"class":1069},",\n",[1059,1150,1152,1155,1157,1159,1162,1164],{"class":1061,"line":1151},6,[1059,1153,1154],{"class":1122},"    configKey",[1059,1156,1126],{"class":1069},[1059,1158,1084],{"class":1083},[1059,1160,1161],{"class":1087},"myModule",[1059,1163,1145],{"class":1083},[1059,1165,1148],{"class":1069},[1059,1167,1169],{"class":1061,"line":1168},7,[1059,1170,1171],{"class":1069},"  },\n",[1059,1173,1175,1178,1180],{"class":1061,"line":1174},8,[1059,1176,1177],{"class":1122},"  defaults",[1059,1179,1126],{"class":1069},[1059,1181,1129],{"class":1069},[1059,1183,1185,1188,1190,1194],{"class":1061,"line":1184},9,[1059,1186,1187],{"class":1122},"    enabled",[1059,1189,1126],{"class":1069},[1059,1191,1193],{"class":1192},"si1Qm"," true",[1059,1195,1148],{"class":1069},[1059,1197,1199],{"class":1061,"line":1198},10,[1059,1200,1171],{"class":1069},[1059,1202,1204,1208,1211,1215,1218],{"class":1061,"line":1203},11,[1059,1205,1207],{"class":1206},"syA7L","  setup",[1059,1209,1210],{"class":1069}," (",[1059,1212,1214],{"class":1213},"ssIVr","options",[1059,1216,1217],{"class":1069},")",[1059,1219,1129],{"class":1069},[1059,1221,1223,1226,1228,1230,1233,1236,1239],{"class":1061,"line":1222},12,[1059,1224,1225],{"class":1065},"    if",[1059,1227,1210],{"class":1122},[1059,1229,1214],{"class":1073},[1059,1231,1232],{"class":1069},".",[1059,1234,1235],{"class":1073},"enabled",[1059,1237,1238],{"class":1122},") ",[1059,1240,1116],{"class":1069},[1059,1242,1244,1247,1249,1252,1254,1256,1259,1261],{"class":1061,"line":1243},13,[1059,1245,1246],{"class":1073},"      console",[1059,1248,1232],{"class":1069},[1059,1250,1251],{"class":1110},"log",[1059,1253,1113],{"class":1122},[1059,1255,1145],{"class":1083},[1059,1257,1258],{"class":1087},"My Nuxt module is enabled!",[1059,1260,1145],{"class":1083},[1059,1262,1263],{"class":1122},")\n",[1059,1265,1267],{"class":1061,"line":1266},14,[1059,1268,1269],{"class":1069},"    }\n",[1059,1271,1273],{"class":1061,"line":1272},15,[1059,1274,1171],{"class":1069},[1059,1276,1278,1281],{"class":1061,"line":1277},16,[1059,1279,1280],{"class":1069},"}",[1059,1282,1263],{"class":1073},[1046,1284,1285],{"id":1285},"类型",[1050,1287,1289],{"className":1052,"code":1288,"language":1054,"meta":1055,"style":354},"\u002F\u002F @errors: 2391\nimport type { ModuleDefinition, ModuleOptions, NuxtModule } from '@nuxt\u002Fschema'\n\u002F\u002F ---cut---\nexport function defineNuxtModule\u003CTOptions extends ModuleOptions> (\n  definition?: ModuleDefinition\u003CTOptions, Partial\u003CTOptions>, false> | NuxtModule\u003CTOptions, Partial\u003CTOptions>, false>,\n): NuxtModule\u003CTOptions, TOptions, false>\n\nexport function defineNuxtModule\u003CTOptions extends ModuleOptions> (): {\n  with: \u003CTOptionsDefaults extends Partial\u003CTOptions>> (\n    definition: ModuleDefinition\u003CTOptions, TOptionsDefaults, true> | NuxtModule\u003CTOptions, TOptionsDefaults, true>,\n  ) => NuxtModule\u003CTOptions, TOptionsDefaults, true>\n}\n",[1028,1290,1291,1297,1331,1336,1364,1421,1445,1449,1474,1500,1542,1566],{"__ignoreMap":354},[1059,1292,1293],{"class":1061,"line":1062},[1059,1294,1296],{"class":1295},"sZqJ9","\u002F\u002F @errors: 2391\n",[1059,1298,1299,1301,1304,1306,1309,1312,1315,1317,1320,1322,1324,1326,1329],{"class":1061,"line":1094},[1059,1300,1066],{"class":1065},[1059,1302,1303],{"class":1065}," type",[1059,1305,1070],{"class":1069},[1059,1307,1308],{"class":1073}," ModuleDefinition",[1059,1310,1311],{"class":1069},",",[1059,1313,1314],{"class":1073}," ModuleOptions",[1059,1316,1311],{"class":1069},[1059,1318,1319],{"class":1073}," NuxtModule",[1059,1321,1077],{"class":1069},[1059,1323,1080],{"class":1065},[1059,1325,1084],{"class":1083},[1059,1327,1328],{"class":1087},"@nuxt\u002Fschema",[1059,1330,1091],{"class":1083},[1059,1332,1333],{"class":1061,"line":1101},[1059,1334,1335],{"class":1295},"\u002F\u002F ---cut---\n",[1059,1337,1338,1340,1344,1346,1349,1353,1356,1358,1361],{"class":1061,"line":1119},[1059,1339,1104],{"class":1065},[1059,1341,1343],{"class":1342},"sV7Px"," function",[1059,1345,1074],{"class":1110},[1059,1347,1348],{"class":1069},"\u003C",[1059,1350,1352],{"class":1351},"sJK67","TOptions",[1059,1354,1355],{"class":1342}," extends",[1059,1357,1314],{"class":1351},[1059,1359,1360],{"class":1069},">",[1059,1362,1363],{"class":1069}," (\n",[1059,1365,1366,1369,1373,1375,1377,1379,1381,1384,1386,1388,1391,1395,1397,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418],{"class":1061,"line":1132},[1059,1367,1368],{"class":1213},"  definition",[1059,1370,1372],{"class":1371},"sXPRQ","?:",[1059,1374,1308],{"class":1351},[1059,1376,1348],{"class":1069},[1059,1378,1352],{"class":1351},[1059,1380,1311],{"class":1069},[1059,1382,1383],{"class":1351}," Partial",[1059,1385,1348],{"class":1069},[1059,1387,1352],{"class":1351},[1059,1389,1390],{"class":1069},">,",[1059,1392,1394],{"class":1393},"seQRr"," false",[1059,1396,1360],{"class":1069},[1059,1398,1399],{"class":1371}," |",[1059,1401,1319],{"class":1351},[1059,1403,1348],{"class":1069},[1059,1405,1352],{"class":1351},[1059,1407,1311],{"class":1069},[1059,1409,1383],{"class":1351},[1059,1411,1348],{"class":1069},[1059,1413,1352],{"class":1351},[1059,1415,1390],{"class":1069},[1059,1417,1394],{"class":1393},[1059,1419,1420],{"class":1069},">,\n",[1059,1422,1423,1425,1427,1429,1431,1433,1435,1438,1440,1442],{"class":1061,"line":1151},[1059,1424,1217],{"class":1069},[1059,1426,1126],{"class":1371},[1059,1428,1319],{"class":1351},[1059,1430,1348],{"class":1069},[1059,1432,1352],{"class":1351},[1059,1434,1311],{"class":1069},[1059,1436,1437],{"class":1351}," TOptions",[1059,1439,1311],{"class":1069},[1059,1441,1394],{"class":1393},[1059,1443,1444],{"class":1069},">\n",[1059,1446,1447],{"class":1061,"line":1168},[1059,1448,1098],{"emptyLinePlaceholder":1097},[1059,1450,1451,1453,1455,1457,1459,1461,1463,1465,1467,1470,1472],{"class":1061,"line":1174},[1059,1452,1104],{"class":1065},[1059,1454,1343],{"class":1342},[1059,1456,1074],{"class":1110},[1059,1458,1348],{"class":1069},[1059,1460,1352],{"class":1351},[1059,1462,1355],{"class":1342},[1059,1464,1314],{"class":1351},[1059,1466,1360],{"class":1069},[1059,1468,1469],{"class":1069}," ()",[1059,1471,1126],{"class":1371},[1059,1473,1129],{"class":1069},[1059,1475,1476,1479,1481,1484,1487,1489,1491,1493,1495,1498],{"class":1061,"line":1184},[1059,1477,1478],{"class":1206},"  with",[1059,1480,1126],{"class":1371},[1059,1482,1483],{"class":1069}," \u003C",[1059,1485,1486],{"class":1351},"TOptionsDefaults",[1059,1488,1355],{"class":1342},[1059,1490,1383],{"class":1351},[1059,1492,1348],{"class":1069},[1059,1494,1352],{"class":1351},[1059,1496,1497],{"class":1069},">>",[1059,1499,1363],{"class":1073},[1059,1501,1502,1505,1507,1509,1511,1513,1515,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540],{"class":1061,"line":1198},[1059,1503,1504],{"class":1213},"    definition",[1059,1506,1126],{"class":1371},[1059,1508,1308],{"class":1351},[1059,1510,1348],{"class":1069},[1059,1512,1352],{"class":1351},[1059,1514,1311],{"class":1069},[1059,1516,1517],{"class":1351}," TOptionsDefaults",[1059,1519,1311],{"class":1069},[1059,1521,1193],{"class":1393},[1059,1523,1360],{"class":1069},[1059,1525,1399],{"class":1371},[1059,1527,1319],{"class":1351},[1059,1529,1348],{"class":1069},[1059,1531,1352],{"class":1351},[1059,1533,1311],{"class":1069},[1059,1535,1517],{"class":1351},[1059,1537,1311],{"class":1069},[1059,1539,1193],{"class":1393},[1059,1541,1420],{"class":1069},[1059,1543,1544,1547,1550,1552,1554,1556,1558,1560,1562,1564],{"class":1061,"line":1203},[1059,1545,1546],{"class":1073},"  ) ",[1059,1548,1549],{"class":1342},"=>",[1059,1551,1319],{"class":1351},[1059,1553,1348],{"class":1069},[1059,1555,1352],{"class":1351},[1059,1557,1311],{"class":1069},[1059,1559,1517],{"class":1351},[1059,1561,1311],{"class":1069},[1059,1563,1193],{"class":1393},[1059,1565,1444],{"class":1069},[1059,1567,1568],{"class":1061,"line":1222},[1059,1569,1570],{"class":1069},"}\n",[1046,1572,1573],{"id":1573},"参数",[1024,1575,1576,1580],{},[1577,1578,1579],"strong",{},"definition","：一个模块定义对象或一个模块函数。模块定义对象应包含以下属性：",[1582,1583,1584,1602],"table",{},[1585,1586,1587],"thead",{},[1588,1589,1590,1594,1596,1599],"tr",{},[1591,1592,1593],"th",{},"属性",[1591,1595,1285],{},[1591,1597,1598],{},"必填",[1591,1600,1601],{},"描述",[1603,1604,1605,1626,1672,1690,1718,1787,1830,1887],"tbody",{},[1588,1606,1607,1613,1618,1623],{},[1608,1609,1610],"td",{},[1028,1611,1612],{},"meta",[1608,1614,1615],{},[1028,1616,1617],{},"ModuleMeta",[1608,1619,1620],{},[1028,1621,1622],{},"false",[1608,1624,1625],{},"模块的元数据。它定义了模块名称、版本、config key 和兼容性。",[1588,1627,1628,1633,1665,1669],{},[1608,1629,1630],{},[1028,1631,1632],{},"defaults",[1608,1634,1635],{},[1028,1636,1637,1641,1643,1645,1647,1650,1652,1655,1657,1660,1663],{"className":1052,"language":1054,"style":354},[1059,1638,1640],{"class":1639},"sJTDI","T",[1059,1642,1399],{"class":1371},[1059,1644,1210],{"class":1073},[1059,1646,1113],{"class":1069},[1059,1648,1649],{"class":1213},"nuxt",[1059,1651,1126],{"class":1371},[1059,1653,1654],{"class":1351}," Nuxt",[1059,1656,1217],{"class":1069},[1059,1658,1659],{"class":1342}," =>",[1059,1661,1662],{"class":1639}," T",[1059,1664,1217],{"class":1073},[1608,1666,1667],{},[1028,1668,1622],{},[1608,1670,1671],{},"模块的默认选项。如果提供的是函数，会以 Nuxt 实例作为第一个参数被调用。",[1588,1673,1674,1679,1683,1687],{},[1608,1675,1676],{},[1028,1677,1678],{},"schema",[1608,1680,1681],{},[1028,1682,1640],{},[1608,1684,1685],{},[1028,1686,1622],{},[1608,1688,1689],{},"模块选项的 schema。如果提供，选项会被应用到该 schema。",[1588,1691,1692,1697,1711,1715],{},[1608,1693,1694],{},[1028,1695,1696],{},"hooks",[1608,1698,1699],{},[1028,1700,1701,1704,1706,1709],{"className":1052,"language":1054,"style":354},[1059,1702,1703],{"class":1073},"Partial",[1059,1705,1348],{"class":1371},[1059,1707,1708],{"class":1073},"NuxtHooks",[1059,1710,1360],{"class":1371},[1608,1712,1713],{},[1028,1714,1622],{},[1608,1716,1717],{},"为模块安装的钩子。如果提供，模块会安装这些钩子。",[1588,1719,1720,1724,1774,1778],{},[1608,1721,1722],{},[1028,1723,1034],{},[1608,1725,1726],{},[1028,1727,1728,1731,1733,1736,1738,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1762,1764,1766,1768,1770,1772],{"className":1052,"language":1054,"style":354},[1059,1729,1730],{"class":1073},"Record",[1059,1732,1348],{"class":1371},[1059,1734,1735],{"class":1073},"string",[1059,1737,1311],{"class":1069},[1059,1739,1740],{"class":1073}," ModuleDependency",[1059,1742,1360],{"class":1371},[1059,1744,1399],{"class":1371},[1059,1746,1210],{"class":1073},[1059,1748,1113],{"class":1069},[1059,1750,1649],{"class":1213},[1059,1752,1126],{"class":1371},[1059,1754,1654],{"class":1351},[1059,1756,1217],{"class":1069},[1059,1758,1659],{"class":1342},[1059,1760,1761],{"class":1073}," Record",[1059,1763,1348],{"class":1371},[1059,1765,1735],{"class":1073},[1059,1767,1311],{"class":1069},[1059,1769,1740],{"class":1073},[1059,1771,1360],{"class":1371},[1059,1773,1217],{"class":1073},[1608,1775,1776],{},[1028,1777,1622],{},[1608,1779,1780,1781,1786],{},"对其他模块的依赖，包含版本约束与配置。可以是一个对象，也可以是一个接收 Nuxt 实例的函数。参见 ",[1782,1783,1785],"a",{"href":1784},"\u002Fdocs\u002Fapi\u002Fkit\u002Fmodules#%E6%8C%87%E5%AE%9A%E6%A8%A1%E5%9D%97%E4%BE%9D%E8%B5%96","示例","。",[1588,1788,1789,1794,1816,1820],{},[1608,1790,1791],{},[1028,1792,1793],{},"onInstall",[1608,1795,1796],{},[1028,1797,1798,1800,1802,1804,1806,1808,1810,1813],{"className":1052,"language":1054,"style":354},[1059,1799,1113],{"class":1069},[1059,1801,1649],{"class":1213},[1059,1803,1126],{"class":1371},[1059,1805,1654],{"class":1351},[1059,1807,1217],{"class":1069},[1059,1809,1659],{"class":1342},[1059,1811,1812],{"class":1073}," Awaitable",[1059,1814,1815],{"class":1371},"\u003Cvoid>",[1608,1817,1818],{},[1028,1819,1622],{},[1608,1821,1822,1823,1826,1827,1786],{},"模块首次安装时调用的生命周期钩子。需要定义 ",[1028,1824,1825],{},"meta.name"," 和 ",[1028,1828,1829],{},"meta.version",[1588,1831,1832,1837,1876,1880],{},[1608,1833,1834],{},[1028,1835,1836],{},"onUpgrade",[1608,1838,1839],{},[1028,1840,1841,1843,1845,1847,1849,1851,1854,1856,1858,1860,1863,1865,1868,1870,1872,1874],{"className":1052,"language":1054,"style":354},[1059,1842,1113],{"class":1069},[1059,1844,1649],{"class":1213},[1059,1846,1126],{"class":1371},[1059,1848,1654],{"class":1351},[1059,1850,1311],{"class":1069},[1059,1852,1853],{"class":1213}," options",[1059,1855,1126],{"class":1371},[1059,1857,1662],{"class":1351},[1059,1859,1311],{"class":1069},[1059,1861,1862],{"class":1213}," previousVersion",[1059,1864,1126],{"class":1371},[1059,1866,1867],{"class":1393}," string",[1059,1869,1217],{"class":1069},[1059,1871,1659],{"class":1342},[1059,1873,1812],{"class":1073},[1059,1875,1815],{"class":1371},[1608,1877,1878],{},[1028,1879,1622],{},[1608,1881,1882,1883,1826,1885,1786],{},"模块升级到新版本时调用的生命周期钩子。需要定义 ",[1028,1884,1825],{},[1028,1886,1829],{},[1588,1888,1889,1894,1947,1951],{},[1608,1890,1891],{},[1028,1892,1893],{},"setup",[1608,1895,1896],{},[1028,1897,1898,1900,1904,1906,1909,1911,1914,1916,1918,1920,1923,1925,1927,1929,1931,1933,1936,1938,1940,1942,1945],{"className":1052,"language":1054,"style":354},[1059,1899,1113],{"class":1069},[1059,1901,1903],{"class":1902},"s9BSX","this",[1059,1905,1126],{"class":1371},[1059,1907,1908],{"class":1393}," void",[1059,1910,1311],{"class":1069},[1059,1912,1913],{"class":1213}," resolvedOptions",[1059,1915,1126],{"class":1371},[1059,1917,1662],{"class":1351},[1059,1919,1311],{"class":1069},[1059,1921,1922],{"class":1213}," nuxt",[1059,1924,1126],{"class":1371},[1059,1926,1654],{"class":1351},[1059,1928,1217],{"class":1069},[1059,1930,1659],{"class":1342},[1059,1932,1812],{"class":1073},[1059,1934,1935],{"class":1371},"\u003Cvoid",[1059,1937,1399],{"class":1371},[1059,1939,1394],{"class":1192},[1059,1941,1399],{"class":1371},[1059,1943,1944],{"class":1073}," ModuleSetupInstallResult",[1059,1946,1360],{"class":1371},[1608,1948,1949],{},[1028,1950,1622],{},[1608,1952,1953],{},"模块的 setup 函数。如果提供，模块会调用该函数。",[1046,1955,1785],{"id":1785},[1957,1958,1960,1961,1964],"h4",{"id":1959},"使用-configkey-使你的模块可配置","使用 ",[1028,1962,1963],{},"configKey"," 使你的模块可配置",[1024,1966,1967,1968,1970,1971,1974],{},"定义一个 Nuxt 模块时，你可以设置 ",[1028,1969,1963],{}," 来指定用户应在其 ",[1028,1972,1973],{},"nuxt.config"," 中如何配置该模块。",[1050,1976,1978],{"className":1052,"code":1977,"language":1054,"meta":354,"style":354},"import { defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'my-module',\n    configKey: 'myModule',\n  },\n  defaults: {\n    \u002F\u002F 模块选项\n    enabled: true,\n  },\n  setup (options) {\n    if (options.enabled) {\n      console.log('My Nuxt module is enabled!')\n    }\n  },\n})\n",[1028,1979,1980,1998,2002,2014,2022,2036,2050,2054,2062,2067,2077,2081,2093,2109,2127,2131,2135],{"__ignoreMap":354},[1059,1981,1982,1984,1986,1988,1990,1992,1994,1996],{"class":1061,"line":1062},[1059,1983,1066],{"class":1065},[1059,1985,1070],{"class":1069},[1059,1987,1074],{"class":1073},[1059,1989,1077],{"class":1069},[1059,1991,1080],{"class":1065},[1059,1993,1084],{"class":1083},[1059,1995,1088],{"class":1087},[1059,1997,1091],{"class":1083},[1059,1999,2000],{"class":1061,"line":1094},[1059,2001,1098],{"emptyLinePlaceholder":1097},[1059,2003,2004,2006,2008,2010,2012],{"class":1061,"line":1101},[1059,2005,1104],{"class":1065},[1059,2007,1107],{"class":1065},[1059,2009,1074],{"class":1110},[1059,2011,1113],{"class":1073},[1059,2013,1116],{"class":1069},[1059,2015,2016,2018,2020],{"class":1061,"line":1119},[1059,2017,1123],{"class":1122},[1059,2019,1126],{"class":1069},[1059,2021,1129],{"class":1069},[1059,2023,2024,2026,2028,2030,2032,2034],{"class":1061,"line":1132},[1059,2025,1135],{"class":1122},[1059,2027,1126],{"class":1069},[1059,2029,1084],{"class":1083},[1059,2031,1142],{"class":1087},[1059,2033,1145],{"class":1083},[1059,2035,1148],{"class":1069},[1059,2037,2038,2040,2042,2044,2046,2048],{"class":1061,"line":1151},[1059,2039,1154],{"class":1122},[1059,2041,1126],{"class":1069},[1059,2043,1084],{"class":1083},[1059,2045,1161],{"class":1087},[1059,2047,1145],{"class":1083},[1059,2049,1148],{"class":1069},[1059,2051,2052],{"class":1061,"line":1168},[1059,2053,1171],{"class":1069},[1059,2055,2056,2058,2060],{"class":1061,"line":1174},[1059,2057,1177],{"class":1122},[1059,2059,1126],{"class":1069},[1059,2061,1129],{"class":1069},[1059,2063,2064],{"class":1061,"line":1184},[1059,2065,2066],{"class":1295},"    \u002F\u002F 模块选项\n",[1059,2068,2069,2071,2073,2075],{"class":1061,"line":1198},[1059,2070,1187],{"class":1122},[1059,2072,1126],{"class":1069},[1059,2074,1193],{"class":1192},[1059,2076,1148],{"class":1069},[1059,2078,2079],{"class":1061,"line":1203},[1059,2080,1171],{"class":1069},[1059,2082,2083,2085,2087,2089,2091],{"class":1061,"line":1222},[1059,2084,1207],{"class":1206},[1059,2086,1210],{"class":1069},[1059,2088,1214],{"class":1213},[1059,2090,1217],{"class":1069},[1059,2092,1129],{"class":1069},[1059,2094,2095,2097,2099,2101,2103,2105,2107],{"class":1061,"line":1243},[1059,2096,1225],{"class":1065},[1059,2098,1210],{"class":1122},[1059,2100,1214],{"class":1073},[1059,2102,1232],{"class":1069},[1059,2104,1235],{"class":1073},[1059,2106,1238],{"class":1122},[1059,2108,1116],{"class":1069},[1059,2110,2111,2113,2115,2117,2119,2121,2123,2125],{"class":1061,"line":1266},[1059,2112,1246],{"class":1073},[1059,2114,1232],{"class":1069},[1059,2116,1251],{"class":1110},[1059,2118,1113],{"class":1122},[1059,2120,1145],{"class":1083},[1059,2122,1258],{"class":1087},[1059,2124,1145],{"class":1083},[1059,2126,1263],{"class":1122},[1059,2128,2129],{"class":1061,"line":1272},[1059,2130,1269],{"class":1069},[1059,2132,2133],{"class":1061,"line":1277},[1059,2134,1171],{"class":1069},[1059,2136,2138,2140],{"class":1061,"line":2137},17,[1059,2139,1280],{"class":1069},[1059,2141,1263],{"class":1073},[1024,2143,2144,2145,2147],{},"用户可以在 ",[1028,2146,1973],{}," 中对应的 key 下为该模块提供选项。",[1050,2149,2151],{"className":1052,"code":2150,"language":1054,"meta":354,"style":354},"export default defineNuxtConfig({\n  myModule: {\n    enabled: false,\n  },\n})\n",[1028,2152,2153,2166,2175,2185,2189],{"__ignoreMap":354},[1059,2154,2155,2157,2159,2162,2164],{"class":1061,"line":1062},[1059,2156,1104],{"class":1065},[1059,2158,1107],{"class":1065},[1059,2160,2161],{"class":1110}," defineNuxtConfig",[1059,2163,1113],{"class":1073},[1059,2165,1116],{"class":1069},[1059,2167,2168,2171,2173],{"class":1061,"line":1094},[1059,2169,2170],{"class":1122},"  myModule",[1059,2172,1126],{"class":1069},[1059,2174,1129],{"class":1069},[1059,2176,2177,2179,2181,2183],{"class":1061,"line":1101},[1059,2178,1187],{"class":1122},[1059,2180,1126],{"class":1069},[1059,2182,1394],{"class":1192},[1059,2184,1148],{"class":1069},[1059,2186,2187],{"class":1061,"line":1119},[1059,2188,1171],{"class":1069},[1059,2190,2191,2193],{"class":1061,"line":1132},[1059,2192,1280],{"class":1069},[1059,2194,1263],{"class":1073},[1024,2196,2197,2198,2200],{},"用户也可以通过将该 config key 设为 ",[1028,2199,1622],{}," 来完全禁用某个模块。这会阻止模块 setup 函数运行，同时仍然为模块选项生成类型。",[1050,2202,2204],{"className":1052,"code":2203,"language":1054,"meta":354,"style":354},"export default defineNuxtConfig({\n  \u002F\u002F 完全禁用该模块\n  myModule: false,\n})\n",[1028,2205,2206,2218,2223,2233],{"__ignoreMap":354},[1059,2207,2208,2210,2212,2214,2216],{"class":1061,"line":1062},[1059,2209,1104],{"class":1065},[1059,2211,1107],{"class":1065},[1059,2213,2161],{"class":1110},[1059,2215,1113],{"class":1073},[1059,2217,1116],{"class":1069},[1059,2219,2220],{"class":1061,"line":1094},[1059,2221,2222],{"class":1295},"  \u002F\u002F 完全禁用该模块\n",[1059,2224,2225,2227,2229,2231],{"class":1061,"line":1101},[1059,2226,2170],{"class":1122},[1059,2228,1126],{"class":1069},[1059,2230,1394],{"class":1192},[1059,2232,1148],{"class":1069},[1059,2234,2235,2237],{"class":1061,"line":1119},[1059,2236,1280],{"class":1069},[1059,2238,1263],{"class":1073},[2240,2241],"tip",{},[1024,2243,2244,2245,2249],{},"当你想禁用从 ",[1782,2246,2248],{"href":2247},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Flayers#%E4%BB%8E%E5%B1%82%E4%B8%AD%E7%A6%81%E7%94%A8%E6%A8%A1%E5%9D%97","Nuxt 层"," 继承来的模块时，这尤其有用。\n:",[1957,2251,2252],{"id":2252},"定义模块兼容性要求",[1024,2254,2255,2256,1786],{},"如果你在开发 Nuxt 模块，并且使用了仅在特定 Nuxt 版本中受支持的 API，强烈建议包含 ",[1028,2257,2258],{},"compatibility.nuxt",[1050,2260,2262],{"className":1052,"code":2261,"language":1054,"meta":354,"style":354},"export default defineNuxtModule({\n  meta: {\n    name: '@nuxt\u002Ficon',\n    configKey: 'icon',\n    compatibility: {\n      \u002F\u002F 以 semver 格式表示的所需 nuxt 版本。\n      nuxt: '>=3.0.0', \u002F\u002F 或使用 '^3.0.0'\n    },\n  },\n  setup () {\n    const resolver = createResolver(import.meta.url)\n    \u002F\u002F 实现\n  },\n})\n",[1028,2263,2264,2276,2284,2299,2314,2323,2328,2347,2352,2356,2364,2393,2398,2402],{"__ignoreMap":354},[1059,2265,2266,2268,2270,2272,2274],{"class":1061,"line":1062},[1059,2267,1104],{"class":1065},[1059,2269,1107],{"class":1065},[1059,2271,1074],{"class":1110},[1059,2273,1113],{"class":1073},[1059,2275,1116],{"class":1069},[1059,2277,2278,2280,2282],{"class":1061,"line":1094},[1059,2279,1123],{"class":1122},[1059,2281,1126],{"class":1069},[1059,2283,1129],{"class":1069},[1059,2285,2286,2288,2290,2292,2295,2297],{"class":1061,"line":1101},[1059,2287,1135],{"class":1122},[1059,2289,1126],{"class":1069},[1059,2291,1084],{"class":1083},[1059,2293,2294],{"class":1087},"@nuxt\u002Ficon",[1059,2296,1145],{"class":1083},[1059,2298,1148],{"class":1069},[1059,2300,2301,2303,2305,2307,2310,2312],{"class":1061,"line":1119},[1059,2302,1154],{"class":1122},[1059,2304,1126],{"class":1069},[1059,2306,1084],{"class":1083},[1059,2308,2309],{"class":1087},"icon",[1059,2311,1145],{"class":1083},[1059,2313,1148],{"class":1069},[1059,2315,2316,2319,2321],{"class":1061,"line":1132},[1059,2317,2318],{"class":1122},"    compatibility",[1059,2320,1126],{"class":1069},[1059,2322,1129],{"class":1069},[1059,2324,2325],{"class":1061,"line":1151},[1059,2326,2327],{"class":1295},"      \u002F\u002F 以 semver 格式表示的所需 nuxt 版本。\n",[1059,2329,2330,2333,2335,2337,2340,2342,2344],{"class":1061,"line":1168},[1059,2331,2332],{"class":1122},"      nuxt",[1059,2334,1126],{"class":1069},[1059,2336,1084],{"class":1083},[1059,2338,2339],{"class":1087},">=3.0.0",[1059,2341,1145],{"class":1083},[1059,2343,1311],{"class":1069},[1059,2345,2346],{"class":1295}," \u002F\u002F 或使用 '^3.0.0'\n",[1059,2348,2349],{"class":1061,"line":1174},[1059,2350,2351],{"class":1069},"    },\n",[1059,2353,2354],{"class":1061,"line":1184},[1059,2355,1171],{"class":1069},[1059,2357,2358,2360,2362],{"class":1061,"line":1198},[1059,2359,1207],{"class":1206},[1059,2361,1469],{"class":1069},[1059,2363,1129],{"class":1069},[1059,2365,2366,2369,2372,2375,2378,2380,2382,2384,2386,2388,2391],{"class":1061,"line":1203},[1059,2367,2368],{"class":1342},"    const",[1059,2370,2371],{"class":1639}," resolver",[1059,2373,2374],{"class":1371}," =",[1059,2376,2377],{"class":1110}," createResolver",[1059,2379,1113],{"class":1122},[1059,2381,1066],{"class":1065},[1059,2383,1232],{"class":1069},[1059,2385,1612],{"class":1639},[1059,2387,1232],{"class":1069},[1059,2389,2390],{"class":1073},"url",[1059,2392,1263],{"class":1122},[1059,2394,2395],{"class":1061,"line":1222},[1059,2396,2397],{"class":1295},"    \u002F\u002F 实现\n",[1059,2399,2400],{"class":1061,"line":1243},[1059,2401,1171],{"class":1069},[1059,2403,2404,2406],{"class":1061,"line":1266},[1059,2405,1280],{"class":1069},[1059,2407,1263],{"class":1073},[1024,2409,2410],{},"如果用户尝试在不兼容的 Nuxt 版本上使用你的模块，他们会在控制台收到一条警告。",[1050,2412,2416],{"className":2413,"code":2414,"language":2415,"meta":354,"style":354},"language-terminal shiki shiki-themes material-theme-lighter github-dark material-theme-palenight"," WARN  Module @nuxt\u002Ficon is disabled due to incompatibility issues:\n - [nuxt] Nuxt version ^3.1.0 is required but currently using 3.0.0\n","terminal",[1028,2417,2418,2423],{"__ignoreMap":354},[1059,2419,2420],{"class":1061,"line":1062},[1059,2421,2422],{}," WARN  Module @nuxt\u002Ficon is disabled due to incompatibility issues:\n",[1059,2424,2425],{"class":1061,"line":1094},[1059,2426,2427],{}," - [nuxt] Nuxt version ^3.1.0 is required but currently using 3.0.0\n",[1957,2429,1960,2431,2434],{"id":2430},"使用-with-对解析后的选项进行类型保护",[1028,2432,2433],{},".with()"," 对解析后的选项进行类型保护",[1024,2436,2437,2438,2440],{},"当你需要为解析后\u002F合并后的模块选项提供类型安全时，可以使用 ",[1028,2439,2433],{}," 方法。这样 TypeScript 就能正确推断出模块默认值与你 setup 函数最终接收到的解析选项之间的关系。",[1050,2442,2444],{"className":1052,"code":2443,"language":1054,"meta":354,"style":354},"import { defineNuxtModule } from '@nuxt\u002Fkit'\n\n\u002F\u002F 定义你的模块选项接口\ninterface ModuleOptions {\n  apiKey: string\n  baseURL: string\n  timeout?: number\n  retries?: number\n}\n\nexport default defineNuxtModule\u003CModuleOptions>().with({\n  meta: {\n    name: '@nuxtjs\u002Fmy-api',\n    configKey: 'myApi',\n  },\n  defaults: {\n    baseURL: 'https:\u002F\u002Fapi.example.com',\n    timeout: 5000,\n    retries: 3,\n  },\n  setup (resolvedOptions, nuxt) {\n    \u002F\u002F resolvedOptions 的类型为：\n    \u002F\u002F {\n    \u002F\u002F   apiKey: string          \u002F\u002F 必填，无默认值\n    \u002F\u002F   baseURL: string         \u002F\u002F 必填，有默认值\n    \u002F\u002F   timeout: number         \u002F\u002F 可选，有默认值\n    \u002F\u002F   retries: number         \u002F\u002F 可选，有默认值\n    \u002F\u002F }\n\n    console.log(resolvedOptions.baseURL) \u002F\u002F ✅ TypeScript 知道这总是有定义的\n    console.log(resolvedOptions.timeout) \u002F\u002F ✅ TypeScript 知道这总是有定义的\n    console.log(resolvedOptions.retries) \u002F\u002F ✅ TypeScript 知道这总是有定义的\n  },\n})\n",[1028,2445,2446,2464,2468,2473,2482,2493,2502,2512,2521,2525,2529,2556,2564,2579,2594,2598,2606,2622,2636,2649,2654,2672,2678,2684,2693,2702,2711,2719,2725,2730,2754,2776,2798,2803],{"__ignoreMap":354},[1059,2447,2448,2450,2452,2454,2456,2458,2460,2462],{"class":1061,"line":1062},[1059,2449,1066],{"class":1065},[1059,2451,1070],{"class":1069},[1059,2453,1074],{"class":1073},[1059,2455,1077],{"class":1069},[1059,2457,1080],{"class":1065},[1059,2459,1084],{"class":1083},[1059,2461,1088],{"class":1087},[1059,2463,1091],{"class":1083},[1059,2465,2466],{"class":1061,"line":1094},[1059,2467,1098],{"emptyLinePlaceholder":1097},[1059,2469,2470],{"class":1061,"line":1101},[1059,2471,2472],{"class":1295},"\u002F\u002F 定义你的模块选项接口\n",[1059,2474,2475,2478,2480],{"class":1061,"line":1119},[1059,2476,2477],{"class":1342},"interface",[1059,2479,1314],{"class":1351},[1059,2481,1129],{"class":1069},[1059,2483,2484,2488,2490],{"class":1061,"line":1132},[1059,2485,2487],{"class":2486},"sP6_D","  apiKey",[1059,2489,1126],{"class":1371},[1059,2491,2492],{"class":1393}," string\n",[1059,2494,2495,2498,2500],{"class":1061,"line":1151},[1059,2496,2497],{"class":2486},"  baseURL",[1059,2499,1126],{"class":1371},[1059,2501,2492],{"class":1393},[1059,2503,2504,2507,2509],{"class":1061,"line":1168},[1059,2505,2506],{"class":2486},"  timeout",[1059,2508,1372],{"class":1371},[1059,2510,2511],{"class":1393}," number\n",[1059,2513,2514,2517,2519],{"class":1061,"line":1174},[1059,2515,2516],{"class":2486},"  retries",[1059,2518,1372],{"class":1371},[1059,2520,2511],{"class":1393},[1059,2522,2523],{"class":1061,"line":1184},[1059,2524,1570],{"class":1069},[1059,2526,2527],{"class":1061,"line":1198},[1059,2528,1098],{"emptyLinePlaceholder":1097},[1059,2530,2531,2533,2535,2537,2539,2542,2544,2547,2549,2552,2554],{"class":1061,"line":1203},[1059,2532,1104],{"class":1065},[1059,2534,1107],{"class":1065},[1059,2536,1074],{"class":1110},[1059,2538,1348],{"class":1069},[1059,2540,2541],{"class":1351},"ModuleOptions",[1059,2543,1360],{"class":1069},[1059,2545,2546],{"class":1073},"()",[1059,2548,1232],{"class":1069},[1059,2550,2551],{"class":1110},"with",[1059,2553,1113],{"class":1073},[1059,2555,1116],{"class":1069},[1059,2557,2558,2560,2562],{"class":1061,"line":1222},[1059,2559,1123],{"class":1122},[1059,2561,1126],{"class":1069},[1059,2563,1129],{"class":1069},[1059,2565,2566,2568,2570,2572,2575,2577],{"class":1061,"line":1243},[1059,2567,1135],{"class":1122},[1059,2569,1126],{"class":1069},[1059,2571,1084],{"class":1083},[1059,2573,2574],{"class":1087},"@nuxtjs\u002Fmy-api",[1059,2576,1145],{"class":1083},[1059,2578,1148],{"class":1069},[1059,2580,2581,2583,2585,2587,2590,2592],{"class":1061,"line":1266},[1059,2582,1154],{"class":1122},[1059,2584,1126],{"class":1069},[1059,2586,1084],{"class":1083},[1059,2588,2589],{"class":1087},"myApi",[1059,2591,1145],{"class":1083},[1059,2593,1148],{"class":1069},[1059,2595,2596],{"class":1061,"line":1272},[1059,2597,1171],{"class":1069},[1059,2599,2600,2602,2604],{"class":1061,"line":1277},[1059,2601,1177],{"class":1122},[1059,2603,1126],{"class":1069},[1059,2605,1129],{"class":1069},[1059,2607,2608,2611,2613,2615,2618,2620],{"class":1061,"line":2137},[1059,2609,2610],{"class":1122},"    baseURL",[1059,2612,1126],{"class":1069},[1059,2614,1084],{"class":1083},[1059,2616,2617],{"class":1087},"https:\u002F\u002Fapi.example.com",[1059,2619,1145],{"class":1083},[1059,2621,1148],{"class":1069},[1059,2623,2625,2628,2630,2634],{"class":1061,"line":2624},18,[1059,2626,2627],{"class":1122},"    timeout",[1059,2629,1126],{"class":1069},[1059,2631,2633],{"class":2632},"sOUxV"," 5000",[1059,2635,1148],{"class":1069},[1059,2637,2639,2642,2644,2647],{"class":1061,"line":2638},19,[1059,2640,2641],{"class":1122},"    retries",[1059,2643,1126],{"class":1069},[1059,2645,2646],{"class":2632}," 3",[1059,2648,1148],{"class":1069},[1059,2650,2652],{"class":1061,"line":2651},20,[1059,2653,1171],{"class":1069},[1059,2655,2657,2659,2661,2664,2666,2668,2670],{"class":1061,"line":2656},21,[1059,2658,1207],{"class":1206},[1059,2660,1210],{"class":1069},[1059,2662,2663],{"class":1213},"resolvedOptions",[1059,2665,1311],{"class":1069},[1059,2667,1922],{"class":1213},[1059,2669,1217],{"class":1069},[1059,2671,1129],{"class":1069},[1059,2673,2675],{"class":1061,"line":2674},22,[1059,2676,2677],{"class":1295},"    \u002F\u002F resolvedOptions 的类型为：\n",[1059,2679,2681],{"class":1061,"line":2680},23,[1059,2682,2683],{"class":1295},"    \u002F\u002F {\n",[1059,2685,2687,2690],{"class":1061,"line":2686},24,[1059,2688,2689],{"class":1295},"    \u002F\u002F   apiKey: string",[1059,2691,2692],{"class":1295},"          \u002F\u002F 必填，无默认值\n",[1059,2694,2696,2699],{"class":1061,"line":2695},25,[1059,2697,2698],{"class":1295},"    \u002F\u002F   baseURL: string",[1059,2700,2701],{"class":1295},"         \u002F\u002F 必填，有默认值\n",[1059,2703,2705,2708],{"class":1061,"line":2704},26,[1059,2706,2707],{"class":1295},"    \u002F\u002F   timeout: number",[1059,2709,2710],{"class":1295},"         \u002F\u002F 可选，有默认值\n",[1059,2712,2714,2717],{"class":1061,"line":2713},27,[1059,2715,2716],{"class":1295},"    \u002F\u002F   retries: number",[1059,2718,2710],{"class":1295},[1059,2720,2722],{"class":1061,"line":2721},28,[1059,2723,2724],{"class":1295},"    \u002F\u002F }\n",[1059,2726,2728],{"class":1061,"line":2727},29,[1059,2729,1098],{"emptyLinePlaceholder":1097},[1059,2731,2733,2736,2738,2740,2742,2744,2746,2749,2751],{"class":1061,"line":2732},30,[1059,2734,2735],{"class":1073},"    console",[1059,2737,1232],{"class":1069},[1059,2739,1251],{"class":1110},[1059,2741,1113],{"class":1122},[1059,2743,2663],{"class":1073},[1059,2745,1232],{"class":1069},[1059,2747,2748],{"class":1073},"baseURL",[1059,2750,1238],{"class":1122},[1059,2752,2753],{"class":1295},"\u002F\u002F ✅ TypeScript 知道这总是有定义的\n",[1059,2755,2757,2759,2761,2763,2765,2767,2769,2772,2774],{"class":1061,"line":2756},31,[1059,2758,2735],{"class":1073},[1059,2760,1232],{"class":1069},[1059,2762,1251],{"class":1110},[1059,2764,1113],{"class":1122},[1059,2766,2663],{"class":1073},[1059,2768,1232],{"class":1069},[1059,2770,2771],{"class":1073},"timeout",[1059,2773,1238],{"class":1122},[1059,2775,2753],{"class":1295},[1059,2777,2779,2781,2783,2785,2787,2789,2791,2794,2796],{"class":1061,"line":2778},32,[1059,2780,2735],{"class":1073},[1059,2782,1232],{"class":1069},[1059,2784,1251],{"class":1110},[1059,2786,1113],{"class":1122},[1059,2788,2663],{"class":1073},[1059,2790,1232],{"class":1069},[1059,2792,2793],{"class":1073},"retries",[1059,2795,1238],{"class":1122},[1059,2797,2753],{"class":1295},[1059,2799,2801],{"class":1061,"line":2800},33,[1059,2802,1171],{"class":1069},[1059,2804,2806,2808],{"class":1061,"line":2805},34,[1059,2807,1280],{"class":1069},[1059,2809,1263],{"class":1073},[1024,2811,2812,2813,2815,2816,2818,2819,2821,2822,1826,2824,2826,2827,1786,2830,2832],{},"不使用 ",[1028,2814,2433],{}," 时，",[1028,2817,2663],{}," 参数会被类型化为原始的 ",[1028,2820,2541],{}," 接口，即使提供了默认值，",[1028,2823,2771],{},[1028,2825,2793],{}," 仍可能为 ",[1028,2828,2829],{},"undefined",[1028,2831,2433],{}," 方法让 TypeScript 理解默认值使这些属性在解析后的选项中变为非可选。",[1957,2834,2835],{"id":2835},"使用生命周期钩子处理模块安装与升级",[1024,2837,2838],{},"你可以定义在模块首次安装或升级到新版本时运行的生命周期钩子。这些钩子适合用于执行一次性设置任务、数据库迁移或清理操作。",[2840,2841],"important",{},[1024,2843,2844,2845,2848,2849,1826,2851,2853,2854,2856],{},"要让生命周期钩子生效，你",[1577,2846,2847],{},"必须","在模块定义中同时提供 ",[1028,2850,1825],{},[1028,2852,1829],{},"。这些钩子使用这些值来在项目 ",[1028,2855,170],{}," 文件中跟踪模块的安装状态。\n:",[1024,2858,2859,2860,2862],{},"生命周期钩子在主 ",[1028,2861,1893],{}," 函数之前运行，如果某个钩子抛出错误，错误会被记录但不会停止构建过程。",[1024,2864,2865,2869],{},[1577,2866,2867],{},[1028,2868,1793],{}," 仅在模块首次加入项目时运行一次。",[1024,2871,2872,2876],{},[1577,2873,2874],{},[1028,2875,1836],{}," 在模块版本升高（使用 semver 比较）时每次都会运行——但每个版本提升只运行一次。",[2878,2879,1785],"h5",{"id":2880},"示例-1",[1050,2882,2884],{"className":1052,"code":2883,"language":1054,"meta":354,"style":354},"import { defineNuxtModule } from '@nuxt\u002Fkit'\nimport { isLess } from 'verkit'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'my-awesome-module',\n    version: '1.2.0', \u002F\u002F 生命周期钩子所必需\n    configKey: 'myAwesomeModule',\n  },\n  defaults: {\n    apiKey: '',\n    enabled: true,\n  },\n\n  onInstall (nuxt) {\n    \u002F\u002F 仅在模块首次安装时运行\n    console.log('Setting up my-awesome-module for the first time!')\n\n    \u002F\u002F 你可能希望：\n    \u002F\u002F - 创建初始配置文件\n    \u002F\u002F - 设置数据库 schema\n    \u002F\u002F - 显示欢迎信息\n    \u002F\u002F - 执行初始数据迁移\n  },\n\n  onUpgrade (nuxt, options, previousVersion) {\n    \u002F\u002F 当模块升级到新版本时运行\n    console.log(`Upgrading my-awesome-module from ${previousVersion} to 1.2.0`)\n\n    \u002F\u002F 你可能希望：\n    \u002F\u002F - 迁移配置文件\n    \u002F\u002F - 更新数据库 schema\n    \u002F\u002F - 清理已弃用的文件\n    \u002F\u002F - 显示升级说明\n\n    if (isLess(previousVersion, '1.1.0')) {\n      console.log('⚠️  1.1.0 中的破坏性变更 - 请查阅迁移指南')\n    }\n  },\n\n  setup (options, nuxt) {\n    \u002F\u002F 常规 setup 逻辑在每次构建时运行\n    if (options.enabled) {\n      \u002F\u002F 配置模块\n    }\n  },\n})\n",[1028,2885,2886,2904,2924,2928,2940,2948,2963,2982,2997,3001,3009,3021,3031,3035,3039,3052,3057,3076,3080,3085,3090,3095,3100,3105,3109,3113,3134,3139,3170,3174,3178,3183,3188,3193,3198,3203,3231,3251,3256,3261,3266,3283,3289,3306,3312,3317,3322],{"__ignoreMap":354},[1059,2887,2888,2890,2892,2894,2896,2898,2900,2902],{"class":1061,"line":1062},[1059,2889,1066],{"class":1065},[1059,2891,1070],{"class":1069},[1059,2893,1074],{"class":1073},[1059,2895,1077],{"class":1069},[1059,2897,1080],{"class":1065},[1059,2899,1084],{"class":1083},[1059,2901,1088],{"class":1087},[1059,2903,1091],{"class":1083},[1059,2905,2906,2908,2910,2913,2915,2917,2919,2922],{"class":1061,"line":1094},[1059,2907,1066],{"class":1065},[1059,2909,1070],{"class":1069},[1059,2911,2912],{"class":1073}," isLess",[1059,2914,1077],{"class":1069},[1059,2916,1080],{"class":1065},[1059,2918,1084],{"class":1083},[1059,2920,2921],{"class":1087},"verkit",[1059,2923,1091],{"class":1083},[1059,2925,2926],{"class":1061,"line":1101},[1059,2927,1098],{"emptyLinePlaceholder":1097},[1059,2929,2930,2932,2934,2936,2938],{"class":1061,"line":1119},[1059,2931,1104],{"class":1065},[1059,2933,1107],{"class":1065},[1059,2935,1074],{"class":1110},[1059,2937,1113],{"class":1073},[1059,2939,1116],{"class":1069},[1059,2941,2942,2944,2946],{"class":1061,"line":1132},[1059,2943,1123],{"class":1122},[1059,2945,1126],{"class":1069},[1059,2947,1129],{"class":1069},[1059,2949,2950,2952,2954,2956,2959,2961],{"class":1061,"line":1151},[1059,2951,1135],{"class":1122},[1059,2953,1126],{"class":1069},[1059,2955,1084],{"class":1083},[1059,2957,2958],{"class":1087},"my-awesome-module",[1059,2960,1145],{"class":1083},[1059,2962,1148],{"class":1069},[1059,2964,2965,2968,2970,2972,2975,2977,2979],{"class":1061,"line":1168},[1059,2966,2967],{"class":1122},"    version",[1059,2969,1126],{"class":1069},[1059,2971,1084],{"class":1083},[1059,2973,2974],{"class":1087},"1.2.0",[1059,2976,1145],{"class":1083},[1059,2978,1311],{"class":1069},[1059,2980,2981],{"class":1295}," \u002F\u002F 生命周期钩子所必需\n",[1059,2983,2984,2986,2988,2990,2993,2995],{"class":1061,"line":1174},[1059,2985,1154],{"class":1122},[1059,2987,1126],{"class":1069},[1059,2989,1084],{"class":1083},[1059,2991,2992],{"class":1087},"myAwesomeModule",[1059,2994,1145],{"class":1083},[1059,2996,1148],{"class":1069},[1059,2998,2999],{"class":1061,"line":1184},[1059,3000,1171],{"class":1069},[1059,3002,3003,3005,3007],{"class":1061,"line":1198},[1059,3004,1177],{"class":1122},[1059,3006,1126],{"class":1069},[1059,3008,1129],{"class":1069},[1059,3010,3011,3014,3016,3019],{"class":1061,"line":1203},[1059,3012,3013],{"class":1122},"    apiKey",[1059,3015,1126],{"class":1069},[1059,3017,3018],{"class":1083}," ''",[1059,3020,1148],{"class":1069},[1059,3022,3023,3025,3027,3029],{"class":1061,"line":1222},[1059,3024,1187],{"class":1122},[1059,3026,1126],{"class":1069},[1059,3028,1193],{"class":1192},[1059,3030,1148],{"class":1069},[1059,3032,3033],{"class":1061,"line":1243},[1059,3034,1171],{"class":1069},[1059,3036,3037],{"class":1061,"line":1266},[1059,3038,1098],{"emptyLinePlaceholder":1097},[1059,3040,3041,3044,3046,3048,3050],{"class":1061,"line":1272},[1059,3042,3043],{"class":1206},"  onInstall",[1059,3045,1210],{"class":1069},[1059,3047,1649],{"class":1213},[1059,3049,1217],{"class":1069},[1059,3051,1129],{"class":1069},[1059,3053,3054],{"class":1061,"line":1277},[1059,3055,3056],{"class":1295},"    \u002F\u002F 仅在模块首次安装时运行\n",[1059,3058,3059,3061,3063,3065,3067,3069,3072,3074],{"class":1061,"line":2137},[1059,3060,2735],{"class":1073},[1059,3062,1232],{"class":1069},[1059,3064,1251],{"class":1110},[1059,3066,1113],{"class":1122},[1059,3068,1145],{"class":1083},[1059,3070,3071],{"class":1087},"Setting up my-awesome-module for the first time!",[1059,3073,1145],{"class":1083},[1059,3075,1263],{"class":1122},[1059,3077,3078],{"class":1061,"line":2624},[1059,3079,1098],{"emptyLinePlaceholder":1097},[1059,3081,3082],{"class":1061,"line":2638},[1059,3083,3084],{"class":1295},"    \u002F\u002F 你可能希望：\n",[1059,3086,3087],{"class":1061,"line":2651},[1059,3088,3089],{"class":1295},"    \u002F\u002F - 创建初始配置文件\n",[1059,3091,3092],{"class":1061,"line":2656},[1059,3093,3094],{"class":1295},"    \u002F\u002F - 设置数据库 schema\n",[1059,3096,3097],{"class":1061,"line":2674},[1059,3098,3099],{"class":1295},"    \u002F\u002F - 显示欢迎信息\n",[1059,3101,3102],{"class":1061,"line":2680},[1059,3103,3104],{"class":1295},"    \u002F\u002F - 执行初始数据迁移\n",[1059,3106,3107],{"class":1061,"line":2686},[1059,3108,1171],{"class":1069},[1059,3110,3111],{"class":1061,"line":2695},[1059,3112,1098],{"emptyLinePlaceholder":1097},[1059,3114,3115,3118,3120,3122,3124,3126,3128,3130,3132],{"class":1061,"line":2704},[1059,3116,3117],{"class":1206},"  onUpgrade",[1059,3119,1210],{"class":1069},[1059,3121,1649],{"class":1213},[1059,3123,1311],{"class":1069},[1059,3125,1853],{"class":1213},[1059,3127,1311],{"class":1069},[1059,3129,1862],{"class":1213},[1059,3131,1217],{"class":1069},[1059,3133,1129],{"class":1069},[1059,3135,3136],{"class":1061,"line":2713},[1059,3137,3138],{"class":1295},"    \u002F\u002F 当模块升级到新版本时运行\n",[1059,3140,3141,3143,3145,3147,3149,3152,3155,3158,3161,3163,3166,3168],{"class":1061,"line":2721},[1059,3142,2735],{"class":1073},[1059,3144,1232],{"class":1069},[1059,3146,1251],{"class":1110},[1059,3148,1113],{"class":1122},[1059,3150,3151],{"class":1083},"`",[1059,3153,3154],{"class":1087},"Upgrading my-awesome-module from ",[1059,3156,3157],{"class":1083},"${",[1059,3159,3160],{"class":1073},"previousVersion",[1059,3162,1280],{"class":1083},[1059,3164,3165],{"class":1087}," to 1.2.0",[1059,3167,3151],{"class":1083},[1059,3169,1263],{"class":1122},[1059,3171,3172],{"class":1061,"line":2727},[1059,3173,1098],{"emptyLinePlaceholder":1097},[1059,3175,3176],{"class":1061,"line":2732},[1059,3177,3084],{"class":1295},[1059,3179,3180],{"class":1061,"line":2756},[1059,3181,3182],{"class":1295},"    \u002F\u002F - 迁移配置文件\n",[1059,3184,3185],{"class":1061,"line":2778},[1059,3186,3187],{"class":1295},"    \u002F\u002F - 更新数据库 schema\n",[1059,3189,3190],{"class":1061,"line":2800},[1059,3191,3192],{"class":1295},"    \u002F\u002F - 清理已弃用的文件\n",[1059,3194,3195],{"class":1061,"line":2805},[1059,3196,3197],{"class":1295},"    \u002F\u002F - 显示升级说明\n",[1059,3199,3201],{"class":1061,"line":3200},35,[1059,3202,1098],{"emptyLinePlaceholder":1097},[1059,3204,3206,3208,3210,3213,3215,3217,3219,3221,3224,3226,3229],{"class":1061,"line":3205},36,[1059,3207,1225],{"class":1065},[1059,3209,1210],{"class":1122},[1059,3211,3212],{"class":1110},"isLess",[1059,3214,1113],{"class":1122},[1059,3216,3160],{"class":1073},[1059,3218,1311],{"class":1069},[1059,3220,1084],{"class":1083},[1059,3222,3223],{"class":1087},"1.1.0",[1059,3225,1145],{"class":1083},[1059,3227,3228],{"class":1122},")) ",[1059,3230,1116],{"class":1069},[1059,3232,3234,3236,3238,3240,3242,3244,3247,3249],{"class":1061,"line":3233},37,[1059,3235,1246],{"class":1073},[1059,3237,1232],{"class":1069},[1059,3239,1251],{"class":1110},[1059,3241,1113],{"class":1122},[1059,3243,1145],{"class":1083},[1059,3245,3246],{"class":1087},"⚠️  1.1.0 中的破坏性变更 - 请查阅迁移指南",[1059,3248,1145],{"class":1083},[1059,3250,1263],{"class":1122},[1059,3252,3254],{"class":1061,"line":3253},38,[1059,3255,1269],{"class":1069},[1059,3257,3259],{"class":1061,"line":3258},39,[1059,3260,1171],{"class":1069},[1059,3262,3264],{"class":1061,"line":3263},40,[1059,3265,1098],{"emptyLinePlaceholder":1097},[1059,3267,3269,3271,3273,3275,3277,3279,3281],{"class":1061,"line":3268},41,[1059,3270,1207],{"class":1206},[1059,3272,1210],{"class":1069},[1059,3274,1214],{"class":1213},[1059,3276,1311],{"class":1069},[1059,3278,1922],{"class":1213},[1059,3280,1217],{"class":1069},[1059,3282,1129],{"class":1069},[1059,3284,3286],{"class":1061,"line":3285},42,[1059,3287,3288],{"class":1295},"    \u002F\u002F 常规 setup 逻辑在每次构建时运行\n",[1059,3290,3292,3294,3296,3298,3300,3302,3304],{"class":1061,"line":3291},43,[1059,3293,1225],{"class":1065},[1059,3295,1210],{"class":1122},[1059,3297,1214],{"class":1073},[1059,3299,1232],{"class":1069},[1059,3301,1235],{"class":1073},[1059,3303,1238],{"class":1122},[1059,3305,1116],{"class":1069},[1059,3307,3309],{"class":1061,"line":3308},44,[1059,3310,3311],{"class":1295},"      \u002F\u002F 配置模块\n",[1059,3313,3315],{"class":1061,"line":3314},45,[1059,3316,1269],{"class":1069},[1059,3318,3320],{"class":1061,"line":3319},46,[1059,3321,1171],{"class":1069},[1059,3323,3325,3327],{"class":1061,"line":3324},47,[1059,3326,1280],{"class":1069},[1059,3328,1263],{"class":1073},[1957,3330,3331],{"id":3331},"指定模块依赖",[1024,3333,3334,3335,3337],{},"你可以使用 ",[1028,3336,1034],{}," 选项来声明对其他模块的依赖。这是一种健壮的方式，可确保正确的初始化顺序、版本兼容性以及配置管理。",[1024,3339,3340,3342],{},[1028,3341,1034],{}," 选项可以是一个对象，也可以是一个接收 Nuxt 实例的函数：",[2878,3344,1785],{"id":3345},"示例-2",[1050,3347,3349],{"className":1052,"code":3348,"language":1054,"meta":354,"style":354},"import { defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'my-module',\n  },\n  moduleDependencies: {\n    '@nuxtjs\u002Ftailwindcss': {\n      \u002F\u002F 指定版本约束（semver 格式）\n      version: '>=6.0.0',\n      \u002F\u002F 覆盖用户设置的配置\n      overrides: {\n        exposeConfig: true,\n      },\n      \u002F\u002F 设置默认值但尊重用户设置的配置\n      defaults: {\n        config: {\n          darkMode: 'class',\n        },\n      },\n    },\n    '@nuxtjs\u002Ffontaine': {\n      \u002F\u002F 可选依赖不会被安装，但确保它们被安装时可以设置选项\n      optional: true,\n      defaults: {\n        fonts: [\n          {\n            family: 'Roboto',\n            fallbacks: ['Impact'],\n          },\n        ],\n      },\n    },\n  },\n  setup (options, nuxt) {\n\n  },\n})\n",[1028,3350,3351,3369,3373,3385,3393,3407,3411,3420,3435,3440,3456,3461,3470,3481,3486,3491,3500,3509,3525,3530,3534,3538,3551,3556,3567,3575,3585,3590,3606,3628,3633,3640,3644,3648,3652,3668,3672,3676],{"__ignoreMap":354},[1059,3352,3353,3355,3357,3359,3361,3363,3365,3367],{"class":1061,"line":1062},[1059,3354,1066],{"class":1065},[1059,3356,1070],{"class":1069},[1059,3358,1074],{"class":1073},[1059,3360,1077],{"class":1069},[1059,3362,1080],{"class":1065},[1059,3364,1084],{"class":1083},[1059,3366,1088],{"class":1087},[1059,3368,1091],{"class":1083},[1059,3370,3371],{"class":1061,"line":1094},[1059,3372,1098],{"emptyLinePlaceholder":1097},[1059,3374,3375,3377,3379,3381,3383],{"class":1061,"line":1101},[1059,3376,1104],{"class":1065},[1059,3378,1107],{"class":1065},[1059,3380,1074],{"class":1110},[1059,3382,1113],{"class":1073},[1059,3384,1116],{"class":1069},[1059,3386,3387,3389,3391],{"class":1061,"line":1119},[1059,3388,1123],{"class":1122},[1059,3390,1126],{"class":1069},[1059,3392,1129],{"class":1069},[1059,3394,3395,3397,3399,3401,3403,3405],{"class":1061,"line":1132},[1059,3396,1135],{"class":1122},[1059,3398,1126],{"class":1069},[1059,3400,1084],{"class":1083},[1059,3402,1142],{"class":1087},[1059,3404,1145],{"class":1083},[1059,3406,1148],{"class":1069},[1059,3408,3409],{"class":1061,"line":1151},[1059,3410,1171],{"class":1069},[1059,3412,3413,3416,3418],{"class":1061,"line":1168},[1059,3414,3415],{"class":1122},"  moduleDependencies",[1059,3417,1126],{"class":1069},[1059,3419,1129],{"class":1069},[1059,3421,3422,3425,3429,3431,3433],{"class":1061,"line":1174},[1059,3423,3424],{"class":1083},"    '",[1059,3426,3428],{"class":3427},"sSD0A","@nuxtjs\u002Ftailwindcss",[1059,3430,1145],{"class":1083},[1059,3432,1126],{"class":1069},[1059,3434,1129],{"class":1069},[1059,3436,3437],{"class":1061,"line":1184},[1059,3438,3439],{"class":1295},"      \u002F\u002F 指定版本约束（semver 格式）\n",[1059,3441,3442,3445,3447,3449,3452,3454],{"class":1061,"line":1198},[1059,3443,3444],{"class":1122},"      version",[1059,3446,1126],{"class":1069},[1059,3448,1084],{"class":1083},[1059,3450,3451],{"class":1087},">=6.0.0",[1059,3453,1145],{"class":1083},[1059,3455,1148],{"class":1069},[1059,3457,3458],{"class":1061,"line":1203},[1059,3459,3460],{"class":1295},"      \u002F\u002F 覆盖用户设置的配置\n",[1059,3462,3463,3466,3468],{"class":1061,"line":1222},[1059,3464,3465],{"class":1122},"      overrides",[1059,3467,1126],{"class":1069},[1059,3469,1129],{"class":1069},[1059,3471,3472,3475,3477,3479],{"class":1061,"line":1243},[1059,3473,3474],{"class":1122},"        exposeConfig",[1059,3476,1126],{"class":1069},[1059,3478,1193],{"class":1192},[1059,3480,1148],{"class":1069},[1059,3482,3483],{"class":1061,"line":1266},[1059,3484,3485],{"class":1069},"      },\n",[1059,3487,3488],{"class":1061,"line":1272},[1059,3489,3490],{"class":1295},"      \u002F\u002F 设置默认值但尊重用户设置的配置\n",[1059,3492,3493,3496,3498],{"class":1061,"line":1277},[1059,3494,3495],{"class":1122},"      defaults",[1059,3497,1126],{"class":1069},[1059,3499,1129],{"class":1069},[1059,3501,3502,3505,3507],{"class":1061,"line":2137},[1059,3503,3504],{"class":1122},"        config",[1059,3506,1126],{"class":1069},[1059,3508,1129],{"class":1069},[1059,3510,3511,3514,3516,3518,3521,3523],{"class":1061,"line":2624},[1059,3512,3513],{"class":1122},"          darkMode",[1059,3515,1126],{"class":1069},[1059,3517,1084],{"class":1083},[1059,3519,3520],{"class":1087},"class",[1059,3522,1145],{"class":1083},[1059,3524,1148],{"class":1069},[1059,3526,3527],{"class":1061,"line":2638},[1059,3528,3529],{"class":1069},"        },\n",[1059,3531,3532],{"class":1061,"line":2651},[1059,3533,3485],{"class":1069},[1059,3535,3536],{"class":1061,"line":2656},[1059,3537,2351],{"class":1069},[1059,3539,3540,3542,3545,3547,3549],{"class":1061,"line":2674},[1059,3541,3424],{"class":1083},[1059,3543,3544],{"class":3427},"@nuxtjs\u002Ffontaine",[1059,3546,1145],{"class":1083},[1059,3548,1126],{"class":1069},[1059,3550,1129],{"class":1069},[1059,3552,3553],{"class":1061,"line":2680},[1059,3554,3555],{"class":1295},"      \u002F\u002F 可选依赖不会被安装，但确保它们被安装时可以设置选项\n",[1059,3557,3558,3561,3563,3565],{"class":1061,"line":2686},[1059,3559,3560],{"class":1122},"      optional",[1059,3562,1126],{"class":1069},[1059,3564,1193],{"class":1192},[1059,3566,1148],{"class":1069},[1059,3568,3569,3571,3573],{"class":1061,"line":2695},[1059,3570,3495],{"class":1122},[1059,3572,1126],{"class":1069},[1059,3574,1129],{"class":1069},[1059,3576,3577,3580,3582],{"class":1061,"line":2704},[1059,3578,3579],{"class":1122},"        fonts",[1059,3581,1126],{"class":1069},[1059,3583,3584],{"class":1073}," [\n",[1059,3586,3587],{"class":1061,"line":2713},[1059,3588,3589],{"class":1069},"          {\n",[1059,3591,3592,3595,3597,3599,3602,3604],{"class":1061,"line":2721},[1059,3593,3594],{"class":1122},"            family",[1059,3596,1126],{"class":1069},[1059,3598,1084],{"class":1083},[1059,3600,3601],{"class":1087},"Roboto",[1059,3603,1145],{"class":1083},[1059,3605,1148],{"class":1069},[1059,3607,3608,3611,3613,3616,3618,3621,3623,3626],{"class":1061,"line":2727},[1059,3609,3610],{"class":1122},"            fallbacks",[1059,3612,1126],{"class":1069},[1059,3614,3615],{"class":1073}," [",[1059,3617,1145],{"class":1083},[1059,3619,3620],{"class":1087},"Impact",[1059,3622,1145],{"class":1083},[1059,3624,3625],{"class":1073},"]",[1059,3627,1148],{"class":1069},[1059,3629,3630],{"class":1061,"line":2732},[1059,3631,3632],{"class":1069},"          },\n",[1059,3634,3635,3638],{"class":1061,"line":2756},[1059,3636,3637],{"class":1073},"        ]",[1059,3639,1148],{"class":1069},[1059,3641,3642],{"class":1061,"line":2778},[1059,3643,3485],{"class":1069},[1059,3645,3646],{"class":1061,"line":2800},[1059,3647,2351],{"class":1069},[1059,3649,3650],{"class":1061,"line":2805},[1059,3651,1171],{"class":1069},[1059,3653,3654,3656,3658,3660,3662,3664,3666],{"class":1061,"line":3200},[1059,3655,1207],{"class":1206},[1059,3657,1210],{"class":1069},[1059,3659,1214],{"class":1213},[1059,3661,1311],{"class":1069},[1059,3663,1922],{"class":1213},[1059,3665,1217],{"class":1069},[1059,3667,1129],{"class":1069},[1059,3669,3670],{"class":1061,"line":3205},[1059,3671,1098],{"emptyLinePlaceholder":1097},[1059,3673,3674],{"class":1061,"line":3233},[1059,3675,1171],{"class":1069},[1059,3677,3678,3680],{"class":1061,"line":3253},[1059,3679,1280],{"class":1069},[1059,3681,1263],{"class":1073},[1024,3683,3684],{},"你也可以用一个函数，根据 Nuxt 配置动态决定依赖：",[1050,3686,3688],{"className":1052,"code":3687,"language":1054,"meta":354,"style":354},"import { defineNuxtModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'my-module',\n  },\n  moduleDependencies (nuxt) {\n    const dependencies: Record\u003Cstring, any> = {\n      '@nuxtjs\u002Ftailwindcss': {\n        version: '>=6.0.0',\n      },\n    }\n\n    \u002F\u002F 根据 Nuxt 配置有条件地添加依赖\n    if (nuxt.options.experimental?.someFeature) {\n      dependencies['@nuxtjs\u002Ffontaine'] = {\n        optional: true,\n      }\n    }\n\n    return dependencies\n  },\n  setup (options, nuxt) {\n    \u002F\u002F 你的 setup 逻辑会在所有依赖初始化之后运行\n  },\n})\n",[1028,3689,3690,3708,3712,3724,3732,3746,3750,3762,3788,3801,3816,3820,3824,3828,3833,3860,3882,3893,3898,3902,3906,3914,3918,3934,3939,3943],{"__ignoreMap":354},[1059,3691,3692,3694,3696,3698,3700,3702,3704,3706],{"class":1061,"line":1062},[1059,3693,1066],{"class":1065},[1059,3695,1070],{"class":1069},[1059,3697,1074],{"class":1073},[1059,3699,1077],{"class":1069},[1059,3701,1080],{"class":1065},[1059,3703,1084],{"class":1083},[1059,3705,1088],{"class":1087},[1059,3707,1091],{"class":1083},[1059,3709,3710],{"class":1061,"line":1094},[1059,3711,1098],{"emptyLinePlaceholder":1097},[1059,3713,3714,3716,3718,3720,3722],{"class":1061,"line":1101},[1059,3715,1104],{"class":1065},[1059,3717,1107],{"class":1065},[1059,3719,1074],{"class":1110},[1059,3721,1113],{"class":1073},[1059,3723,1116],{"class":1069},[1059,3725,3726,3728,3730],{"class":1061,"line":1119},[1059,3727,1123],{"class":1122},[1059,3729,1126],{"class":1069},[1059,3731,1129],{"class":1069},[1059,3733,3734,3736,3738,3740,3742,3744],{"class":1061,"line":1132},[1059,3735,1135],{"class":1122},[1059,3737,1126],{"class":1069},[1059,3739,1084],{"class":1083},[1059,3741,1142],{"class":1087},[1059,3743,1145],{"class":1083},[1059,3745,1148],{"class":1069},[1059,3747,3748],{"class":1061,"line":1151},[1059,3749,1171],{"class":1069},[1059,3751,3752,3754,3756,3758,3760],{"class":1061,"line":1168},[1059,3753,3415],{"class":1206},[1059,3755,1210],{"class":1069},[1059,3757,1649],{"class":1213},[1059,3759,1217],{"class":1069},[1059,3761,1129],{"class":1069},[1059,3763,3764,3766,3769,3771,3773,3775,3777,3779,3782,3784,3786],{"class":1061,"line":1174},[1059,3765,2368],{"class":1342},[1059,3767,3768],{"class":1639}," dependencies",[1059,3770,1126],{"class":1371},[1059,3772,1761],{"class":1351},[1059,3774,1348],{"class":1069},[1059,3776,1735],{"class":1393},[1059,3778,1311],{"class":1069},[1059,3780,3781],{"class":1393}," any",[1059,3783,1360],{"class":1069},[1059,3785,2374],{"class":1371},[1059,3787,1129],{"class":1069},[1059,3789,3790,3793,3795,3797,3799],{"class":1061,"line":1184},[1059,3791,3792],{"class":1083},"      '",[1059,3794,3428],{"class":3427},[1059,3796,1145],{"class":1083},[1059,3798,1126],{"class":1069},[1059,3800,1129],{"class":1069},[1059,3802,3803,3806,3808,3810,3812,3814],{"class":1061,"line":1198},[1059,3804,3805],{"class":1122},"        version",[1059,3807,1126],{"class":1069},[1059,3809,1084],{"class":1083},[1059,3811,3451],{"class":1087},[1059,3813,1145],{"class":1083},[1059,3815,1148],{"class":1069},[1059,3817,3818],{"class":1061,"line":1203},[1059,3819,3485],{"class":1069},[1059,3821,3822],{"class":1061,"line":1222},[1059,3823,1269],{"class":1069},[1059,3825,3826],{"class":1061,"line":1243},[1059,3827,1098],{"emptyLinePlaceholder":1097},[1059,3829,3830],{"class":1061,"line":1266},[1059,3831,3832],{"class":1295},"    \u002F\u002F 根据 Nuxt 配置有条件地添加依赖\n",[1059,3834,3835,3837,3839,3841,3843,3845,3847,3850,3853,3856,3858],{"class":1061,"line":1272},[1059,3836,1225],{"class":1065},[1059,3838,1210],{"class":1122},[1059,3840,1649],{"class":1073},[1059,3842,1232],{"class":1069},[1059,3844,1214],{"class":1073},[1059,3846,1232],{"class":1069},[1059,3848,3849],{"class":1073},"experimental",[1059,3851,3852],{"class":1069},"?.",[1059,3854,3855],{"class":1073},"someFeature",[1059,3857,1238],{"class":1122},[1059,3859,1116],{"class":1069},[1059,3861,3862,3865,3868,3870,3872,3874,3877,3880],{"class":1061,"line":1277},[1059,3863,3864],{"class":1073},"      dependencies",[1059,3866,3867],{"class":1122},"[",[1059,3869,1145],{"class":1083},[1059,3871,3544],{"class":1087},[1059,3873,1145],{"class":1083},[1059,3875,3876],{"class":1122},"] ",[1059,3878,3879],{"class":1371},"=",[1059,3881,1129],{"class":1069},[1059,3883,3884,3887,3889,3891],{"class":1061,"line":2137},[1059,3885,3886],{"class":1122},"        optional",[1059,3888,1126],{"class":1069},[1059,3890,1193],{"class":1192},[1059,3892,1148],{"class":1069},[1059,3894,3895],{"class":1061,"line":2624},[1059,3896,3897],{"class":1069},"      }\n",[1059,3899,3900],{"class":1061,"line":2638},[1059,3901,1269],{"class":1069},[1059,3903,3904],{"class":1061,"line":2651},[1059,3905,1098],{"emptyLinePlaceholder":1097},[1059,3907,3908,3911],{"class":1061,"line":2656},[1059,3909,3910],{"class":1065},"    return",[1059,3912,3913],{"class":1073}," dependencies\n",[1059,3915,3916],{"class":1061,"line":2674},[1059,3917,1171],{"class":1069},[1059,3919,3920,3922,3924,3926,3928,3930,3932],{"class":1061,"line":2680},[1059,3921,1207],{"class":1206},[1059,3923,1210],{"class":1069},[1059,3925,1214],{"class":1213},[1059,3927,1311],{"class":1069},[1059,3929,1922],{"class":1213},[1059,3931,1217],{"class":1069},[1059,3933,1129],{"class":1069},[1059,3935,3936],{"class":1061,"line":2686},[1059,3937,3938],{"class":1295},"    \u002F\u002F 你的 setup 逻辑会在所有依赖初始化之后运行\n",[1059,3940,3941],{"class":1061,"line":2695},[1059,3942,1171],{"class":1069},[1059,3944,3945,3947],{"class":1061,"line":2704},[1059,3946,1280],{"class":1069},[1059,3948,1263],{"class":1073},[1037,3950,3952],{"id":3951},"installmodule",[1028,3953,3954],{},"installModule",[3956,3957],"callout",{"type":3958},"warning",[1024,3960,3961,3964,3965,3967,3968,3972,3973,3975],{},[1577,3962,3963],{},"已弃用："," 请改用 ",[1028,3966,1030],{}," 中的 ",[1782,3969,3970],{"href":1784},[1028,3971,1034],{}," 选项。",[1028,3974,3954],{}," 函数将在未来版本中被移除（或可能变为非阻塞）。\n:",[1024,3977,3978,3979,3982,3983,3985],{},"以编程方式安装指定的 Nuxt 模块。当你的模块依赖其他模块时这很有帮助。你可以向 ",[1028,3980,3981],{},"inlineOptions"," 传入一个对象作为模块选项，它们会被传给模块的 ",[1028,3984,1893],{}," 函数。",[1046,3987,1048],{"id":3988},"用法-1",[1050,3990,3992],{"className":1052,"code":3991,"language":1054,"meta":1055,"style":354},"import { defineNuxtModule, installModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  async setup () {\n    \u002F\u002F 会以 Roboto 字体和 Impact 回退来安装 @nuxtjs\u002Ffontaine\n    await installModule('@nuxtjs\u002Ffontaine', {\n      \u002F\u002F 模块配置\n      fonts: [\n        {\n          family: 'Roboto',\n          fallbacks: ['Impact'],\n          fallbackName: 'fallback-a',\n        },\n      ],\n    })\n  },\n})\n",[1028,3993,3994,4017,4021,4033,4045,4050,4069,4074,4083,4088,4103,4122,4138,4142,4149,4156,4160],{"__ignoreMap":354},[1059,3995,3996,3998,4000,4002,4004,4007,4009,4011,4013,4015],{"class":1061,"line":1062},[1059,3997,1066],{"class":1065},[1059,3999,1070],{"class":1069},[1059,4001,1074],{"class":1073},[1059,4003,1311],{"class":1069},[1059,4005,4006],{"class":1073}," installModule",[1059,4008,1077],{"class":1069},[1059,4010,1080],{"class":1065},[1059,4012,1084],{"class":1083},[1059,4014,1088],{"class":1087},[1059,4016,1091],{"class":1083},[1059,4018,4019],{"class":1061,"line":1094},[1059,4020,1098],{"emptyLinePlaceholder":1097},[1059,4022,4023,4025,4027,4029,4031],{"class":1061,"line":1101},[1059,4024,1104],{"class":1065},[1059,4026,1107],{"class":1065},[1059,4028,1074],{"class":1110},[1059,4030,1113],{"class":1073},[1059,4032,1116],{"class":1069},[1059,4034,4035,4038,4041,4043],{"class":1061,"line":1119},[1059,4036,4037],{"class":1342},"  async",[1059,4039,4040],{"class":1206}," setup",[1059,4042,1469],{"class":1069},[1059,4044,1129],{"class":1069},[1059,4046,4047],{"class":1061,"line":1132},[1059,4048,4049],{"class":1295},"    \u002F\u002F 会以 Roboto 字体和 Impact 回退来安装 @nuxtjs\u002Ffontaine\n",[1059,4051,4052,4055,4057,4059,4061,4063,4065,4067],{"class":1061,"line":1151},[1059,4053,4054],{"class":1065},"    await",[1059,4056,4006],{"class":1110},[1059,4058,1113],{"class":1122},[1059,4060,1145],{"class":1083},[1059,4062,3544],{"class":1087},[1059,4064,1145],{"class":1083},[1059,4066,1311],{"class":1069},[1059,4068,1129],{"class":1069},[1059,4070,4071],{"class":1061,"line":1168},[1059,4072,4073],{"class":1295},"      \u002F\u002F 模块配置\n",[1059,4075,4076,4079,4081],{"class":1061,"line":1174},[1059,4077,4078],{"class":1122},"      fonts",[1059,4080,1126],{"class":1069},[1059,4082,3584],{"class":1122},[1059,4084,4085],{"class":1061,"line":1184},[1059,4086,4087],{"class":1069},"        {\n",[1059,4089,4090,4093,4095,4097,4099,4101],{"class":1061,"line":1198},[1059,4091,4092],{"class":1122},"          family",[1059,4094,1126],{"class":1069},[1059,4096,1084],{"class":1083},[1059,4098,3601],{"class":1087},[1059,4100,1145],{"class":1083},[1059,4102,1148],{"class":1069},[1059,4104,4105,4108,4110,4112,4114,4116,4118,4120],{"class":1061,"line":1203},[1059,4106,4107],{"class":1122},"          fallbacks",[1059,4109,1126],{"class":1069},[1059,4111,3615],{"class":1122},[1059,4113,1145],{"class":1083},[1059,4115,3620],{"class":1087},[1059,4117,1145],{"class":1083},[1059,4119,3625],{"class":1122},[1059,4121,1148],{"class":1069},[1059,4123,4124,4127,4129,4131,4134,4136],{"class":1061,"line":1222},[1059,4125,4126],{"class":1122},"          fallbackName",[1059,4128,1126],{"class":1069},[1059,4130,1084],{"class":1083},[1059,4132,4133],{"class":1087},"fallback-a",[1059,4135,1145],{"class":1083},[1059,4137,1148],{"class":1069},[1059,4139,4140],{"class":1061,"line":1243},[1059,4141,3529],{"class":1069},[1059,4143,4144,4147],{"class":1061,"line":1266},[1059,4145,4146],{"class":1122},"      ]",[1059,4148,1148],{"class":1069},[1059,4150,4151,4154],{"class":1061,"line":1272},[1059,4152,4153],{"class":1069},"    }",[1059,4155,1263],{"class":1122},[1059,4157,4158],{"class":1061,"line":1277},[1059,4159,1171],{"class":1069},[1059,4161,4162,4164],{"class":1061,"line":2137},[1059,4163,1280],{"class":1069},[1059,4165,1263],{"class":1073},[1046,4167,1285],{"id":4168},"类型-1",[1050,4170,4172],{"className":1052,"code":4171,"language":1054,"meta":354,"style":354},"async function installModule (moduleToInstall: string | NuxtModule, inlineOptions?: any, nuxt?: Nuxt)\n",[1028,4173,4174],{"__ignoreMap":354},[1059,4175,4176,4179,4181,4183,4185,4188,4190,4192,4194,4196,4198,4201,4203,4205,4207,4209,4211,4213],{"class":1061,"line":1062},[1059,4177,4178],{"class":1342},"async",[1059,4180,1343],{"class":1342},[1059,4182,4006],{"class":1110},[1059,4184,1210],{"class":1069},[1059,4186,4187],{"class":1213},"moduleToInstall",[1059,4189,1126],{"class":1371},[1059,4191,1867],{"class":1393},[1059,4193,1399],{"class":1371},[1059,4195,1319],{"class":1351},[1059,4197,1311],{"class":1069},[1059,4199,4200],{"class":1213}," inlineOptions",[1059,4202,1372],{"class":1371},[1059,4204,3781],{"class":1393},[1059,4206,1311],{"class":1069},[1059,4208,1922],{"class":1213},[1059,4210,1372],{"class":1371},[1059,4212,1654],{"class":1351},[1059,4214,1263],{"class":1069},[1046,4216,1573],{"id":4217},"参数-1",[1582,4219,4220,4232],{},[1585,4221,4222],{},[1588,4223,4224,4226,4228,4230],{},[1591,4225,1593],{},[1591,4227,1285],{},[1591,4229,1598],{},[1591,4231,1601],{},[1603,4233,4234,4260,4280],{},[1588,4235,4236,4240,4252,4257],{},[1608,4237,4238],{},[1028,4239,4187],{},[1608,4241,4242],{},[1028,4243,4244,4247,4250],{"className":1052,"language":1054,"style":354},[1059,4245,4246],{"class":1073},"string ",[1059,4248,4249],{"class":1371},"|",[1059,4251,1319],{"class":1073},[1608,4253,4254],{},[1028,4255,4256],{},"true",[1608,4258,4259],{},"要安装的模块。可以是一个带有模块名的字符串，也可以是模块对象本身。",[1588,4261,4262,4266,4271,4275],{},[1608,4263,4264],{},[1028,4265,3981],{},[1608,4267,4268],{},[1028,4269,4270],{},"any",[1608,4272,4273],{},[1028,4274,1622],{},[1608,4276,4277,4278,3985],{},"一个带有模块选项的对象，会传给模块的 ",[1028,4279,1893],{},[1588,4281,4282,4286,4291,4295],{},[1608,4283,4284],{},[1028,4285,1649],{},[1608,4287,4288],{},[1028,4289,4290],{},"Nuxt",[1608,4292,4293],{},[1028,4294,1622],{},[1608,4296,4297,4298,4301],{},"Nuxt 实例。如果未提供，会通过 ",[1028,4299,4300],{},"useNuxt()"," 调用从上下文中获取。",[1046,4303,1785],{"id":4304},"示例-3",[1050,4306,4308],{"className":1052,"code":4307,"language":1054,"meta":354,"style":354},"import { defineNuxtModule, installModule } from '@nuxt\u002Fkit'\n\nexport default defineNuxtModule({\n  async setup (options, nuxt) {\n    \u002F\u002F 会以 Roboto 字体和 Impact 回退来安装 @nuxtjs\u002Ffontaine\n    await installModule('@nuxtjs\u002Ffontaine', {\n      \u002F\u002F 模块配置\n      fonts: [\n        {\n          family: 'Roboto',\n          fallbacks: ['Impact'],\n          fallbackName: 'fallback-a',\n        },\n      ],\n    })\n  },\n})\n",[1028,4309,4310,4332,4336,4348,4366,4370,4388,4392,4400,4404,4418,4436,4450,4454,4460,4466,4470],{"__ignoreMap":354},[1059,4311,4312,4314,4316,4318,4320,4322,4324,4326,4328,4330],{"class":1061,"line":1062},[1059,4313,1066],{"class":1065},[1059,4315,1070],{"class":1069},[1059,4317,1074],{"class":1073},[1059,4319,1311],{"class":1069},[1059,4321,4006],{"class":1073},[1059,4323,1077],{"class":1069},[1059,4325,1080],{"class":1065},[1059,4327,1084],{"class":1083},[1059,4329,1088],{"class":1087},[1059,4331,1091],{"class":1083},[1059,4333,4334],{"class":1061,"line":1094},[1059,4335,1098],{"emptyLinePlaceholder":1097},[1059,4337,4338,4340,4342,4344,4346],{"class":1061,"line":1101},[1059,4339,1104],{"class":1065},[1059,4341,1107],{"class":1065},[1059,4343,1074],{"class":1110},[1059,4345,1113],{"class":1073},[1059,4347,1116],{"class":1069},[1059,4349,4350,4352,4354,4356,4358,4360,4362,4364],{"class":1061,"line":1119},[1059,4351,4037],{"class":1342},[1059,4353,4040],{"class":1206},[1059,4355,1210],{"class":1069},[1059,4357,1214],{"class":1213},[1059,4359,1311],{"class":1069},[1059,4361,1922],{"class":1213},[1059,4363,1217],{"class":1069},[1059,4365,1129],{"class":1069},[1059,4367,4368],{"class":1061,"line":1132},[1059,4369,4049],{"class":1295},[1059,4371,4372,4374,4376,4378,4380,4382,4384,4386],{"class":1061,"line":1151},[1059,4373,4054],{"class":1065},[1059,4375,4006],{"class":1110},[1059,4377,1113],{"class":1122},[1059,4379,1145],{"class":1083},[1059,4381,3544],{"class":1087},[1059,4383,1145],{"class":1083},[1059,4385,1311],{"class":1069},[1059,4387,1129],{"class":1069},[1059,4389,4390],{"class":1061,"line":1168},[1059,4391,4073],{"class":1295},[1059,4393,4394,4396,4398],{"class":1061,"line":1174},[1059,4395,4078],{"class":1122},[1059,4397,1126],{"class":1069},[1059,4399,3584],{"class":1122},[1059,4401,4402],{"class":1061,"line":1184},[1059,4403,4087],{"class":1069},[1059,4405,4406,4408,4410,4412,4414,4416],{"class":1061,"line":1198},[1059,4407,4092],{"class":1122},[1059,4409,1126],{"class":1069},[1059,4411,1084],{"class":1083},[1059,4413,3601],{"class":1087},[1059,4415,1145],{"class":1083},[1059,4417,1148],{"class":1069},[1059,4419,4420,4422,4424,4426,4428,4430,4432,4434],{"class":1061,"line":1203},[1059,4421,4107],{"class":1122},[1059,4423,1126],{"class":1069},[1059,4425,3615],{"class":1122},[1059,4427,1145],{"class":1083},[1059,4429,3620],{"class":1087},[1059,4431,1145],{"class":1083},[1059,4433,3625],{"class":1122},[1059,4435,1148],{"class":1069},[1059,4437,4438,4440,4442,4444,4446,4448],{"class":1061,"line":1222},[1059,4439,4126],{"class":1122},[1059,4441,1126],{"class":1069},[1059,4443,1084],{"class":1083},[1059,4445,4133],{"class":1087},[1059,4447,1145],{"class":1083},[1059,4449,1148],{"class":1069},[1059,4451,4452],{"class":1061,"line":1243},[1059,4453,3529],{"class":1069},[1059,4455,4456,4458],{"class":1061,"line":1266},[1059,4457,4146],{"class":1122},[1059,4459,1148],{"class":1069},[1059,4461,4462,4464],{"class":1061,"line":1272},[1059,4463,4153],{"class":1069},[1059,4465,1263],{"class":1122},[1059,4467,4468],{"class":1061,"line":1277},[1059,4469,1171],{"class":1069},[1059,4471,4472,4474],{"class":1061,"line":2137},[1059,4473,1280],{"class":1069},[1059,4475,1263],{"class":1073},[4477,4478,4479],"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 .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .si1Qm, html code.shiki .si1Qm{--shiki-light:#FF5370;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}html pre.shiki code .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZqJ9, html code.shiki .sZqJ9{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sV7Px, html code.shiki .sV7Px{--shiki-light:#9C3EDA;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sXPRQ, html code.shiki .sXPRQ{--shiki-light:#39ADB5;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .sJTDI, html code.shiki .sJTDI{--shiki-light:#90A4AE;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .s9BSX, html code.shiki .s9BSX{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sP6_D, html code.shiki .sP6_D{--shiki-light:#E53935;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .sOUxV, html code.shiki .sOUxV{--shiki-light:#F76D47;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html pre.shiki code .sSD0A, html code.shiki .sSD0A{--shiki-light:#E53935;--shiki-default:#9ECBFF;--shiki-dark:#F07178}",{"title":354,"searchDepth":1101,"depth":1101,"links":4481},[4482,4496],{"id":1039,"depth":1094,"text":1030,"children":4483},[4484,4485,4486,4487],{"id":1048,"depth":1101,"text":1048},{"id":1285,"depth":1101,"text":1285},{"id":1573,"depth":1101,"text":1573},{"id":1785,"depth":1101,"text":1785,"children":4488},[4489,4491,4492,4494,4495],{"id":1959,"depth":1119,"text":4490},"使用 configKey 使你的模块可配置",{"id":2252,"depth":1119,"text":2252},{"id":2430,"depth":1119,"text":4493},"使用 .with() 对解析后的选项进行类型保护",{"id":2835,"depth":1119,"text":2835},{"id":3331,"depth":1119,"text":3331},{"id":3951,"depth":1094,"text":3954,"children":4497},[4498,4499,4500,4501],{"id":3988,"depth":1101,"text":1048},{"id":4168,"depth":1101,"text":1285},{"id":4217,"depth":1101,"text":1573},{"id":4304,"depth":1101,"text":1785},"md",{"links":4504},[4505],{"label":4506,"icon":4507,"to":4508,"size":4509},"Source","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Ftree\u002Fmain\u002Fpackages\u002Fkit\u002Fsrc\u002Fmodule","xs",null,{"title":733,"description":734},"docs\u002F4.api\u002F5.kit\u002F1.modules","YgPm7FEIu2qURxwKK_WHLrEqbXTJi7OmlmMk5bfIrNY",1785179859563]