[{"data":1,"prerenderedAt":6886},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fexperimental-features":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":310,"body":1020,"description":311,"extension":6880,"meta":6881,"navigation":6882,"path":309,"seo":6883,"stem":6884,"__hash__":6885},"docs\u002Fdocs\u002F3.guide\u002F6.going-further\u002F1.experimental-features.md",{"type":1021,"value":1022,"toc":6869},"minimark",[1023,1027,1047,1053,1058,1068,1081,1084,1160,1164,1167,1170,1217,1221,1228,1274,6866],[1024,1025,1026],"p",{},"Nuxt 包含可在配置文件中启用的实验性特性。",[1024,1028,1029,1030,1034,1035,1039,1040,1046],{},"在内部，Nuxt 使用 ",[1031,1032,1033],"code",{},"@nuxt\u002Fschema"," 来定义这些实验性特性。你可以参考 ",[1036,1037,1038],"a",{"href":309},"API 文档"," 或",[1036,1041,1045],{"href":1042,"rel":1043},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Fmain\u002Fpackages\u002Fschema\u002Fsrc\u002Fconfig\u002Fexperimental.ts",[1044],"nofollow","源代码"," 了解更多信息。",[1048,1049,1050],"note",{},[1024,1051,1052],{},"请注意，这些特性是实验性的，未来可能会被移除或修改。",[1054,1055,1057],"h2",{"id":1056},"alwaysrunfetchonkeychange","alwaysRunFetchOnKeyChange",[1024,1059,1060,1061,1063,1064,1067],{},"是否在 key 改变时运行 ",[1031,1062,453],{},"，即使它被设置为 ",[1031,1065,1066],{},"immediate: false"," 且尚未被触发。",[1024,1069,1070,1071,1074,1075,1077,1078,1080],{},"如果 ",[1031,1072,1073],{},"immediate: true"," 或它已经被触发过，",[1031,1076,453],{}," 和 ",[1031,1079,441],{}," 在 key 改变时总是会运行。",[1024,1082,1083],{},"这个标志默认是禁用的，但你可以启用此特性：",[1085,1086,1091],"pre",{"className":1087,"code":1088,"filename":174,"language":1089,"meta":1090,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","export default defineNuxtConfig({\n  experimental: {\n    alwaysRunFetchOnKeyChange: true,\n  },\n})\n","ts","twoslash",[1031,1092,1093,1117,1130,1145,1151],{"__ignoreMap":354},[1094,1095,1098,1102,1105,1109,1113],"span",{"class":1096,"line":1097},"line",1,[1094,1099,1101],{"class":1100},"szyBz","export",[1094,1103,1104],{"class":1100}," default",[1094,1106,1108],{"class":1107},"srJn9"," defineNuxtConfig",[1094,1110,1112],{"class":1111},"smVNa","(",[1094,1114,1116],{"class":1115},"sF54B","{\n",[1094,1118,1120,1124,1127],{"class":1096,"line":1119},2,[1094,1121,1123],{"class":1122},"sOtFm","  experimental",[1094,1125,1126],{"class":1115},":",[1094,1128,1129],{"class":1115}," {\n",[1094,1131,1133,1136,1138,1142],{"class":1096,"line":1132},3,[1094,1134,1135],{"class":1122},"    alwaysRunFetchOnKeyChange",[1094,1137,1126],{"class":1115},[1094,1139,1141],{"class":1140},"si1Qm"," true",[1094,1143,1144],{"class":1115},",\n",[1094,1146,1148],{"class":1096,"line":1147},4,[1094,1149,1150],{"class":1115},"  },\n",[1094,1152,1154,1157],{"class":1096,"line":1153},5,[1094,1155,1156],{"class":1115},"}",[1094,1158,1159],{"class":1111},")\n",[1054,1161,1163],{"id":1162},"appmanifest","appManifest",[1024,1165,1166],{},"使用应用 manifest 以在客户端遵循路由规则。",[1024,1168,1169],{},"这个标志默认是启用的，但你可以禁用此特性：",[1085,1171,1173],{"className":1087,"code":1172,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    appManifest: false,\n  },\n})\n",[1031,1174,1175,1187,1195,1207,1211],{"__ignoreMap":354},[1094,1176,1177,1179,1181,1183,1185],{"class":1096,"line":1097},[1094,1178,1101],{"class":1100},[1094,1180,1104],{"class":1100},[1094,1182,1108],{"class":1107},[1094,1184,1112],{"class":1111},[1094,1186,1116],{"class":1115},[1094,1188,1189,1191,1193],{"class":1096,"line":1119},[1094,1190,1123],{"class":1122},[1094,1192,1126],{"class":1115},[1094,1194,1129],{"class":1115},[1094,1196,1197,1200,1202,1205],{"class":1096,"line":1132},[1094,1198,1199],{"class":1122},"    appManifest",[1094,1201,1126],{"class":1115},[1094,1203,1204],{"class":1140}," false",[1094,1206,1144],{"class":1115},[1094,1208,1209],{"class":1096,"line":1147},[1094,1210,1150],{"class":1115},[1094,1212,1213,1215],{"class":1096,"line":1153},[1094,1214,1156],{"class":1115},[1094,1216,1159],{"class":1111},[1054,1218,1220],{"id":1219},"asynccontext","asyncContext",[1024,1222,1223,1224,1227],{},"启用原生 async 上下文，使其在 Nuxt 和 Nitro 中的嵌套组合式函数中可访问。这为在 async 组合式函数内部使用组合式函数打开了可能性，并减少了遇到 ",[1031,1225,1226],{},"Nuxt instance is unavailable","（Nuxt 实例不可用）错误的机会。",[1085,1229,1231],{"className":1087,"code":1230,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    asyncContext: true,\n  },\n})\n",[1031,1232,1233,1245,1253,1264,1268],{"__ignoreMap":354},[1094,1234,1235,1237,1239,1241,1243],{"class":1096,"line":1097},[1094,1236,1101],{"class":1100},[1094,1238,1104],{"class":1100},[1094,1240,1108],{"class":1107},[1094,1242,1112],{"class":1111},[1094,1244,1116],{"class":1115},[1094,1246,1247,1249,1251],{"class":1096,"line":1119},[1094,1248,1123],{"class":1122},[1094,1250,1126],{"class":1115},[1094,1252,1129],{"class":1115},[1094,1254,1255,1258,1260,1262],{"class":1096,"line":1132},[1094,1256,1257],{"class":1122},"    asyncContext",[1094,1259,1126],{"class":1115},[1094,1261,1141],{"class":1140},[1094,1263,1144],{"class":1115},[1094,1265,1266],{"class":1096,"line":1147},[1094,1267,1150],{"class":1115},[1094,1269,1270,1272],{"class":1096,"line":1153},[1094,1271,1156],{"class":1115},[1094,1273,1159],{"class":1111},[1275,1276,1280,1283,1287,1290,1336,1340,1348,1394,1397,1515,1622,1625,1636,1640,1647,1654,1666,1677,1731,1735,1738,1741,1787,1791,1804,1807,1817,1863,1867,1875,1921,1928],"read-more",{"to":1277,"icon":1278,"target":1279},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F20918","i-simple-icons-github","_blank",[1024,1281,1282],{},"在 GitHub pull request 中查看完整解释。\n:::",[1054,1284,1286],{"id":1285},"asyncentry","asyncEntry",[1024,1288,1289],{},"为 Vue bundle 生成异步入口点，辅助模块联邦支持。",[1085,1291,1293],{"className":1087,"code":1292,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    asyncEntry: true,\n  },\n})\n",[1031,1294,1295,1307,1315,1326,1330],{"__ignoreMap":354},[1094,1296,1297,1299,1301,1303,1305],{"class":1096,"line":1097},[1094,1298,1101],{"class":1100},[1094,1300,1104],{"class":1100},[1094,1302,1108],{"class":1107},[1094,1304,1112],{"class":1111},[1094,1306,1116],{"class":1115},[1094,1308,1309,1311,1313],{"class":1096,"line":1119},[1094,1310,1123],{"class":1122},[1094,1312,1126],{"class":1115},[1094,1314,1129],{"class":1115},[1094,1316,1317,1320,1322,1324],{"class":1096,"line":1132},[1094,1318,1319],{"class":1122},"    asyncEntry",[1094,1321,1126],{"class":1115},[1094,1323,1141],{"class":1140},[1094,1325,1144],{"class":1115},[1094,1327,1328],{"class":1096,"line":1147},[1094,1329,1150],{"class":1115},[1094,1331,1332,1334],{"class":1096,"line":1153},[1094,1333,1156],{"class":1115},[1094,1335,1159],{"class":1111},[1054,1337,1339],{"id":1338},"extractasyncdatahandlers","extractAsyncDataHandlers",[1024,1341,1342,1343,1077,1345,1347],{},"从 ",[1031,1344,441],{},[1031,1346,473],{}," 调用中提取处理函数到独立的 chunk 中，以改善代码分割和缓存效率。",[1085,1349,1351],{"className":1087,"code":1350,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    extractAsyncDataHandlers: true,\n  },\n})\n",[1031,1352,1353,1365,1373,1384,1388],{"__ignoreMap":354},[1094,1354,1355,1357,1359,1361,1363],{"class":1096,"line":1097},[1094,1356,1101],{"class":1100},[1094,1358,1104],{"class":1100},[1094,1360,1108],{"class":1107},[1094,1362,1112],{"class":1111},[1094,1364,1116],{"class":1115},[1094,1366,1367,1369,1371],{"class":1096,"line":1119},[1094,1368,1123],{"class":1122},[1094,1370,1126],{"class":1115},[1094,1372,1129],{"class":1115},[1094,1374,1375,1378,1380,1382],{"class":1096,"line":1132},[1094,1376,1377],{"class":1122},"    extractAsyncDataHandlers",[1094,1379,1126],{"class":1115},[1094,1381,1141],{"class":1140},[1094,1383,1144],{"class":1115},[1094,1385,1386],{"class":1096,"line":1147},[1094,1387,1150],{"class":1115},[1094,1389,1390,1392],{"class":1096,"line":1153},[1094,1391,1156],{"class":1115},[1094,1393,1159],{"class":1111},[1024,1395,1396],{},"此特性将内联的处理函数转换为动态导入的 chunk：",[1085,1398,1402],{"className":1399,"code":1400,"language":1401,"meta":354,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003C!-- 转换前 -->\n\u003Cscript setup>\nconst { data } = await useAsyncData('user', async () => {\n  return await $fetch('\u002Fapi\u002Fuser')\n})\n\u003C\u002Fscript>\n","vue",[1031,1403,1404,1410,1426,1478,1499,1505],{"__ignoreMap":354},[1094,1405,1406],{"class":1096,"line":1097},[1094,1407,1409],{"class":1408},"sZqJ9","\u003C!-- 转换前 -->\n",[1094,1411,1412,1415,1419,1423],{"class":1096,"line":1119},[1094,1413,1414],{"class":1115},"\u003C",[1094,1416,1418],{"class":1417},"s6g6u","script",[1094,1420,1422],{"class":1421},"sXjFp"," setup",[1094,1424,1425],{"class":1115},">\n",[1094,1427,1428,1432,1435,1439,1442,1446,1449,1452,1454,1458,1462,1464,1467,1470,1473,1476],{"class":1096,"line":1132},[1094,1429,1431],{"class":1430},"sV7Px","const",[1094,1433,1434],{"class":1115}," {",[1094,1436,1438],{"class":1437},"sJTDI"," data",[1094,1440,1441],{"class":1115}," }",[1094,1443,1445],{"class":1444},"sXPRQ"," =",[1094,1447,1448],{"class":1100}," await",[1094,1450,1451],{"class":1107}," useAsyncData",[1094,1453,1112],{"class":1111},[1094,1455,1457],{"class":1456},"s0jeK","'",[1094,1459,1461],{"class":1460},"s-Aze","user",[1094,1463,1457],{"class":1456},[1094,1465,1466],{"class":1115},",",[1094,1468,1469],{"class":1430}," async",[1094,1471,1472],{"class":1115}," ()",[1094,1474,1475],{"class":1430}," =>",[1094,1477,1129],{"class":1115},[1094,1479,1480,1483,1485,1488,1490,1492,1495,1497],{"class":1096,"line":1147},[1094,1481,1482],{"class":1100},"  return",[1094,1484,1448],{"class":1100},[1094,1486,1487],{"class":1107}," $fetch",[1094,1489,1112],{"class":1122},[1094,1491,1457],{"class":1456},[1094,1493,1494],{"class":1460},"\u002Fapi\u002Fuser",[1094,1496,1457],{"class":1456},[1094,1498,1159],{"class":1122},[1094,1500,1501,1503],{"class":1096,"line":1153},[1094,1502,1156],{"class":1115},[1094,1504,1159],{"class":1111},[1094,1506,1508,1511,1513],{"class":1096,"line":1507},6,[1094,1509,1510],{"class":1115},"\u003C\u002F",[1094,1512,1418],{"class":1417},[1094,1514,1425],{"class":1115},[1085,1516,1518],{"className":1399,"code":1517,"language":1401,"meta":354,"style":354},"\u003C!-- 转换后 -->\n\u003Cscript setup>\nconst { data } = await useAsyncData('user', () =>\n  import('\u002Fgenerated-chunk.js').then(r => r.default()),\n)\n\u003C\u002Fscript>\n",[1031,1519,1520,1525,1535,1566,1610,1614],{"__ignoreMap":354},[1094,1521,1522],{"class":1096,"line":1097},[1094,1523,1524],{"class":1408},"\u003C!-- 转换后 -->\n",[1094,1526,1527,1529,1531,1533],{"class":1096,"line":1119},[1094,1528,1414],{"class":1115},[1094,1530,1418],{"class":1417},[1094,1532,1422],{"class":1421},[1094,1534,1425],{"class":1115},[1094,1536,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563],{"class":1096,"line":1132},[1094,1538,1431],{"class":1430},[1094,1540,1434],{"class":1115},[1094,1542,1438],{"class":1437},[1094,1544,1441],{"class":1115},[1094,1546,1445],{"class":1444},[1094,1548,1448],{"class":1100},[1094,1550,1451],{"class":1107},[1094,1552,1112],{"class":1111},[1094,1554,1457],{"class":1456},[1094,1556,1461],{"class":1460},[1094,1558,1457],{"class":1456},[1094,1560,1466],{"class":1115},[1094,1562,1472],{"class":1115},[1094,1564,1565],{"class":1430}," =>\n",[1094,1567,1568,1571,1573,1575,1578,1580,1583,1586,1589,1591,1595,1597,1600,1602,1605,1608],{"class":1096,"line":1147},[1094,1569,1570],{"class":1444},"  import",[1094,1572,1112],{"class":1111},[1094,1574,1457],{"class":1456},[1094,1576,1577],{"class":1460},"\u002Fgenerated-chunk.js",[1094,1579,1457],{"class":1456},[1094,1581,1582],{"class":1111},")",[1094,1584,1585],{"class":1115},".",[1094,1587,1588],{"class":1107},"then",[1094,1590,1112],{"class":1111},[1094,1592,1594],{"class":1593},"ssIVr","r",[1094,1596,1475],{"class":1430},[1094,1598,1599],{"class":1111}," r",[1094,1601,1585],{"class":1115},[1094,1603,1604],{"class":1107},"default",[1094,1606,1607],{"class":1111},"())",[1094,1609,1144],{"class":1115},[1094,1611,1612],{"class":1096,"line":1153},[1094,1613,1159],{"class":1111},[1094,1615,1616,1618,1620],{"class":1096,"line":1507},[1094,1617,1510],{"class":1115},[1094,1619,1418],{"class":1417},[1094,1621,1425],{"class":1115},[1024,1623,1624],{},"这种转换的好处是，我们可以拆分出数据获取逻辑——同时仍然允许在需要时加载这些代码。",[1626,1627,1628],"important",{},[1024,1629,1630,1631,1635],{},"此特性仅推荐用于",[1632,1633,1634],"strong",{},"带有 payload 提取的静态构建","，且数据不需要在运行时重新获取的情况。",[1054,1637,1639],{"id":1638},"emitroutechunkerror","emitRouteChunkError",[1024,1641,1642,1643,1646],{},"当加载 vite\u002Fwebpack chunk 出现错误时，发出 ",[1031,1644,1645],{},"app:chunkError"," 钩子。默认行为是在导航到新路由时，当某个 chunk 加载失败时执行新路由的重新加载。",[1024,1648,1649,1650,1653],{},"默认情况下，当导航到新路由时某个 chunk 加载失败，Nuxt 也会执行新路由的重新加载（",[1031,1651,1652],{},"automatic"," 自动）。",[1024,1655,1656,1657,1660,1661,1665],{},"设置为 ",[1031,1658,1659],{},"automatic-immediate"," 会让 Nuxt 在 chunk 加载失败时立即执行当前路由的重新加载（而不是等待导航）。这对于非由导航触发的 chunk 错误很有用，例如当你的 Nuxt 应用未能加载某个",[1036,1662,1664],{"href":1663},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents#dynamic-imports","懒加载组件"," 时。这种行为的一个潜在缺点是产生不期望的重新加载，例如当你的应用并不需要导致错误的那个 chunk 时。",[1024,1667,1668,1669,1672,1673,1676],{},"你可以将此设为 ",[1031,1670,1671],{},"false"," 来禁用自动处理，或设为 ",[1031,1674,1675],{},"manual"," 来手动处理 chunk 错误。",[1085,1678,1680],{"className":1087,"code":1679,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    emitRouteChunkError: 'automatic', \u002F\u002F 或 'automatic-immediate'、'manual' 或 false\n  },\n})\n",[1031,1681,1682,1694,1702,1721,1725],{"__ignoreMap":354},[1094,1683,1684,1686,1688,1690,1692],{"class":1096,"line":1097},[1094,1685,1101],{"class":1100},[1094,1687,1104],{"class":1100},[1094,1689,1108],{"class":1107},[1094,1691,1112],{"class":1111},[1094,1693,1116],{"class":1115},[1094,1695,1696,1698,1700],{"class":1096,"line":1119},[1094,1697,1123],{"class":1122},[1094,1699,1126],{"class":1115},[1094,1701,1129],{"class":1115},[1094,1703,1704,1707,1709,1712,1714,1716,1718],{"class":1096,"line":1132},[1094,1705,1706],{"class":1122},"    emitRouteChunkError",[1094,1708,1126],{"class":1115},[1094,1710,1711],{"class":1456}," '",[1094,1713,1652],{"class":1460},[1094,1715,1457],{"class":1456},[1094,1717,1466],{"class":1115},[1094,1719,1720],{"class":1408}," \u002F\u002F 或 'automatic-immediate'、'manual' 或 false\n",[1094,1722,1723],{"class":1096,"line":1147},[1094,1724,1150],{"class":1115},[1094,1726,1727,1729],{"class":1096,"line":1153},[1094,1728,1156],{"class":1115},[1094,1730,1159],{"class":1111},[1054,1732,1734],{"id":1733},"enforcemodulecompatibility","enforceModuleCompatibility",[1024,1736,1737],{},"当某个 Nuxt 模块不兼容时，Nuxt 是否应抛出错误（并加载失败）。",[1024,1739,1740],{},"此特性默认是禁用的。",[1085,1742,1744],{"className":1087,"code":1743,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    enforceModuleCompatibility: true,\n  },\n})\n",[1031,1745,1746,1758,1766,1777,1781],{"__ignoreMap":354},[1094,1747,1748,1750,1752,1754,1756],{"class":1096,"line":1097},[1094,1749,1101],{"class":1100},[1094,1751,1104],{"class":1100},[1094,1753,1108],{"class":1107},[1094,1755,1112],{"class":1111},[1094,1757,1116],{"class":1115},[1094,1759,1760,1762,1764],{"class":1096,"line":1119},[1094,1761,1123],{"class":1122},[1094,1763,1126],{"class":1115},[1094,1765,1129],{"class":1115},[1094,1767,1768,1771,1773,1775],{"class":1096,"line":1132},[1094,1769,1770],{"class":1122},"    enforceModuleCompatibility",[1094,1772,1126],{"class":1115},[1094,1774,1141],{"class":1140},[1094,1776,1144],{"class":1115},[1094,1778,1779],{"class":1096,"line":1147},[1094,1780,1150],{"class":1115},[1094,1782,1783,1785],{"class":1096,"line":1153},[1094,1784,1156],{"class":1115},[1094,1786,1159],{"class":1111},[1054,1788,1790],{"id":1789},"restorestate","restoreState",[1024,1792,1793,1794,1799,1800,1803],{},"在 chunk 错误或手动调用 ",[1036,1795,1796],{"href":648},[1031,1797,1798],{},"reloadNuxtApp()"," 后重新加载页面时，允许从 ",[1031,1801,1802],{},"sessionStorage"," 恢复 Nuxt 应用状态。",[1024,1805,1806],{},"为了避免水合错误，它只会在 Vue 应用挂载之后应用，这意味着初始加载时可能会出现闪烁。",[1626,1808,1809],{},[1024,1810,1811,1812,1816],{},"在启用此特性前请仔细考虑，因为它可能导致意外行为，并考虑为 ",[1036,1813,1814],{"href":548},[1031,1815,549],{}," 提供显式 key，因为自动生成的 key 可能在构建之间不匹配。",[1085,1818,1820],{"className":1087,"code":1819,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    restoreState: true,\n  },\n})\n",[1031,1821,1822,1834,1842,1853,1857],{"__ignoreMap":354},[1094,1823,1824,1826,1828,1830,1832],{"class":1096,"line":1097},[1094,1825,1101],{"class":1100},[1094,1827,1104],{"class":1100},[1094,1829,1108],{"class":1107},[1094,1831,1112],{"class":1111},[1094,1833,1116],{"class":1115},[1094,1835,1836,1838,1840],{"class":1096,"line":1119},[1094,1837,1123],{"class":1122},[1094,1839,1126],{"class":1115},[1094,1841,1129],{"class":1115},[1094,1843,1844,1847,1849,1851],{"class":1096,"line":1132},[1094,1845,1846],{"class":1122},"    restoreState",[1094,1848,1126],{"class":1115},[1094,1850,1141],{"class":1140},[1094,1852,1144],{"class":1115},[1094,1854,1855],{"class":1096,"line":1147},[1094,1856,1150],{"class":1115},[1094,1858,1859,1861],{"class":1096,"line":1153},[1094,1860,1156],{"class":1115},[1094,1862,1159],{"class":1111},[1054,1864,1866],{"id":1865},"inlinerouterules","inlineRouteRules",[1024,1868,1869,1870,1874],{},"使用 ",[1036,1871,1872],{"href":604},[1031,1873,605],{}," 在页面级别定义路由规则。",[1085,1876,1878],{"className":1087,"code":1877,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    inlineRouteRules: true,\n  },\n})\n",[1031,1879,1880,1892,1900,1911,1915],{"__ignoreMap":354},[1094,1881,1882,1884,1886,1888,1890],{"class":1096,"line":1097},[1094,1883,1101],{"class":1100},[1094,1885,1104],{"class":1100},[1094,1887,1108],{"class":1107},[1094,1889,1112],{"class":1111},[1094,1891,1116],{"class":1115},[1094,1893,1894,1896,1898],{"class":1096,"line":1119},[1094,1895,1123],{"class":1122},[1094,1897,1126],{"class":1115},[1094,1899,1129],{"class":1115},[1094,1901,1902,1905,1907,1909],{"class":1096,"line":1132},[1094,1903,1904],{"class":1122},"    inlineRouteRules",[1094,1906,1126],{"class":1115},[1094,1908,1141],{"class":1140},[1094,1910,1144],{"class":1115},[1094,1912,1913],{"class":1096,"line":1147},[1094,1914,1150],{"class":1115},[1094,1916,1917,1919],{"class":1096,"line":1153},[1094,1918,1156],{"class":1115},[1094,1920,1159],{"class":1111},[1024,1922,1923,1924,1927],{},"将会基于页面的 ",[1031,1925,1926],{},"path"," 创建匹配的路由规则。",[1275,1929,1931,1937],{"to":604,"icon":1930},"i-lucide-square-function",[1024,1932,1933,1934,1936],{},"在 ",[1031,1935,605],{}," 工具函数中阅读更多内容。\n:::",[1275,1938,1941,1945,1948,1994,1998,2005,2007,2053,2057,2060,2090,2109,2160],{"to":1939,"icon":1940},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Frendering#hybrid-rendering","i-lucide-medal",[1054,1942,1944],{"id":1943},"novueserver","noVueServer",[1024,1946,1947],{},"在 Nitro 内禁用 Vue 服务端渲染端点。",[1085,1949,1951],{"className":1087,"code":1950,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    noVueServer: true,\n  },\n})\n",[1031,1952,1953,1965,1973,1984,1988],{"__ignoreMap":354},[1094,1954,1955,1957,1959,1961,1963],{"class":1096,"line":1097},[1094,1956,1101],{"class":1100},[1094,1958,1104],{"class":1100},[1094,1960,1108],{"class":1107},[1094,1962,1112],{"class":1111},[1094,1964,1116],{"class":1115},[1094,1966,1967,1969,1971],{"class":1096,"line":1119},[1094,1968,1123],{"class":1122},[1094,1970,1126],{"class":1115},[1094,1972,1129],{"class":1115},[1094,1974,1975,1978,1980,1982],{"class":1096,"line":1132},[1094,1976,1977],{"class":1122},"    noVueServer",[1094,1979,1126],{"class":1115},[1094,1981,1141],{"class":1140},[1094,1983,1144],{"class":1115},[1094,1985,1986],{"class":1096,"line":1147},[1094,1987,1150],{"class":1115},[1094,1989,1990,1992],{"class":1096,"line":1153},[1094,1991,1156],{"class":1115},[1094,1993,1159],{"class":1111},[1054,1995,1997],{"id":1996},"parseerrordata","parseErrorData",[1024,1999,2000,2001,2004],{},"是否在渲染服务端错误页面时解析 ",[1031,2002,2003],{},"error.data","。",[1024,2006,1169],{},[1085,2008,2010],{"className":1087,"code":2009,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    parseErrorData: false,\n  },\n})\n",[1031,2011,2012,2024,2032,2043,2047],{"__ignoreMap":354},[1094,2013,2014,2016,2018,2020,2022],{"class":1096,"line":1097},[1094,2015,1101],{"class":1100},[1094,2017,1104],{"class":1100},[1094,2019,1108],{"class":1107},[1094,2021,1112],{"class":1111},[1094,2023,1116],{"class":1115},[1094,2025,2026,2028,2030],{"class":1096,"line":1119},[1094,2027,1123],{"class":1122},[1094,2029,1126],{"class":1115},[1094,2031,1129],{"class":1115},[1094,2033,2034,2037,2039,2041],{"class":1096,"line":1132},[1094,2035,2036],{"class":1122},"    parseErrorData",[1094,2038,1126],{"class":1115},[1094,2040,1204],{"class":1140},[1094,2042,1144],{"class":1115},[1094,2044,2045],{"class":1096,"line":1147},[1094,2046,1150],{"class":1115},[1094,2048,2049,2051],{"class":1096,"line":1153},[1094,2050,1156],{"class":1115},[1094,2052,1159],{"class":1111},[1054,2054,2056],{"id":2055},"payloadextraction","payloadExtraction",[1024,2058,2059],{},"控制预渲染和缓存（ISR\u002FSWR）页面的 payload 数据如何传递。",[2061,2062,2063,2074,2083],"ul",{},[2064,2065,2066,2069,2070,2073],"li",{},[1031,2067,2068],{},"'client'"," - payload 在初始服务端渲染时内联在 HTML 中，并为客户端导航提取到 ",[1031,2071,2072],{},"_payload.json"," 文件。",[2064,2075,2076,2079,2080,2082],{},[1031,2077,2078],{},"true"," - payload 提取为单独的 ",[1031,2081,2072],{}," 文件，用于初始服务端渲染和客户端导航。",[2064,2084,2085,2087,2088,2073],{},[1031,2086,1671],{}," - 完全禁用 payload 提取。payload 始终内联在 HTML 中，不会生成任何 ",[1031,2089,2072],{},[1024,2091,2092,2093,2095,2096,2099,2100,2102,2103,2106,2107,2004],{},"默认值为 ",[1031,2094,2078],{},"，或者在设置了 ",[1031,2097,2098],{},"compatibilityVersion: 5"," 时为 ",[1031,2101,2068],{},"。当设置了 ",[1031,2104,2105],{},"ssr: false"," 时，它会被强制设为 ",[1031,2108,1671],{},[1085,2110,2112],{"className":1087,"code":2111,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    payloadExtraction: 'client',\n  },\n})\n",[1031,2113,2114,2126,2134,2150,2154],{"__ignoreMap":354},[1094,2115,2116,2118,2120,2122,2124],{"class":1096,"line":1097},[1094,2117,1101],{"class":1100},[1094,2119,1104],{"class":1100},[1094,2121,1108],{"class":1107},[1094,2123,1112],{"class":1111},[1094,2125,1116],{"class":1115},[1094,2127,2128,2130,2132],{"class":1096,"line":1119},[1094,2129,1123],{"class":1122},[1094,2131,1126],{"class":1115},[1094,2133,1129],{"class":1115},[1094,2135,2136,2139,2141,2143,2146,2148],{"class":1096,"line":1132},[1094,2137,2138],{"class":1122},"    payloadExtraction",[1094,2140,1126],{"class":1115},[1094,2142,1711],{"class":1456},[1094,2144,2145],{"class":1460},"client",[1094,2147,1457],{"class":1456},[1094,2149,1144],{"class":1115},[1094,2151,2152],{"class":1096,"line":1147},[1094,2153,1150],{"class":1115},[1094,2155,2156,2158],{"class":1096,"line":1153},[1094,2157,1156],{"class":1115},[1094,2159,1159],{"class":1111},[1275,2161,2163,2166,2170,2181,2198,2221,2232,2278,2282,2290,2336,2340,2343,2389],{"to":2162},"\u002Fdocs\u002Fgetting-started\u002Fprerendering#payload-extraction",[1024,2164,2165],{},"阅读更多关于 payload 提取以及每种模式的后果。\n:::",[1054,2167,2169],{"id":2168},"clientnodeplaceholder","clientNodePlaceholder",[1024,2171,2172,2173,2176,2177,2180],{},"在服务端渲染期间，使用注释节点（",[1031,2174,2175],{},"\u003C!--placeholder-->","）代替 ",[1031,2178,2179],{},"\u003Cdiv>"," 元素作为仅客户端组件的占位符。",[1024,2182,2183,2184,2187,2188,2191,2192,2194,2195,2197],{},"启用后，",[1031,2185,2186],{},".client.vue"," 组件和 ",[1031,2189,2190],{},"createClientOnly()"," 包装器会在服务端渲染一个 HTML 注释，而不是一个空的 ",[1031,2193,2179],{},"。这修复了一个 Vue 水合问题：当占位 ",[1031,2196,2179],{}," 与实际组件的根元素共享相同的标签名时，作用域样式可能不会被应用。",[2199,2200,2201],"warning",{},[1024,2202,2203,2204,2206,2207,2210,2211,2214,2215,2218,2219,2004],{},"启用这意味着传递给 ",[1031,2205,2186],{}," 组件的属性（",[1031,2208,2209],{},"class","、",[1031,2212,2213],{},"style"," 等）不会出现在 SSR 的 HTML 中。如果你需要带样式的占位符以防止布局偏移，请改用带 ",[1031,2216,2217],{},"#fallback"," 插槽的 ",[1031,2220,357],{},[1024,2222,2223,2224,2227,2228,2231],{},"当 ",[1031,2225,2226],{},"future.compatibilityVersion"," 设置为 ",[1031,2229,2230],{},"5"," 或更高时，此标志默认启用，但你也可以显式启用它：",[1085,2233,2235],{"className":1087,"code":2234,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    clientNodePlaceholder: true,\n  },\n})\n",[1031,2236,2237,2249,2257,2268,2272],{"__ignoreMap":354},[1094,2238,2239,2241,2243,2245,2247],{"class":1096,"line":1097},[1094,2240,1101],{"class":1100},[1094,2242,1104],{"class":1100},[1094,2244,1108],{"class":1107},[1094,2246,1112],{"class":1111},[1094,2248,1116],{"class":1115},[1094,2250,2251,2253,2255],{"class":1096,"line":1119},[1094,2252,1123],{"class":1122},[1094,2254,1126],{"class":1115},[1094,2256,1129],{"class":1115},[1094,2258,2259,2262,2264,2266],{"class":1096,"line":1132},[1094,2260,2261],{"class":1122},"    clientNodePlaceholder",[1094,2263,1126],{"class":1115},[1094,2265,1141],{"class":1140},[1094,2267,1144],{"class":1115},[1094,2269,2270],{"class":1096,"line":1147},[1094,2271,1150],{"class":1115},[1094,2273,2274,2276],{"class":1096,"line":1153},[1094,2275,1156],{"class":1115},[1094,2277,1159],{"class":1111},[1054,2279,2281],{"id":2280},"clientfallback","clientFallback",[1024,2283,2284,2285,2289],{},"启用实验性的 ",[1036,2286,2287],{"href":364},[1031,2288,365],{}," 组件，用于在 SSR 出错时在客户端渲染内容。",[1085,2291,2293],{"className":1087,"code":2292,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    clientFallback: true,\n  },\n})\n",[1031,2294,2295,2307,2315,2326,2330],{"__ignoreMap":354},[1094,2296,2297,2299,2301,2303,2305],{"class":1096,"line":1097},[1094,2298,1101],{"class":1100},[1094,2300,1104],{"class":1100},[1094,2302,1108],{"class":1107},[1094,2304,1112],{"class":1111},[1094,2306,1116],{"class":1115},[1094,2308,2309,2311,2313],{"class":1096,"line":1119},[1094,2310,1123],{"class":1122},[1094,2312,1126],{"class":1115},[1094,2314,1129],{"class":1115},[1094,2316,2317,2320,2322,2324],{"class":1096,"line":1132},[1094,2318,2319],{"class":1122},"    clientFallback",[1094,2321,1126],{"class":1115},[1094,2323,1141],{"class":1140},[1094,2325,1144],{"class":1115},[1094,2327,2328],{"class":1096,"line":1147},[1094,2329,1150],{"class":1115},[1094,2331,2332,2334],{"class":1096,"line":1153},[1094,2333,1156],{"class":1115},[1094,2335,1159],{"class":1111},[1054,2337,2339],{"id":2338},"crossoriginprefetch","crossOriginPrefetch",[1024,2341,2342],{},"使用 Speculation Rules API 启用跨域预取。",[1085,2344,2346],{"className":1087,"code":2345,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    crossOriginPrefetch: true,\n  },\n})\n",[1031,2347,2348,2360,2368,2379,2383],{"__ignoreMap":354},[1094,2349,2350,2352,2354,2356,2358],{"class":1096,"line":1097},[1094,2351,1101],{"class":1100},[1094,2353,1104],{"class":1100},[1094,2355,1108],{"class":1107},[1094,2357,1112],{"class":1111},[1094,2359,1116],{"class":1115},[1094,2361,2362,2364,2366],{"class":1096,"line":1119},[1094,2363,1123],{"class":1122},[1094,2365,1126],{"class":1115},[1094,2367,1129],{"class":1115},[1094,2369,2370,2373,2375,2377],{"class":1096,"line":1132},[1094,2371,2372],{"class":1122},"    crossOriginPrefetch",[1094,2374,1126],{"class":1115},[1094,2376,1141],{"class":1140},[1094,2378,1144],{"class":1115},[1094,2380,2381],{"class":1096,"line":1147},[1094,2382,1150],{"class":1115},[1094,2384,2385,2387],{"class":1096,"line":1153},[1094,2386,1156],{"class":1115},[1094,2388,1159],{"class":1111},[1275,2390,2393,2400,2404,2407,2453,2461,2544],{"to":2391,"icon":2392,"target":1279},"https:\u002F\u002Fwicg.github.io\u002Fnav-speculation\u002Fprefetch.html","i-simple-icons-w3c",[1024,2394,2395,2396,2399],{},"阅读更多关于 ",[1632,2397,2398],{},"Speculation Rules API","。\n:::",[1054,2401,2403],{"id":2402},"viewtransition","viewTransition",[1024,2405,2406],{},"启用 View Transition API 与客户端路由的集成。",[1085,2408,2410],{"className":1087,"code":2409,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    viewTransition: true,\n  },\n})\n",[1031,2411,2412,2424,2432,2443,2447],{"__ignoreMap":354},[1094,2413,2414,2416,2418,2420,2422],{"class":1096,"line":1097},[1094,2415,1101],{"class":1100},[1094,2417,1104],{"class":1100},[1094,2419,1108],{"class":1107},[1094,2421,1112],{"class":1111},[1094,2423,1116],{"class":1115},[1094,2425,2426,2428,2430],{"class":1096,"line":1119},[1094,2427,1123],{"class":1122},[1094,2429,1126],{"class":1115},[1094,2431,1129],{"class":1115},[1094,2433,2434,2437,2439,2441],{"class":1096,"line":1132},[1094,2435,2436],{"class":1122},"    viewTransition",[1094,2438,1126],{"class":1115},[1094,2440,1141],{"class":1140},[1094,2442,1144],{"class":1115},[1094,2444,2445],{"class":1096,"line":1147},[1094,2446,1150],{"class":1115},[1094,2448,2449,2451],{"class":1096,"line":1153},[1094,2450,1156],{"class":1115},[1094,2452,1159],{"class":1111},[1024,2454,2455,2456,2460],{},"你也可以传入一个对象来配置",[1036,2457,2459],{"href":2458},"\u002Fdocs\u002Fgetting-started\u002Ftransitions#view-transition-types","视图过渡类型","，它允许基于导航类型使用不同的 CSS 动画：",[1085,2462,2464],{"className":1087,"code":2463,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    viewTransition: {\n      enabled: true,\n      types: ['slide'],\n    },\n  },\n})\n",[1031,2465,2466,2478,2486,2494,2505,2527,2532,2537],{"__ignoreMap":354},[1094,2467,2468,2470,2472,2474,2476],{"class":1096,"line":1097},[1094,2469,1101],{"class":1100},[1094,2471,1104],{"class":1100},[1094,2473,1108],{"class":1107},[1094,2475,1112],{"class":1111},[1094,2477,1116],{"class":1115},[1094,2479,2480,2482,2484],{"class":1096,"line":1119},[1094,2481,1123],{"class":1122},[1094,2483,1126],{"class":1115},[1094,2485,1129],{"class":1115},[1094,2487,2488,2490,2492],{"class":1096,"line":1132},[1094,2489,2436],{"class":1122},[1094,2491,1126],{"class":1115},[1094,2493,1129],{"class":1115},[1094,2495,2496,2499,2501,2503],{"class":1096,"line":1147},[1094,2497,2498],{"class":1122},"      enabled",[1094,2500,1126],{"class":1115},[1094,2502,1141],{"class":1140},[1094,2504,1144],{"class":1115},[1094,2506,2507,2510,2512,2515,2517,2520,2522,2525],{"class":1096,"line":1153},[1094,2508,2509],{"class":1122},"      types",[1094,2511,1126],{"class":1115},[1094,2513,2514],{"class":1111}," [",[1094,2516,1457],{"class":1456},[1094,2518,2519],{"class":1460},"slide",[1094,2521,1457],{"class":1456},[1094,2523,2524],{"class":1111},"]",[1094,2526,1144],{"class":1115},[1094,2528,2529],{"class":1096,"line":1507},[1094,2530,2531],{"class":1115},"    },\n",[1094,2533,2535],{"class":1096,"line":2534},7,[1094,2536,1150],{"class":1115},[1094,2538,2540,2542],{"class":1096,"line":2539},8,[1094,2541,1156],{"class":1115},[1094,2543,1159],{"class":1111},[2545,2546,2548],"link-example",{"target":1279,"to":2547},"https:\u002F\u002Fstackblitz.com\u002Fedit\u002Fnuxt-view-transitions?file=app.vue",[1275,2549,2552,2557],{"to":2550,"icon":2551,"target":1279},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FView_Transition_API","i-simple-icons-mdnwebdocs",[1024,2553,2395,2554,2399],{},[1632,2555,2556],{},"View Transition API",[1275,2558,2561,2565,2569,2572,2618,2622,2632,2681],{"to":2559,"icon":2560,"target":1279},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fview-transitions-update-io24","i-simple-icons-google",[1024,2562,2395,2563,2399],{},[1632,2564,2556],{},[1054,2566,2568],{"id":2567},"writeearlyhints","writeEarlyHints",[1024,2570,2571],{},"使用 node server 时启用 early hints 的写入。",[1085,2573,2575],{"className":1087,"code":2574,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    writeEarlyHints: true,\n  },\n})\n",[1031,2576,2577,2589,2597,2608,2612],{"__ignoreMap":354},[1094,2578,2579,2581,2583,2585,2587],{"class":1096,"line":1097},[1094,2580,1101],{"class":1100},[1094,2582,1104],{"class":1100},[1094,2584,1108],{"class":1107},[1094,2586,1112],{"class":1111},[1094,2588,1116],{"class":1115},[1094,2590,2591,2593,2595],{"class":1096,"line":1119},[1094,2592,1123],{"class":1122},[1094,2594,1126],{"class":1115},[1094,2596,1129],{"class":1115},[1094,2598,2599,2602,2604,2606],{"class":1096,"line":1132},[1094,2600,2601],{"class":1122},"    writeEarlyHints",[1094,2603,1126],{"class":1115},[1094,2605,1141],{"class":1140},[1094,2607,1144],{"class":1115},[1094,2609,2610],{"class":1096,"line":1147},[1094,2611,1150],{"class":1115},[1094,2613,2614,2616],{"class":1096,"line":1153},[1094,2615,1156],{"class":1115},[1094,2617,1159],{"class":1111},[1054,2619,2621],{"id":2620},"componentislands","componentIslands",[1024,2623,2624,2625,1077,2629,2073],{},"启用实验性的组件 islands 支持，配合 ",[1036,2626,2627],{"href":412},[1031,2628,413],{},[1031,2630,2631],{},".island.vue",[1085,2633,2635],{"className":1087,"code":2634,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    componentIslands: true, \u002F\u002F false 或 'local+remote'\n  },\n})\n",[1031,2636,2637,2649,2657,2671,2675],{"__ignoreMap":354},[1094,2638,2639,2641,2643,2645,2647],{"class":1096,"line":1097},[1094,2640,1101],{"class":1100},[1094,2642,1104],{"class":1100},[1094,2644,1108],{"class":1107},[1094,2646,1112],{"class":1111},[1094,2648,1116],{"class":1115},[1094,2650,2651,2653,2655],{"class":1096,"line":1119},[1094,2652,1123],{"class":1122},[1094,2654,1126],{"class":1115},[1094,2656,1129],{"class":1115},[1094,2658,2659,2662,2664,2666,2668],{"class":1096,"line":1132},[1094,2660,2661],{"class":1122},"    componentIslands",[1094,2663,1126],{"class":1115},[1094,2665,1141],{"class":1140},[1094,2667,1466],{"class":1115},[1094,2669,2670],{"class":1408}," \u002F\u002F false 或 'local+remote'\n",[1094,2672,2673],{"class":1096,"line":1147},[1094,2674,1150],{"class":1115},[1094,2676,2677,2679],{"class":1096,"line":1153},[1094,2678,1156],{"class":1115},[1094,2680,1159],{"class":1111},[1275,2682,2684,2702],{"to":2683},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents#server-components",[1048,2685,2686],{},[1024,2687,2688,2689,2693,2694,2697,2698,2004],{},"在非 SFC 组件（如 ",[1036,2690,2691],{"href":396},[1031,2692,397],{},"）上跳过 ",[1031,2695,2696],{},"nuxt-client","。参见 ",[1036,2699,2701],{"href":2700},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents#client-components-within-server-components","服务端组件中的客户端组件",[1275,2703,2705,2708,2712,2728,2730,2776,2780,2783,2829,2846,2853],{"to":2704,"icon":1278,"target":1279},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F19772",[1024,2706,2707],{},"你可以在 GitHub 上关注服务端组件的路线图。\n:::",[1054,2709,2711],{"id":2710},"locallayeraliases","localLayerAliases",[1024,2713,2714,2715,2210,2718,2210,2721,1077,2724,2727],{},"解析位于 layers 内部的 ",[1031,2716,2717],{},"~",[1031,2719,2720],{},"~~",[1031,2722,2723],{},"@",[1031,2725,2726],{},"@@"," 别名，参照它们的 layer 源目录和根目录。",[1024,2729,1169],{},[1085,2731,2733],{"className":1087,"code":2732,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    localLayerAliases: false,\n  },\n})\n",[1031,2734,2735,2747,2755,2766,2770],{"__ignoreMap":354},[1094,2736,2737,2739,2741,2743,2745],{"class":1096,"line":1097},[1094,2738,1101],{"class":1100},[1094,2740,1104],{"class":1100},[1094,2742,1108],{"class":1107},[1094,2744,1112],{"class":1111},[1094,2746,1116],{"class":1115},[1094,2748,2749,2751,2753],{"class":1096,"line":1119},[1094,2750,1123],{"class":1122},[1094,2752,1126],{"class":1115},[1094,2754,1129],{"class":1115},[1094,2756,2757,2760,2762,2764],{"class":1096,"line":1132},[1094,2758,2759],{"class":1122},"    localLayerAliases",[1094,2761,1126],{"class":1115},[1094,2763,1204],{"class":1140},[1094,2765,1144],{"class":1115},[1094,2767,2768],{"class":1096,"line":1147},[1094,2769,1150],{"class":1115},[1094,2771,2772,2774],{"class":1096,"line":1153},[1094,2773,1156],{"class":1115},[1094,2775,1159],{"class":1111},[1054,2777,2779],{"id":2778},"typedpages","typedPages",[1024,2781,2782],{},"启用新的实验性类型化路由。",[1085,2784,2786],{"className":1087,"code":2785,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    typedPages: true,\n  },\n})\n",[1031,2787,2788,2800,2808,2819,2823],{"__ignoreMap":354},[1094,2789,2790,2792,2794,2796,2798],{"class":1096,"line":1097},[1094,2791,1101],{"class":1100},[1094,2793,1104],{"class":1100},[1094,2795,1108],{"class":1107},[1094,2797,1112],{"class":1111},[1094,2799,1116],{"class":1115},[1094,2801,2802,2804,2806],{"class":1096,"line":1119},[1094,2803,1123],{"class":1122},[1094,2805,1126],{"class":1115},[1094,2807,1129],{"class":1115},[1094,2809,2810,2813,2815,2817],{"class":1096,"line":1132},[1094,2811,2812],{"class":1122},"    typedPages",[1094,2814,1126],{"class":1115},[1094,2816,1141],{"class":1140},[1094,2818,1144],{"class":1115},[1094,2820,2821],{"class":1096,"line":1147},[1094,2822,1150],{"class":1115},[1094,2824,2825,2827],{"class":1096,"line":1153},[1094,2826,1156],{"class":1115},[1094,2828,1159],{"class":1111},[1024,2830,2831,2832,2210,2836,2210,2840,2845],{},"开箱即用，这将启用 ",[1036,2833,2834],{"href":608},[1031,2835,609],{},[1036,2837,2838],{"href":396},[1031,2839,397],{},[1036,2841,2842],{"href":528},[1031,2843,2844],{},"router.push()"," 等的类型化用法，以及更多。",[1024,2847,2848,2849,2852],{},"你甚至可以通过使用 ",[1031,2850,2851],{},"const route = useRoute('route-name')"," 在页面内获得类型化的参数。",[2854,2855,2858,2861,2864,2877,2888,2895,2912,2965,2969,2983,2986,3032],"video-accordion",{"title":2856,"video-id":2857},"观看 Daniel Roe 解释 Nuxt 中类型安全路由的视频","SXk-L19gTZk",[1054,2859,2860],{"id":2860},"watcher",[1024,2862,2863],{},"设置一个替代的 watcher，它将被用作 Nuxt 的监视服务。",[1024,2865,2866,2867,2870,2871,1077,2873,2876],{},"Nuxt 默认使用 ",[1031,2868,2869],{},"chokidar-granular","，它会忽略被排除在监视之外的最高级别目录（如 ",[1031,2872,142],{},[1031,2874,2875],{},".git","）。",[1024,2878,2879,2880,2883,2884,2887],{},"你可以改为将其设为 ",[1031,2881,2882],{},"parcel"," 来使用 ",[1031,2885,2886],{},"@parcel\u002Fwatcher","，这可能会提升大型项目或 Windows 平台上的性能。",[1024,2889,2890,2891,2894],{},"你也可以将其设为 ",[1031,2892,2893],{},"chokidar"," 来监视源目录中的所有文件。",[1024,2896,2897,2898,2901,2902,2905,2906,2908,2909,2911],{},"设为 ",[1031,2899,2900],{},"'builder'"," 可重用活动构建器自身的文件监视器（例如 Vite 的 ",[1031,2903,2904],{},"server.watcher","），而不是启动第二个。这减少了开发模式下活动的文件监视器数量，并在 ",[1031,2907,2226],{}," 为 ",[1031,2910,2230],{}," 时成为默认。如果活动构建器没有实现自身的监视器（目前是 webpack 和 rspack），Nuxt 会记录警告并回退到默认选择。",[1085,2913,2915],{"className":1087,"code":2914,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    watcher: 'chokidar-granular', \u002F\u002F 'chokidar'、'parcel' 或 'builder' 也可以\n  },\n})\n",[1031,2916,2917,2929,2937,2955,2959],{"__ignoreMap":354},[1094,2918,2919,2921,2923,2925,2927],{"class":1096,"line":1097},[1094,2920,1101],{"class":1100},[1094,2922,1104],{"class":1100},[1094,2924,1108],{"class":1107},[1094,2926,1112],{"class":1111},[1094,2928,1116],{"class":1115},[1094,2930,2931,2933,2935],{"class":1096,"line":1119},[1094,2932,1123],{"class":1122},[1094,2934,1126],{"class":1115},[1094,2936,1129],{"class":1115},[1094,2938,2939,2942,2944,2946,2948,2950,2952],{"class":1096,"line":1132},[1094,2940,2941],{"class":1122},"    watcher",[1094,2943,1126],{"class":1115},[1094,2945,1711],{"class":1456},[1094,2947,2869],{"class":1460},[1094,2949,1457],{"class":1456},[1094,2951,1466],{"class":1115},[1094,2953,2954],{"class":1408}," \u002F\u002F 'chokidar'、'parcel' 或 'builder' 也可以\n",[1094,2956,2957],{"class":1096,"line":1147},[1094,2958,1150],{"class":1115},[1094,2960,2961,2963],{"class":1096,"line":1153},[1094,2962,1156],{"class":1115},[1094,2964,1159],{"class":1111},[1054,2966,2968],{"id":2967},"sharedprerenderdata","sharedPrerenderData",[1024,2970,2971,2972,2976,2977,2979,2980,2982],{},"Nuxt 会自动在预渲染的页面之间共享 payload ",[2973,2974,2975],"em",{},"数据","。当预渲染那些使用 ",[1031,2978,441],{}," 或 ",[1031,2981,453],{}," 且在不同页面获取相同数据的站点时，这可以带来显著的性能提升。",[1024,2984,2985],{},"如果需要，你可以禁用此特性。",[1085,2987,2989],{"className":1087,"code":2988,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    sharedPrerenderData: false,\n  },\n})\n",[1031,2990,2991,3003,3011,3022,3026],{"__ignoreMap":354},[1094,2992,2993,2995,2997,2999,3001],{"class":1096,"line":1097},[1094,2994,1101],{"class":1100},[1094,2996,1104],{"class":1100},[1094,2998,1108],{"class":1107},[1094,3000,1112],{"class":1111},[1094,3002,1116],{"class":1115},[1094,3004,3005,3007,3009],{"class":1096,"line":1119},[1094,3006,1123],{"class":1122},[1094,3008,1126],{"class":1115},[1094,3010,1129],{"class":1115},[1094,3012,3013,3016,3018,3020],{"class":1096,"line":1132},[1094,3014,3015],{"class":1122},"    sharedPrerenderData",[1094,3017,1126],{"class":1115},[1094,3019,1204],{"class":1140},[1094,3021,1144],{"class":1115},[1094,3023,3024],{"class":1096,"line":1147},[1094,3025,1150],{"class":1115},[1094,3027,3028,3030],{"class":1096,"line":1153},[1094,3029,1156],{"class":1115},[1094,3031,1159],{"class":1111},[2854,3033,3036,3045,3265,3269,3280,3339,3343,3365,3373,3383,3386,3432,3436,3442,3444,3490],{"title":3034,"video-id":3035},"观看 Alexander Lichter 关于实验性 sharedPrerenderData 的视频","1jUupYHVvrU",[1024,3037,3038,3039,3041,3042,3044],{},"在启用此特性时，特别重要的是确保你数据的任何唯一 key 始终可解析为相同的数据。例如，如果你使用 ",[1031,3040,441],{}," 来获取与特定页面相关的数据，你应该提供一个能唯一匹配该数据的 key。（",[1031,3043,453],{}," 应该会为你自动做到这一点。）",[1085,3046,3048],{"className":1087,"code":3047,"language":1089,"meta":354,"style":354},"\u002F\u002F 这在动态页面（例如 `[slug].vue`）中是不安全的，因为路由 slug 会影响获取的数据，\n\u002F\u002F 但 Nuxt 无法知道这一点，因为它没有反映在 key 中。\nconst route = useRoute()\nconst { data } = await useAsyncData(async (_nuxtApp, { signal }) => {\n  return await $fetch(`\u002Fapi\u002Fmy-page\u002F${route.params.slug}`, { signal })\n})\n\u002F\u002F 相反，你应该使用一个能唯一标识所获取数据的 key。\nconst { data } = await useAsyncData(route.params.slug, async (_nuxtApp, { signal }) => {\n  return await $fetch(`\u002Fapi\u002Fmy-page\u002F${route.params.slug}`, { signal })\n})\n",[1031,3049,3050,3055,3060,3075,3116,3161,3167,3172,3219,3258],{"__ignoreMap":354},[1094,3051,3052],{"class":1096,"line":1097},[1094,3053,3054],{"class":1408},"\u002F\u002F 这在动态页面（例如 `[slug].vue`）中是不安全的，因为路由 slug 会影响获取的数据，\n",[1094,3056,3057],{"class":1096,"line":1119},[1094,3058,3059],{"class":1408},"\u002F\u002F 但 Nuxt 无法知道这一点，因为它没有反映在 key 中。\n",[1094,3061,3062,3064,3067,3069,3072],{"class":1096,"line":1132},[1094,3063,1431],{"class":1430},[1094,3065,3066],{"class":1437}," route",[1094,3068,1445],{"class":1444},[1094,3070,3071],{"class":1107}," useRoute",[1094,3073,3074],{"class":1111},"()\n",[1094,3076,3077,3079,3081,3083,3085,3087,3089,3091,3093,3096,3099,3102,3104,3106,3109,3112,3114],{"class":1096,"line":1147},[1094,3078,1431],{"class":1430},[1094,3080,1434],{"class":1115},[1094,3082,1438],{"class":1437},[1094,3084,1441],{"class":1115},[1094,3086,1445],{"class":1444},[1094,3088,1448],{"class":1100},[1094,3090,1451],{"class":1107},[1094,3092,1112],{"class":1111},[1094,3094,3095],{"class":1430},"async",[1094,3097,3098],{"class":1115}," (",[1094,3100,3101],{"class":1593},"_nuxtApp",[1094,3103,1466],{"class":1115},[1094,3105,1434],{"class":1115},[1094,3107,3108],{"class":1593}," signal",[1094,3110,3111],{"class":1115}," })",[1094,3113,1475],{"class":1430},[1094,3115,1129],{"class":1115},[1094,3117,3118,3120,3122,3124,3126,3129,3132,3135,3138,3140,3143,3145,3148,3151,3153,3155,3157,3159],{"class":1096,"line":1153},[1094,3119,1482],{"class":1100},[1094,3121,1448],{"class":1100},[1094,3123,1487],{"class":1107},[1094,3125,1112],{"class":1122},[1094,3127,3128],{"class":1456},"`",[1094,3130,3131],{"class":1460},"\u002Fapi\u002Fmy-page\u002F",[1094,3133,3134],{"class":1456},"${",[1094,3136,3137],{"class":1111},"route",[1094,3139,1585],{"class":1456},[1094,3141,3142],{"class":1111},"params",[1094,3144,1585],{"class":1456},[1094,3146,3147],{"class":1111},"slug",[1094,3149,3150],{"class":1456},"}`",[1094,3152,1466],{"class":1115},[1094,3154,1434],{"class":1115},[1094,3156,3108],{"class":1111},[1094,3158,1441],{"class":1115},[1094,3160,1159],{"class":1122},[1094,3162,3163,3165],{"class":1096,"line":1507},[1094,3164,1156],{"class":1115},[1094,3166,1159],{"class":1111},[1094,3168,3169],{"class":1096,"line":2534},[1094,3170,3171],{"class":1408},"\u002F\u002F 相反，你应该使用一个能唯一标识所获取数据的 key。\n",[1094,3173,3174,3176,3178,3180,3182,3184,3186,3188,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217],{"class":1096,"line":2539},[1094,3175,1431],{"class":1430},[1094,3177,1434],{"class":1115},[1094,3179,1438],{"class":1437},[1094,3181,1441],{"class":1115},[1094,3183,1445],{"class":1444},[1094,3185,1448],{"class":1100},[1094,3187,1451],{"class":1107},[1094,3189,3190],{"class":1111},"(route",[1094,3192,1585],{"class":1115},[1094,3194,3142],{"class":1111},[1094,3196,1585],{"class":1115},[1094,3198,3147],{"class":1111},[1094,3200,1466],{"class":1115},[1094,3202,1469],{"class":1430},[1094,3204,3098],{"class":1115},[1094,3206,3101],{"class":1593},[1094,3208,1466],{"class":1115},[1094,3210,1434],{"class":1115},[1094,3212,3108],{"class":1593},[1094,3214,3111],{"class":1115},[1094,3216,1475],{"class":1430},[1094,3218,1129],{"class":1115},[1094,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256],{"class":1096,"line":3221},9,[1094,3223,1482],{"class":1100},[1094,3225,1448],{"class":1100},[1094,3227,1487],{"class":1107},[1094,3229,1112],{"class":1122},[1094,3231,3128],{"class":1456},[1094,3233,3131],{"class":1460},[1094,3235,3134],{"class":1456},[1094,3237,3137],{"class":1111},[1094,3239,1585],{"class":1456},[1094,3241,3142],{"class":1111},[1094,3243,1585],{"class":1456},[1094,3245,3147],{"class":1111},[1094,3247,3150],{"class":1456},[1094,3249,1466],{"class":1115},[1094,3251,1434],{"class":1115},[1094,3253,3108],{"class":1111},[1094,3255,1441],{"class":1115},[1094,3257,1159],{"class":1122},[1094,3259,3261,3263],{"class":1096,"line":3260},10,[1094,3262,1156],{"class":1115},[1094,3264,1159],{"class":1111},[1054,3266,3268],{"id":3267},"clientnodecompat","clientNodeCompat",[1024,3270,3271,3272,3279],{},"通过此特性，Nuxt 会使用 ",[1036,3273,3276],{"href":3274,"rel":3275},"https:\u002F\u002Fgithub.com\u002Funjs\u002Funenv",[1044],[1031,3277,3278],{},"unenv"," 在客户端构建中自动 polyfill Node.js 导入。",[1048,3281,3282,3289],{},[1024,3283,3284,3285,3288],{},"要让像 ",[1031,3286,3287],{},"Buffer"," 这样的全局变量在浏览器中工作，你需要手动注入它们。",[1085,3290,3292],{"className":1087,"code":3291,"language":1089,"meta":354,"style":354},"import { Buffer } from 'node:buffer'\n\nglobalThis.Buffer ||= Buffer\n",[1031,3293,3294,3317,3323],{"__ignoreMap":354},[1094,3295,3296,3299,3301,3304,3306,3309,3311,3314],{"class":1096,"line":1097},[1094,3297,3298],{"class":1100},"import",[1094,3300,1434],{"class":1115},[1094,3302,3303],{"class":1111}," Buffer",[1094,3305,1441],{"class":1115},[1094,3307,3308],{"class":1100}," from",[1094,3310,1711],{"class":1456},[1094,3312,3313],{"class":1460},"node:buffer",[1094,3315,3316],{"class":1456},"'\n",[1094,3318,3319],{"class":1096,"line":1119},[1094,3320,3322],{"emptyLinePlaceholder":3321},true,"\n",[1094,3324,3325,3328,3330,3333,3336],{"class":1096,"line":1132},[1094,3326,3327],{"class":1111},"globalThis",[1094,3329,1585],{"class":1115},[1094,3331,3332],{"class":1111},"Buffer ",[1094,3334,3335],{"class":1444},"||=",[1094,3337,3338],{"class":1111}," Buffer\n",[1054,3340,3342],{"id":3341},"scanpagemeta","scanPageMeta",[1024,3344,3345,3346,3348,3349,2210,3352,2210,3355,2210,3357,2210,3360,1077,3363,2876],{},"Nuxt 在构建时将 ",[1031,3347,601],{}," 中定义的一些路由元数据暴露给模块（具体为 ",[1031,3350,3351],{},"alias",[1031,3353,3354],{},"name",[1031,3356,1926],{},[1031,3358,3359],{},"redirect",[1031,3361,3362],{},"props",[1031,3364,102],{},[1024,3366,3367,3368,2004],{},"这只适用于静态或字符串\u002F数组，而不是变量或条件赋值。更多信息和上下文请参见 ",[1036,3369,3372],{"href":3370,"rel":3371},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F24770",[1044],"原始 issue",[1024,3374,3375,3376,3379,3380,2004],{},"默认情况下，页面元数据只在所有路由已在 ",[1031,3377,3378],{},"pages:extend"," 中注册后才被扫描。然后会调用另一个钩子 ",[1031,3381,3382],{},"pages:resolved",[1024,3384,3385],{},"如果你项目中出现问题，可以禁用此特性。",[1085,3387,3389],{"className":1087,"code":3388,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    scanPageMeta: false,\n  },\n})\n",[1031,3390,3391,3403,3411,3422,3426],{"__ignoreMap":354},[1094,3392,3393,3395,3397,3399,3401],{"class":1096,"line":1097},[1094,3394,1101],{"class":1100},[1094,3396,1104],{"class":1100},[1094,3398,1108],{"class":1107},[1094,3400,1112],{"class":1111},[1094,3402,1116],{"class":1115},[1094,3404,3405,3407,3409],{"class":1096,"line":1119},[1094,3406,1123],{"class":1122},[1094,3408,1126],{"class":1115},[1094,3410,1129],{"class":1115},[1094,3412,3413,3416,3418,3420],{"class":1096,"line":1132},[1094,3414,3415],{"class":1122},"    scanPageMeta",[1094,3417,1126],{"class":1115},[1094,3419,1204],{"class":1140},[1094,3421,1144],{"class":1115},[1094,3423,3424],{"class":1096,"line":1147},[1094,3425,1150],{"class":1115},[1094,3427,3428,3430],{"class":1096,"line":1153},[1094,3429,1156],{"class":1115},[1094,3431,1159],{"class":1111},[1054,3433,3435],{"id":3434},"cookiestore","cookieStore",[1024,3437,3438,3439,3441],{},"启用 CookieStore 支持以监听 cookie 更新（如果浏览器支持），并刷新 ",[1031,3440,445],{}," 的 ref 值。",[1024,3443,1169],{},[1085,3445,3447],{"className":1087,"code":3446,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    cookieStore: false,\n  },\n})\n",[1031,3448,3449,3461,3469,3480,3484],{"__ignoreMap":354},[1094,3450,3451,3453,3455,3457,3459],{"class":1096,"line":1097},[1094,3452,1101],{"class":1100},[1094,3454,1104],{"class":1100},[1094,3456,1108],{"class":1107},[1094,3458,1112],{"class":1111},[1094,3460,1116],{"class":1115},[1094,3462,3463,3465,3467],{"class":1096,"line":1119},[1094,3464,1123],{"class":1122},[1094,3466,1126],{"class":1115},[1094,3468,1129],{"class":1115},[1094,3470,3471,3474,3476,3478],{"class":1096,"line":1132},[1094,3472,3473],{"class":1122},"    cookieStore",[1094,3475,1126],{"class":1115},[1094,3477,1204],{"class":1140},[1094,3479,1144],{"class":1115},[1094,3481,3482],{"class":1096,"line":1147},[1094,3483,1150],{"class":1115},[1094,3485,3486,3488],{"class":1096,"line":1153},[1094,3487,1156],{"class":1115},[1094,3489,1159],{"class":1111},[1275,3491,3493,3498,3502,3505,3515,3518,3564,3567,3621,3627,3632,3636,3645,3650,3701,3705,3711,3717,3783,3878,3889,3893,3896,3899,3901,3947,3951,3954,3957,4003,4006,4035,4046,4052,4059,4063,4073,4090,4115,4122,4168,4212,4216,4225,4232,4273,4280,4313,4316,4320,4323,4326,4372],{"to":3492,"icon":2551,"target":1279},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FCookieStore",[1024,3494,2395,3495,2399],{},[1632,3496,3497],{},"CookieStore",[1054,3499,3501],{"id":3500},"buildcache","buildCache",[1024,3503,3504],{},"基于配置和源文件的哈希值缓存 Nuxt 构建产物。",[1024,3506,3507,3508,1077,3511,3514],{},"这仅适用于应用 Vue\u002FNitro 部分的 ",[1031,3509,3510],{},"srcDir",[1031,3512,3513],{},"serverDir"," 内的源文件。",[1024,3516,3517],{},"这个标志默认是禁用的，但你可以启用它：",[1085,3519,3521],{"className":1087,"code":3520,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    buildCache: true,\n  },\n})\n",[1031,3522,3523,3535,3543,3554,3558],{"__ignoreMap":354},[1094,3524,3525,3527,3529,3531,3533],{"class":1096,"line":1097},[1094,3526,1101],{"class":1100},[1094,3528,1104],{"class":1100},[1094,3530,1108],{"class":1107},[1094,3532,1112],{"class":1111},[1094,3534,1116],{"class":1115},[1094,3536,3537,3539,3541],{"class":1096,"line":1119},[1094,3538,1123],{"class":1122},[1094,3540,1126],{"class":1115},[1094,3542,1129],{"class":1115},[1094,3544,3545,3548,3550,3552],{"class":1096,"line":1132},[1094,3546,3547],{"class":1122},"    buildCache",[1094,3549,1126],{"class":1115},[1094,3551,1141],{"class":1140},[1094,3553,1144],{"class":1115},[1094,3555,3556],{"class":1096,"line":1147},[1094,3557,1150],{"class":1115},[1094,3559,3560,3562],{"class":1096,"line":1153},[1094,3561,1156],{"class":1115},[1094,3563,1159],{"class":1111},[1024,3565,3566],{},"启用后，对以下文件的更改会触发完整重建：",[1085,3568,3573],{"className":3569,"code":3570,"filename":3571,"language":3572,"meta":354,"style":354},"language-bash shiki shiki-themes material-theme-lighter github-dark material-theme-palenight",".nuxtrc\n.npmrc\npackage.json\npackage-lock.json\nyarn.lock\npnpm-lock.yaml\ntsconfig.json\nbun.lock\nbun.lockb\n","Directory structure","bash",[1031,3574,3575,3581,3586,3591,3596,3601,3606,3611,3616],{"__ignoreMap":354},[1094,3576,3577],{"class":1096,"line":1097},[1094,3578,3580],{"class":3579},"sJK67",".nuxtrc\n",[1094,3582,3583],{"class":1096,"line":1119},[1094,3584,3585],{"class":3579},".npmrc\n",[1094,3587,3588],{"class":1096,"line":1132},[1094,3589,3590],{"class":3579},"package.json\n",[1094,3592,3593],{"class":1096,"line":1147},[1094,3594,3595],{"class":3579},"package-lock.json\n",[1094,3597,3598],{"class":1096,"line":1153},[1094,3599,3600],{"class":3579},"yarn.lock\n",[1094,3602,3603],{"class":1096,"line":1507},[1094,3604,3605],{"class":3579},"pnpm-lock.yaml\n",[1094,3607,3608],{"class":1096,"line":2534},[1094,3609,3610],{"class":3579},"tsconfig.json\n",[1094,3612,3613],{"class":1096,"line":2539},[1094,3614,3615],{"class":3579},"bun.lock\n",[1094,3617,3618],{"class":1096,"line":3221},[1094,3619,3620],{"class":3579},"bun.lockb\n",[1024,3622,3623,3624,3626],{},"此外，",[1031,3625,3510],{}," 内任何文件的更改都会触发 Vue 客户端\u002F服务端 bundle 的重建。Nitro 总是会被重建（尽管允许 Nitro 声明其可缓存产物及其哈希值的工作正在进行中）。",[1048,3628,3629],{},[1024,3630,3631],{},"最多保留 10 个缓存 tar 包。",[1054,3633,3635],{"id":3634},"checkoutdatedbuildinterval","checkOutdatedBuildInterval",[1024,3637,3638,3639,2908,3642,3644],{},"设置检查新构建的时间间隔（以毫秒为单位）。当 ",[1031,3640,3641],{},"experimental.appManifest",[1031,3643,1671],{}," 时禁用。",[1024,3646,2897,3647,3649],{},[1031,3648,1671],{}," 可禁用。",[1085,3651,3653],{"className":1087,"code":3652,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    checkOutdatedBuildInterval: 3600000, \u002F\u002F 1 小时，或 false 表示禁用\n  },\n})\n",[1031,3654,3655,3667,3675,3691,3695],{"__ignoreMap":354},[1094,3656,3657,3659,3661,3663,3665],{"class":1096,"line":1097},[1094,3658,1101],{"class":1100},[1094,3660,1104],{"class":1100},[1094,3662,1108],{"class":1107},[1094,3664,1112],{"class":1111},[1094,3666,1116],{"class":1115},[1094,3668,3669,3671,3673],{"class":1096,"line":1119},[1094,3670,1123],{"class":1122},[1094,3672,1126],{"class":1115},[1094,3674,1129],{"class":1115},[1094,3676,3677,3680,3682,3686,3688],{"class":1096,"line":1132},[1094,3678,3679],{"class":1122},"    checkOutdatedBuildInterval",[1094,3681,1126],{"class":1115},[1094,3683,3685],{"class":3684},"sOUxV"," 3600000",[1094,3687,1466],{"class":1115},[1094,3689,3690],{"class":1408}," \u002F\u002F 1 小时，或 false 表示禁用\n",[1094,3692,3693],{"class":1096,"line":1147},[1094,3694,1150],{"class":1115},[1094,3696,3697,3699],{"class":1096,"line":1153},[1094,3698,1156],{"class":1115},[1094,3700,1159],{"class":1111},[1054,3702,3704],{"id":3703},"extrapagemetaextractionkeys","extraPageMetaExtractionKeys",[1024,3706,3707,3710],{},[1031,3708,3709],{},"definePageMeta()"," 宏是收集页面构建时元数据的有用方式。Nuxt 本身提供了一组受支持的 key 列表，用于驱动一些内部特性，如重定向、页面别名和自定义路径。",[1024,3712,3713,3714,3716],{},"此选项允许在使用 ",[1031,3715,3342],{}," 时传入额外的 key 来从页面元数据中提取。",[1085,3718,3720],{"className":1399,"code":3719,"language":1401,"meta":354,"style":354},"\u003Cscript lang=\"ts\" setup>\ndefinePageMeta({\n  foo: 'bar',\n})\n\u003C\u002Fscript>\n",[1031,3721,3722,3745,3753,3769,3775],{"__ignoreMap":354},[1094,3723,3724,3726,3728,3731,3734,3737,3739,3741,3743],{"class":1096,"line":1097},[1094,3725,1414],{"class":1115},[1094,3727,1418],{"class":1417},[1094,3729,3730],{"class":1421}," lang",[1094,3732,3733],{"class":1115},"=",[1094,3735,3736],{"class":1456},"\"",[1094,3738,1089],{"class":1460},[1094,3740,3736],{"class":1456},[1094,3742,1422],{"class":1421},[1094,3744,1425],{"class":1115},[1094,3746,3747,3749,3751],{"class":1096,"line":1119},[1094,3748,601],{"class":1107},[1094,3750,1112],{"class":1111},[1094,3752,1116],{"class":1115},[1094,3754,3755,3758,3760,3762,3765,3767],{"class":1096,"line":1132},[1094,3756,3757],{"class":1122},"  foo",[1094,3759,1126],{"class":1115},[1094,3761,1711],{"class":1456},[1094,3763,3764],{"class":1460},"bar",[1094,3766,1457],{"class":1456},[1094,3768,1144],{"class":1115},[1094,3770,3771,3773],{"class":1096,"line":1147},[1094,3772,1156],{"class":1115},[1094,3774,1159],{"class":1111},[1094,3776,3777,3779,3781],{"class":1096,"line":1153},[1094,3778,1510],{"class":1115},[1094,3780,1418],{"class":1417},[1094,3782,1425],{"class":1115},[1085,3784,3786],{"className":1087,"code":3785,"language":1089,"meta":354,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    extraPageMetaExtractionKeys: ['foo'],\n  },\n  hooks: {\n    'pages:resolved' (ctx) {\n      \u002F\u002F ✅ foo 可用\n    },\n  },\n})\n",[1031,3787,3788,3800,3808,3828,3832,3841,3859,3864,3868,3872],{"__ignoreMap":354},[1094,3789,3790,3792,3794,3796,3798],{"class":1096,"line":1097},[1094,3791,1101],{"class":1100},[1094,3793,1104],{"class":1100},[1094,3795,1108],{"class":1107},[1094,3797,1112],{"class":1111},[1094,3799,1116],{"class":1115},[1094,3801,3802,3804,3806],{"class":1096,"line":1119},[1094,3803,1123],{"class":1122},[1094,3805,1126],{"class":1115},[1094,3807,1129],{"class":1115},[1094,3809,3810,3813,3815,3817,3819,3822,3824,3826],{"class":1096,"line":1132},[1094,3811,3812],{"class":1122},"    extraPageMetaExtractionKeys",[1094,3814,1126],{"class":1115},[1094,3816,2514],{"class":1111},[1094,3818,1457],{"class":1456},[1094,3820,3821],{"class":1460},"foo",[1094,3823,1457],{"class":1456},[1094,3825,2524],{"class":1111},[1094,3827,1144],{"class":1115},[1094,3829,3830],{"class":1096,"line":1147},[1094,3831,1150],{"class":1115},[1094,3833,3834,3837,3839],{"class":1096,"line":1153},[1094,3835,3836],{"class":1122},"  hooks",[1094,3838,1126],{"class":1115},[1094,3840,1129],{"class":1115},[1094,3842,3843,3846,3848,3850,3852,3855,3857],{"class":1096,"line":1507},[1094,3844,3845],{"class":1456},"    '",[1094,3847,3382],{"class":1460},[1094,3849,1457],{"class":1456},[1094,3851,3098],{"class":1115},[1094,3853,3854],{"class":1593},"ctx",[1094,3856,1582],{"class":1115},[1094,3858,1129],{"class":1115},[1094,3860,3861],{"class":1096,"line":2534},[1094,3862,3863],{"class":1408},"      \u002F\u002F ✅ foo 可用\n",[1094,3865,3866],{"class":1096,"line":2539},[1094,3867,2531],{"class":1115},[1094,3869,3870],{"class":1096,"line":3221},[1094,3871,1150],{"class":1115},[1094,3873,3874,3876],{"class":1096,"line":3260},[1094,3875,1156],{"class":1115},[1094,3877,1159],{"class":1111},[1024,3879,3880,3881,2004],{},"这允许模块在构建上下文中访问页面元数据中的额外元数据。如果你在模块内使用它，还建议",[1036,3882,3884,3885,3888],{"href":3883},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages#typing-custom-metadata","用你的 key 增强 ",[1031,3886,3887],{},"NuxtPage"," 类型",[1054,3890,3892],{"id":3891},"navigationrepaint","navigationRepaint",[1024,3894,3895],{},"在导航前等待一个动画帧，这给浏览器重绘的机会，以确认用户交互。",[1024,3897,3898],{},"它可以减少在预渲染路由上导航时的 INP。",[1024,3900,1169],{},[1085,3902,3904],{"className":1087,"code":3903,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    navigationRepaint: false,\n  },\n})\n",[1031,3905,3906,3918,3926,3937,3941],{"__ignoreMap":354},[1094,3907,3908,3910,3912,3914,3916],{"class":1096,"line":1097},[1094,3909,1101],{"class":1100},[1094,3911,1104],{"class":1100},[1094,3913,1108],{"class":1107},[1094,3915,1112],{"class":1111},[1094,3917,1116],{"class":1115},[1094,3919,3920,3922,3924],{"class":1096,"line":1119},[1094,3921,1123],{"class":1122},[1094,3923,1126],{"class":1115},[1094,3925,1129],{"class":1115},[1094,3927,3928,3931,3933,3935],{"class":1096,"line":1132},[1094,3929,3930],{"class":1122},"    navigationRepaint",[1094,3932,1126],{"class":1115},[1094,3934,1204],{"class":1140},[1094,3936,1144],{"class":1115},[1094,3938,3939],{"class":1096,"line":1147},[1094,3940,1150],{"class":1115},[1094,3942,3943,3945],{"class":1096,"line":1153},[1094,3944,1156],{"class":1115},[1094,3946,1159],{"class":1111},[1054,3948,3950],{"id":3949},"normalizecomponentnames","normalizeComponentNames",[1024,3952,3953],{},"Nuxt 会更新自动生成的 Vue 组件名称，使其匹配你用于自动导入该组件的完整组件名。",[1024,3955,3956],{},"如果遇到问题，你可以禁用此特性。",[1085,3958,3960],{"className":1087,"code":3959,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    normalizeComponentNames: false,\n  },\n})\n",[1031,3961,3962,3974,3982,3993,3997],{"__ignoreMap":354},[1094,3963,3964,3966,3968,3970,3972],{"class":1096,"line":1097},[1094,3965,1101],{"class":1100},[1094,3967,1104],{"class":1100},[1094,3969,1108],{"class":1107},[1094,3971,1112],{"class":1111},[1094,3973,1116],{"class":1115},[1094,3975,3976,3978,3980],{"class":1096,"line":1119},[1094,3977,1123],{"class":1122},[1094,3979,1126],{"class":1115},[1094,3981,1129],{"class":1115},[1094,3983,3984,3987,3989,3991],{"class":1096,"line":1132},[1094,3985,3986],{"class":1122},"    normalizeComponentNames",[1094,3988,1126],{"class":1115},[1094,3990,1204],{"class":1140},[1094,3992,1144],{"class":1115},[1094,3994,3995],{"class":1096,"line":1147},[1094,3996,1150],{"class":1115},[1094,3998,3999,4001],{"class":1096,"line":1153},[1094,4000,1156],{"class":1115},[1094,4002,1159],{"class":1111},[1024,4004,4005],{},"默认情况下，如果你没有手动设置，Vue 会分配一个匹配组件文件名的组件名。",[1085,4007,4009],{"className":3569,"code":4008,"filename":3571,"language":3572,"meta":354,"style":354},"├─ components\u002F\n├─── SomeFolder\u002F\n├───── MyComponent.vue\n",[1031,4010,4011,4019,4027],{"__ignoreMap":354},[1094,4012,4013,4016],{"class":1096,"line":1097},[1094,4014,4015],{"class":3579},"├─",[1094,4017,4018],{"class":1460}," components\u002F\n",[1094,4020,4021,4024],{"class":1096,"line":1119},[1094,4022,4023],{"class":3579},"├───",[1094,4025,4026],{"class":1460}," SomeFolder\u002F\n",[1094,4028,4029,4032],{"class":1096,"line":1132},[1094,4030,4031],{"class":3579},"├─────",[1094,4033,4034],{"class":1460}," MyComponent.vue\n",[1024,4036,4037,4038,4041,4042,4045],{},"在这种情况下，就 Vue 而言，组件名将是 ",[1031,4039,4040],{},"MyComponent","。如果你想对它使用 ",[1031,4043,4044],{},"\u003CKeepAlive>","，或在 Vue DevTools 中识别它，你需要使用这个组件。",[1024,4047,4048,4049,2004],{},"但为了自动导入它，你需要使用 ",[1031,4050,4051],{},"SomeFolderMyComponent",[1024,4053,4054,4055,4058],{},"通过设置 ",[1031,4056,4057],{},"experimental.normalizeComponentNames","，这两个值会匹配，Vue 会生成一个匹配 Nuxt 组件命名模式的组件名。",[1054,4060,4062],{"id":4061},"normalizepagenames","normalizePageNames",[1024,4064,4065,4066,4069,4070,4072],{},"确保页面组件名匹配它们的路由名。这会在页面组件上设置 ",[1031,4067,4068],{},"__name"," 属性，以便 Vue 的 ",[1031,4071,4044],{}," 能按名称正确识别它们。",[1024,4074,4075,4076,1077,4079,4082,4083,4086,4087,4089],{},"默认情况下，Vue 基于文件名分配组件名。例如，",[1031,4077,4078],{},"pages\u002Ffoo\u002Findex.vue",[1031,4080,4081],{},"pages\u002Fbar\u002Findex.vue"," 都会有组件名 ",[1031,4084,4085],{},"index","。这使得基于名称的 ",[1031,4088,4044],{}," 过滤不可靠，因为多个页面共享同一名称。",[1024,4091,4092,4093,4095,4096,1077,4098,4100,4101,4103,4104,4107,4108,4111,4112,2004],{},"启用 ",[1031,4094,4062],{}," 后，页面组件会以它们的路由命名（例如 ",[1031,4097,3821],{},[1031,4099,3764],{},"），这样你就可以在 ",[1031,4102,4044],{}," 中使用 ",[1031,4105,4106],{},"include","\u002F",[1031,4109,4110],{},"exclude","，而无需给每个页面手动添加 ",[1031,4113,4114],{},"defineOptions({ name: '...' })",[1024,4116,2223,4117,2227,4119,4121],{},[1031,4118,2226],{},[1031,4120,2230],{}," 或更高时，此标志默认启用，但你可以禁用此特性：",[1085,4123,4125],{"className":1087,"code":4124,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    normalizePageNames: false,\n  },\n})\n",[1031,4126,4127,4139,4147,4158,4162],{"__ignoreMap":354},[1094,4128,4129,4131,4133,4135,4137],{"class":1096,"line":1097},[1094,4130,1101],{"class":1100},[1094,4132,1104],{"class":1100},[1094,4134,1108],{"class":1107},[1094,4136,1112],{"class":1111},[1094,4138,1116],{"class":1115},[1094,4140,4141,4143,4145],{"class":1096,"line":1119},[1094,4142,1123],{"class":1122},[1094,4144,1126],{"class":1115},[1094,4146,1129],{"class":1115},[1094,4148,4149,4152,4154,4156],{"class":1096,"line":1132},[1094,4150,4151],{"class":1122},"    normalizePageNames",[1094,4153,1126],{"class":1115},[1094,4155,1204],{"class":1140},[1094,4157,1144],{"class":1115},[1094,4159,4160],{"class":1096,"line":1147},[1094,4161,1150],{"class":1115},[1094,4163,4164,4166],{"class":1096,"line":1153},[1094,4165,1156],{"class":1115},[1094,4167,1159],{"class":1111},[1085,4169,4171],{"className":1399,"code":4170,"filename":118,"language":1401,"meta":354,"style":354},"\u003Ctemplate>\n  \u003CNuxtPage :keepalive=\"{ include: ['foo'] }\" \u002F>\n\u003C\u002Ftemplate>\n",[1031,4172,4173,4182,4204],{"__ignoreMap":354},[1094,4174,4175,4177,4180],{"class":1096,"line":1097},[1094,4176,1414],{"class":1115},[1094,4178,4179],{"class":1417},"template",[1094,4181,1425],{"class":1115},[1094,4183,4184,4187,4189,4192,4194,4196,4199,4201],{"class":1096,"line":1119},[1094,4185,4186],{"class":1115},"  \u003C",[1094,4188,3887],{"class":1417},[1094,4190,4191],{"class":1421}," :keepalive",[1094,4193,3733],{"class":1115},[1094,4195,3736],{"class":1456},[1094,4197,4198],{"class":1460},"{ include: ['foo'] }",[1094,4200,3736],{"class":1456},[1094,4202,4203],{"class":1115}," \u002F>\n",[1094,4205,4206,4208,4210],{"class":1096,"line":1132},[1094,4207,1510],{"class":1115},[1094,4209,4179],{"class":1417},[1094,4211,1425],{"class":1115},[1054,4213,4215],{"id":4214},"spaloadingtemplatelocation","spaLoadingTemplateLocation",[1024,4217,4218,4219,4221,4222,2876],{},"当渲染一个仅客户端页面（使用 ",[1031,4220,2105],{},"）时，我们会可选地渲染一个加载屏幕（来自 ",[1031,4223,4224],{},"~\u002Fspa-loading-template.html",[1024,4226,4227,4228,4231],{},"它可以设为 ",[1031,4229,4230],{},"within","，渲染方式如下：",[1085,4233,4237],{"className":4234,"code":4235,"language":4236,"meta":354,"style":354},"language-html shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Cdiv id=\"__nuxt\">\n  \u003C!-- spa 加载模板 -->\n\u003C\u002Fdiv>\n","html",[1031,4238,4239,4260,4265],{"__ignoreMap":354},[1094,4240,4241,4243,4246,4249,4251,4253,4256,4258],{"class":1096,"line":1097},[1094,4242,1414],{"class":1115},[1094,4244,4245],{"class":1417},"div",[1094,4247,4248],{"class":1421}," id",[1094,4250,3733],{"class":1115},[1094,4252,3736],{"class":1456},[1094,4254,4255],{"class":1460},"__nuxt",[1094,4257,3736],{"class":1456},[1094,4259,1425],{"class":1115},[1094,4261,4262],{"class":1096,"line":1119},[1094,4263,4264],{"class":1408},"  \u003C!-- spa 加载模板 -->\n",[1094,4266,4267,4269,4271],{"class":1096,"line":1132},[1094,4268,1510],{"class":1115},[1094,4270,4245],{"class":1417},[1094,4272,1425],{"class":1115},[1024,4274,4275,4276,4279],{},"或者，你可以将它设为 ",[1031,4277,4278],{},"body"," 来将模板与 Nuxt 应用根一起渲染：",[1085,4281,4283],{"className":4234,"code":4282,"language":4236,"meta":354,"style":354},"\u003Cdiv id=\"__nuxt\">\u003C\u002Fdiv>\n\u003C!-- spa 加载模板 -->\n",[1031,4284,4285,4308],{"__ignoreMap":354},[1094,4286,4287,4289,4291,4293,4295,4297,4299,4301,4304,4306],{"class":1096,"line":1097},[1094,4288,1414],{"class":1115},[1094,4290,4245],{"class":1417},[1094,4292,4248],{"class":1421},[1094,4294,3733],{"class":1115},[1094,4296,3736],{"class":1456},[1094,4298,4255],{"class":1460},[1094,4300,3736],{"class":1456},[1094,4302,4303],{"class":1115},">\u003C\u002F",[1094,4305,4245],{"class":1417},[1094,4307,1425],{"class":1115},[1094,4309,4310],{"class":1096,"line":1119},[1094,4311,4312],{"class":1408},"\u003C!-- spa 加载模板 -->\n",[1024,4314,4315],{},"这避免了在给仅客户端页面做水合时的白屏闪烁。",[1054,4317,4319],{"id":4318},"browserdevtoolstiming","browserDevtoolsTiming",[1024,4321,4322],{},"在浏览器开发工具中为 Nuxt 钩子启用性能标记。这会添加你可以在基于 Chromium 的浏览器的 Performance 标签页中追踪的性能标记，对调试和优化性能很有用。",[1024,4324,4325],{},"这在开发模式下默认启用。如果你需要禁用此特性，可以这样做：",[1085,4327,4329],{"className":1087,"code":4328,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    browserDevtoolsTiming: false,\n  },\n})\n",[1031,4330,4331,4343,4351,4362,4366],{"__ignoreMap":354},[1094,4332,4333,4335,4337,4339,4341],{"class":1096,"line":1097},[1094,4334,1101],{"class":1100},[1094,4336,1104],{"class":1100},[1094,4338,1108],{"class":1107},[1094,4340,1112],{"class":1111},[1094,4342,1116],{"class":1115},[1094,4344,4345,4347,4349],{"class":1096,"line":1119},[1094,4346,1123],{"class":1122},[1094,4348,1126],{"class":1115},[1094,4350,1129],{"class":1115},[1094,4352,4353,4356,4358,4360],{"class":1096,"line":1132},[1094,4354,4355],{"class":1122},"    browserDevtoolsTiming",[1094,4357,1126],{"class":1115},[1094,4359,1204],{"class":1140},[1094,4361,1144],{"class":1115},[1094,4363,4364],{"class":1096,"line":1147},[1094,4365,1150],{"class":1115},[1094,4367,4368,4370],{"class":1096,"line":1153},[1094,4369,1156],{"class":1115},[1094,4371,1159],{"class":1111},[1275,4373,4376,4379],{"to":4374,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F29922","gray",[1024,4377,4378],{},"参见 PR #29922 了解实现细节。\n:::",[1275,4380,4383,4386,4390,4397,4403,4406,4452],{"to":4381,"icon":4382,"target":1279,"color":4375},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002Fperformance\u002Fextension#tracks","i-simple-icons-googlechrome",[1024,4384,4385],{},"了解关于 Chrome DevTools Performance API 的更多内容。\n:::",[1054,4387,4389],{"id":4388},"debugmodulemutation","debugModuleMutation",[1024,4391,4392,4393,4396],{},"记录模块上下文中对 ",[1031,4394,4395],{},"nuxt.options"," 的修改，帮助调试 Nuxt 初始化阶段模块所做的配置变更。",[1024,4398,2223,4399,4402],{},[1031,4400,4401],{},"debug"," 模式启用时，它默认开启。如果你需要禁用此特性，可以这样做：",[1024,4404,4405],{},"要显式启用它：",[1085,4407,4409],{"className":1087,"code":4408,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    debugModuleMutation: true,\n  },\n})\n",[1031,4410,4411,4423,4431,4442,4446],{"__ignoreMap":354},[1094,4412,4413,4415,4417,4419,4421],{"class":1096,"line":1097},[1094,4414,1101],{"class":1100},[1094,4416,1104],{"class":1100},[1094,4418,1108],{"class":1107},[1094,4420,1112],{"class":1111},[1094,4422,1116],{"class":1115},[1094,4424,4425,4427,4429],{"class":1096,"line":1119},[1094,4426,1123],{"class":1122},[1094,4428,1126],{"class":1115},[1094,4430,1129],{"class":1115},[1094,4432,4433,4436,4438,4440],{"class":1096,"line":1132},[1094,4434,4435],{"class":1122},"    debugModuleMutation",[1094,4437,1126],{"class":1115},[1094,4439,1141],{"class":1140},[1094,4441,1144],{"class":1115},[1094,4443,4444],{"class":1096,"line":1147},[1094,4445,1150],{"class":1115},[1094,4447,4448,4450],{"class":1096,"line":1153},[1094,4449,1156],{"class":1115},[1094,4451,1159],{"class":1111},[1275,4453,4455,4458,4462,4468,4471,4517],{"to":4454,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F30555",[1024,4456,4457],{},"参见 PR #30555 了解实现细节。\n:::",[1054,4459,4461],{"id":4460},"lazyhydration","lazyHydration",[1024,4463,4092,4464,4467],{},[1031,4465,4466],{},"\u003CLazy>"," 组件的延迟水合策略，通过推迟组件水合直到需要时才进行，从而提升性能。",[1024,4469,4470],{},"延迟水合默认启用，但你可以禁用此特性：",[1085,4472,4474],{"className":1087,"code":4473,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    lazyHydration: false,\n  },\n})\n",[1031,4475,4476,4488,4496,4507,4511],{"__ignoreMap":354},[1094,4477,4478,4480,4482,4484,4486],{"class":1096,"line":1097},[1094,4479,1101],{"class":1100},[1094,4481,1104],{"class":1100},[1094,4483,1108],{"class":1107},[1094,4485,1112],{"class":1111},[1094,4487,1116],{"class":1115},[1094,4489,4490,4492,4494],{"class":1096,"line":1119},[1094,4491,1123],{"class":1122},[1094,4493,1126],{"class":1115},[1094,4495,1129],{"class":1115},[1094,4497,4498,4501,4503,4505],{"class":1096,"line":1132},[1094,4499,4500],{"class":1122},"    lazyHydration",[1094,4502,1126],{"class":1115},[1094,4504,1204],{"class":1140},[1094,4506,1144],{"class":1115},[1094,4508,4509],{"class":1096,"line":1147},[1094,4510,1150],{"class":1115},[1094,4512,4513,4515],{"class":1096,"line":1153},[1094,4514,1156],{"class":1115},[1094,4516,1159],{"class":1111},[1275,4518,4520,4523,4527,4530,4536,4538,4584],{"to":4519,"icon":1278,"color":4375},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents#delayed-or-lazy-hydration",[1024,4521,4522],{},"阅读更多关于延迟水合。\n:::",[1054,4524,4526],{"id":4525},"templateimportresolution","templateImportResolution",[1024,4528,4529],{},"禁用从添加该模板的模块路径解析导入到 Nuxt 模板中。",[1024,4531,4532,4533,4535],{},"默认情况下，Nuxt 会尝试相对于添加模板的模块来解析模板中的导入。将此设为 ",[1031,4534,1671],{}," 会禁用此行为，如果你在某些环境中遇到解析冲突，这可能很有用。",[1024,4537,1169],{},[1085,4539,4541],{"className":1087,"code":4540,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    templateImportResolution: false,\n  },\n})\n",[1031,4542,4543,4555,4563,4574,4578],{"__ignoreMap":354},[1094,4544,4545,4547,4549,4551,4553],{"class":1096,"line":1097},[1094,4546,1101],{"class":1100},[1094,4548,1104],{"class":1100},[1094,4550,1108],{"class":1107},[1094,4552,1112],{"class":1111},[1094,4554,1116],{"class":1115},[1094,4556,4557,4559,4561],{"class":1096,"line":1119},[1094,4558,1123],{"class":1122},[1094,4560,1126],{"class":1115},[1094,4562,1129],{"class":1115},[1094,4564,4565,4568,4570,4572],{"class":1096,"line":1132},[1094,4566,4567],{"class":1122},"    templateImportResolution",[1094,4569,1126],{"class":1115},[1094,4571,1204],{"class":1140},[1094,4573,1144],{"class":1115},[1094,4575,4576],{"class":1096,"line":1147},[1094,4577,1150],{"class":1115},[1094,4579,4580,4582],{"class":1096,"line":1153},[1094,4581,1156],{"class":1115},[1094,4583,1159],{"class":1111},[1275,4585,4587,4590,4594,4615,4624,4626,4672,4675,4678,4701,4723,4736,4741,4745,4791,4794,4857,4863,5007,5010,5013,5023,5191,5220,5224,5227,5236,5238,5284],{"to":4586,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F31175",[1024,4588,4589],{},"参见 PR #31175 了解实现细节。\n:::",[1054,4591,4593],{"id":4592},"templaterouteinjection","templateRouteInjection",[1024,4595,4596,4597,4600,4601,4603,4604,4607,4608,4610,4611,4614],{},"默认情况下，由自动导入的 ",[1031,4598,4599],{},"useRoute()"," 组合式函数返回的 route 对象，与 ",[1031,4602,389],{}," 中当前视图的页面保持同步。这对于 ",[1031,4605,4606],{},"vue-router"," 导出的 ",[1031,4609,521],{},"，或你的 Vue 模板中可用的默认 ",[1031,4612,4613],{},"$route"," 对象则不成立。",[1024,4616,4617,4618,4620,4621,4623],{},"通过启用此选项，会注入一个 mixin 来保持 ",[1031,4619,4613],{}," 模板对象与 Nuxt 管理的 ",[1031,4622,4599],{}," 同步。",[1024,4625,1169],{},[1085,4627,4629],{"className":1087,"code":4628,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    templateRouteInjection: false,\n  },\n})\n",[1031,4630,4631,4643,4651,4662,4666],{"__ignoreMap":354},[1094,4632,4633,4635,4637,4639,4641],{"class":1096,"line":1097},[1094,4634,1101],{"class":1100},[1094,4636,1104],{"class":1100},[1094,4638,1108],{"class":1107},[1094,4640,1112],{"class":1111},[1094,4642,1116],{"class":1115},[1094,4644,4645,4647,4649],{"class":1096,"line":1119},[1094,4646,1123],{"class":1122},[1094,4648,1126],{"class":1115},[1094,4650,1129],{"class":1115},[1094,4652,4653,4656,4658,4660],{"class":1096,"line":1132},[1094,4654,4655],{"class":1122},"    templateRouteInjection",[1094,4657,1126],{"class":1115},[1094,4659,1204],{"class":1140},[1094,4661,1144],{"class":1115},[1094,4663,4664],{"class":1096,"line":1147},[1094,4665,1150],{"class":1115},[1094,4667,4668,4670],{"class":1096,"line":1153},[1094,4669,1156],{"class":1115},[1094,4671,1159],{"class":1111},[1054,4673,4674],{"id":4674},"decorators",[1024,4676,4677],{},"此选项在整个 Nuxt\u002FNitro 应用中启用装饰器语法。",[1024,4679,4680,4681,4686,4687,4694,4695,4700],{},"当使用 Vite 构建器（默认）时，装饰器通过 ",[1036,4682,4685],{"href":4683,"rel":4684},"https:\u002F\u002Fbabeljs.io\u002F",[1044],"Babel"," 使用 ",[1036,4688,4691],{"href":4689,"rel":4690},"https:\u002F\u002Fbabeljs.io\u002Fdocs\u002Fbabel-plugin-proposal-decorators",[1044],[1031,4692,4693],{},"@babel\u002Fplugin-proposal-decorators"," 降级。当使用 webpack 或 rspack 构建器时，装饰器通过 ",[1036,4696,4699],{"href":4697,"rel":4698},"https:\u002F\u002Fgithub.com\u002Fevanw\u002Fesbuild\u002Freleases\u002Ftag\u002Fv0.21.3",[1044],"esbuild"," 降级。",[1024,4702,4703,4704,4707,4708,4713,4714,1077,4718],{},"长期以来，TypeScript 通过 ",[1031,4705,4706],{},"compilerOptions.experimentalDecorators"," 支持装饰器。这个实现早于 TC39 标准化过程。现在，装饰器是一个 ",[1036,4709,4712],{"href":4710,"rel":4711},"https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-decorators",[1044],"Stage 3 提案","，并且无需特殊配置即在 TS 5.0+ 中支持（参见 ",[1036,4715,4716],{"href":4716,"rel":4717},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FTypeScript\u002Fpull\u002F52582",[1044],[1036,4719,4722],{"href":4720,"rel":4721},"https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Fannouncing-typescript-5-0-beta\u002F#decorators%EF%BC%89%E3%80%82",[1044],"https:\u002F\u002Fdevblogs.microsoft.com\u002Ftypescript\u002Fannouncing-typescript-5-0-beta\u002F#decorators）。",[1024,4724,4092,4725,4728,4729,4732,4733,4735],{},[1031,4726,4727],{},"experimental.decorators"," 启用的是对 TC39 提案的支持，",[1632,4730,4731],{},"而不是","对 TypeScript 之前 ",[1031,4734,4706],{}," 实现的支持。",[2199,4737,4738],{},[1024,4739,4740],{},"请注意，在最终落地到 JS 标准之前可能会有所变化。",[4742,4743,4744],"h3",{"id":4744},"用法",[1085,4746,4748],{"className":1087,"code":4747,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    decorators: true,\n  },\n})\n",[1031,4749,4750,4762,4770,4781,4785],{"__ignoreMap":354},[1094,4751,4752,4754,4756,4758,4760],{"class":1096,"line":1097},[1094,4753,1101],{"class":1100},[1094,4755,1104],{"class":1100},[1094,4757,1108],{"class":1107},[1094,4759,1112],{"class":1111},[1094,4761,1116],{"class":1115},[1094,4763,4764,4766,4768],{"class":1096,"line":1119},[1094,4765,1123],{"class":1122},[1094,4767,1126],{"class":1115},[1094,4769,1129],{"class":1115},[1094,4771,4772,4775,4777,4779],{"class":1096,"line":1132},[1094,4773,4774],{"class":1122},"    decorators",[1094,4776,1126],{"class":1115},[1094,4778,1141],{"class":1140},[1094,4780,1144],{"class":1115},[1094,4782,4783],{"class":1096,"line":1147},[1094,4784,1150],{"class":1115},[1094,4786,4787,4789],{"class":1096,"line":1153},[1094,4788,1156],{"class":1115},[1094,4790,1159],{"class":1111},[1024,4792,4793],{},"当使用 Vite 构建器或 Nitro 服务端构建时，你需要将额外的 Babel 包安装为开发依赖：",[4795,4796,4797,4820,4839],"code-group",{},[1085,4798,4801],{"className":3569,"code":4799,"filename":4800,"language":3572,"meta":354,"style":354},"npm install -D @babel\u002Fplugin-proposal-decorators @babel\u002Fplugin-syntax-jsx\n","npm",[1031,4802,4803],{"__ignoreMap":354},[1094,4804,4805,4807,4810,4814,4817],{"class":1096,"line":1097},[1094,4806,4800],{"class":3579},[1094,4808,4809],{"class":1460}," install",[1094,4811,4813],{"class":4812},"supr-"," -D",[1094,4815,4816],{"class":1460}," @babel\u002Fplugin-proposal-decorators",[1094,4818,4819],{"class":1460}," @babel\u002Fplugin-syntax-jsx\n",[1085,4821,4824],{"className":3569,"code":4822,"filename":4823,"language":3572,"meta":354,"style":354},"pnpm add -D @babel\u002Fplugin-proposal-decorators @babel\u002Fplugin-syntax-jsx\n","pnpm",[1031,4825,4826],{"__ignoreMap":354},[1094,4827,4828,4830,4833,4835,4837],{"class":1096,"line":1097},[1094,4829,4823],{"class":3579},[1094,4831,4832],{"class":1460}," add",[1094,4834,4813],{"class":4812},[1094,4836,4816],{"class":1460},[1094,4838,4819],{"class":1460},[1085,4840,4843],{"className":3569,"code":4841,"filename":4842,"language":3572,"meta":354,"style":354},"yarn add -D @babel\u002Fplugin-proposal-decorators @babel\u002Fplugin-syntax-jsx\n","yarn",[1031,4844,4845],{"__ignoreMap":354},[1094,4846,4847,4849,4851,4853,4855],{"class":1096,"line":1097},[1094,4848,4842],{"class":3579},[1094,4850,4832],{"class":1460},[1094,4852,4813],{"class":4812},[1094,4854,4816],{"class":1460},[1094,4856,4819],{"class":1460},[4858,4859,4860],"tip",{},[1024,4861,4862],{},"如果这些包尚未存在，Nuxt 会提示你自动安装它们。",[1085,4864,4867],{"className":1087,"code":4865,"filename":4866,"language":1089,"meta":354,"style":354},"function something (_method: () => unknown) {\n  return () => 'decorated'\n}\n\nclass SomeClass {\n  @something\n  public someMethod () {\n    return 'initial'\n  }\n}\n\nconst value = new SomeClass().someMethod()\n\u002F\u002F 这会返回 'decorated'\n","app\u002Fapp.vue",[1031,4868,4869,4896,4911,4916,4920,4929,4937,4950,4962,4967,4971,4976,5001],{"__ignoreMap":354},[1094,4870,4871,4874,4877,4879,4882,4884,4886,4888,4892,4894],{"class":1096,"line":1097},[1094,4872,4873],{"class":1430},"function",[1094,4875,4876],{"class":1107}," something",[1094,4878,3098],{"class":1115},[1094,4880,4881],{"class":1107},"_method",[1094,4883,1126],{"class":1444},[1094,4885,1472],{"class":1115},[1094,4887,1475],{"class":1430},[1094,4889,4891],{"class":4890},"seQRr"," unknown",[1094,4893,1582],{"class":1115},[1094,4895,1129],{"class":1115},[1094,4897,4898,4900,4902,4904,4906,4909],{"class":1096,"line":1119},[1094,4899,1482],{"class":1100},[1094,4901,1472],{"class":1115},[1094,4903,1475],{"class":1430},[1094,4905,1711],{"class":1456},[1094,4907,4908],{"class":1460},"decorated",[1094,4910,3316],{"class":1456},[1094,4912,4913],{"class":1096,"line":1132},[1094,4914,4915],{"class":1115},"}\n",[1094,4917,4918],{"class":1096,"line":1147},[1094,4919,3322],{"emptyLinePlaceholder":3321},[1094,4921,4922,4924,4927],{"class":1096,"line":1153},[1094,4923,2209],{"class":1430},[1094,4925,4926],{"class":3579}," SomeClass",[1094,4928,1129],{"class":1115},[1094,4930,4931,4934],{"class":1096,"line":1507},[1094,4932,4933],{"class":1115},"  @",[1094,4935,4936],{"class":1111},"something\n",[1094,4938,4939,4942,4946,4948],{"class":1096,"line":2534},[1094,4940,4941],{"class":1430},"  public",[1094,4943,4945],{"class":4944},"syA7L"," someMethod",[1094,4947,1472],{"class":1115},[1094,4949,1129],{"class":1115},[1094,4951,4952,4955,4957,4960],{"class":1096,"line":2539},[1094,4953,4954],{"class":1100},"    return",[1094,4956,1711],{"class":1456},[1094,4958,4959],{"class":1460},"initial",[1094,4961,3316],{"class":1456},[1094,4963,4964],{"class":1096,"line":3221},[1094,4965,4966],{"class":1115},"  }\n",[1094,4968,4969],{"class":1096,"line":3260},[1094,4970,4915],{"class":1115},[1094,4972,4974],{"class":1096,"line":4973},11,[1094,4975,3322],{"emptyLinePlaceholder":3321},[1094,4977,4979,4981,4984,4986,4989,4991,4994,4996,4999],{"class":1096,"line":4978},12,[1094,4980,1431],{"class":1430},[1094,4982,4983],{"class":1437}," value",[1094,4985,1445],{"class":1444},[1094,4987,4988],{"class":1444}," new",[1094,4990,4926],{"class":1107},[1094,4992,4993],{"class":1111},"()",[1094,4995,1585],{"class":1115},[1094,4997,4998],{"class":1107},"someMethod",[1094,5000,3074],{"class":1111},[1094,5002,5004],{"class":1096,"line":5003},13,[1094,5005,5006],{"class":1408},"\u002F\u002F 这会返回 'decorated'\n",[1054,5008,5009],{"id":5009},"defaults",[1024,5011,5012],{},"这允许为 Nuxt 核心组件和组合式函数指定默认选项。",[1024,5014,5015,5016,2979,5019,5022],{},"这些选项未来很可能会移到别处，例如移到 ",[1031,5017,5018],{},"app.config",[1031,5020,5021],{},"app\u002F"," 目录中。",[1085,5024,5026],{"className":1087,"code":5025,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    defaults: {\n      nuxtLink: {\n        componentName: 'NuxtLink',\n        prefetch: true,\n        prefetchOn: {\n          visibility: true,\n        },\n      },\n      useAsyncData: {\n        deep: true,\n      },\n      useState: {\n        resetOnClear: true,\n      },\n    },\n  },\n})\n",[1031,5027,5028,5040,5048,5057,5066,5082,5093,5102,5113,5118,5123,5132,5143,5147,5157,5169,5174,5179,5184],{"__ignoreMap":354},[1094,5029,5030,5032,5034,5036,5038],{"class":1096,"line":1097},[1094,5031,1101],{"class":1100},[1094,5033,1104],{"class":1100},[1094,5035,1108],{"class":1107},[1094,5037,1112],{"class":1111},[1094,5039,1116],{"class":1115},[1094,5041,5042,5044,5046],{"class":1096,"line":1119},[1094,5043,1123],{"class":1122},[1094,5045,1126],{"class":1115},[1094,5047,1129],{"class":1115},[1094,5049,5050,5053,5055],{"class":1096,"line":1132},[1094,5051,5052],{"class":1122},"    defaults",[1094,5054,1126],{"class":1115},[1094,5056,1129],{"class":1115},[1094,5058,5059,5062,5064],{"class":1096,"line":1147},[1094,5060,5061],{"class":1122},"      nuxtLink",[1094,5063,1126],{"class":1115},[1094,5065,1129],{"class":1115},[1094,5067,5068,5071,5073,5075,5078,5080],{"class":1096,"line":1153},[1094,5069,5070],{"class":1122},"        componentName",[1094,5072,1126],{"class":1115},[1094,5074,1711],{"class":1456},[1094,5076,5077],{"class":1460},"NuxtLink",[1094,5079,1457],{"class":1456},[1094,5081,1144],{"class":1115},[1094,5083,5084,5087,5089,5091],{"class":1096,"line":1507},[1094,5085,5086],{"class":1122},"        prefetch",[1094,5088,1126],{"class":1115},[1094,5090,1141],{"class":1140},[1094,5092,1144],{"class":1115},[1094,5094,5095,5098,5100],{"class":1096,"line":2534},[1094,5096,5097],{"class":1122},"        prefetchOn",[1094,5099,1126],{"class":1115},[1094,5101,1129],{"class":1115},[1094,5103,5104,5107,5109,5111],{"class":1096,"line":2539},[1094,5105,5106],{"class":1122},"          visibility",[1094,5108,1126],{"class":1115},[1094,5110,1141],{"class":1140},[1094,5112,1144],{"class":1115},[1094,5114,5115],{"class":1096,"line":3221},[1094,5116,5117],{"class":1115},"        },\n",[1094,5119,5120],{"class":1096,"line":3260},[1094,5121,5122],{"class":1115},"      },\n",[1094,5124,5125,5128,5130],{"class":1096,"line":4973},[1094,5126,5127],{"class":1122},"      useAsyncData",[1094,5129,1126],{"class":1115},[1094,5131,1129],{"class":1115},[1094,5133,5134,5137,5139,5141],{"class":1096,"line":4978},[1094,5135,5136],{"class":1122},"        deep",[1094,5138,1126],{"class":1115},[1094,5140,1141],{"class":1140},[1094,5142,1144],{"class":1115},[1094,5144,5145],{"class":1096,"line":5003},[1094,5146,5122],{"class":1115},[1094,5148,5150,5153,5155],{"class":1096,"line":5149},14,[1094,5151,5152],{"class":1122},"      useState",[1094,5154,1126],{"class":1115},[1094,5156,1129],{"class":1115},[1094,5158,5160,5163,5165,5167],{"class":1096,"line":5159},15,[1094,5161,5162],{"class":1122},"        resetOnClear",[1094,5164,1126],{"class":1115},[1094,5166,1141],{"class":1140},[1094,5168,1144],{"class":1115},[1094,5170,5172],{"class":1096,"line":5171},16,[1094,5173,5122],{"class":1115},[1094,5175,5177],{"class":1096,"line":5176},17,[1094,5178,2531],{"class":1115},[1094,5180,5182],{"class":1096,"line":5181},18,[1094,5183,1150],{"class":1115},[1094,5185,5187,5189],{"class":1096,"line":5186},19,[1094,5188,1156],{"class":1115},[1094,5190,1159],{"class":1111},[1024,5192,5193,5196,5197,5201,5202,5206,5207,5210,5211,5214,5215,5217,5218,2004],{},[1031,5194,5195],{},"useState.resetOnClear"," 选项控制 ",[1036,5198,5199],{"href":576},[1031,5200,577],{}," 是否将状态重置为其初始值（由 ",[1036,5203,5204],{"href":548},[1031,5205,549],{}," 的 ",[1031,5208,5209],{},"init"," 函数提供），而不是设为 ",[1031,5212,5213],{},"undefined","。在 ",[1031,5216,2098],{}," 下这默认为 ",[1031,5219,2078],{},[1054,5221,5223],{"id":5222},"purgecacheddata","purgeCachedData",[1024,5225,5226],{},"是否在路由导航时清理 Nuxt 的静态和 asyncData 缓存。",[1024,5228,5229,5230,1077,5232,5235],{},"Nuxt 会自动清理 ",[1031,5231,441],{},[1031,5233,5234],{},"nuxtApp.static.data"," 中的缓存数据。这有助于防止内存泄漏，并确保在需要时加载新数据，但也可以禁用它。",[1024,5237,1169],{},[1085,5239,5241],{"className":1087,"code":5240,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    purgeCachedData: false,\n  },\n})\n",[1031,5242,5243,5255,5263,5274,5278],{"__ignoreMap":354},[1094,5244,5245,5247,5249,5251,5253],{"class":1096,"line":1097},[1094,5246,1101],{"class":1100},[1094,5248,1104],{"class":1100},[1094,5250,1108],{"class":1107},[1094,5252,1112],{"class":1111},[1094,5254,1116],{"class":1115},[1094,5256,5257,5259,5261],{"class":1096,"line":1119},[1094,5258,1123],{"class":1122},[1094,5260,1126],{"class":1115},[1094,5262,1129],{"class":1115},[1094,5264,5265,5268,5270,5272],{"class":1096,"line":1132},[1094,5266,5267],{"class":1122},"    purgeCachedData",[1094,5269,1126],{"class":1115},[1094,5271,1204],{"class":1140},[1094,5273,1144],{"class":1115},[1094,5275,5276],{"class":1096,"line":1147},[1094,5277,1150],{"class":1115},[1094,5279,5280,5282],{"class":1096,"line":1153},[1094,5281,1156],{"class":1115},[1094,5283,1159],{"class":1111},[1275,5285,5287,5290,5294,5324,5335,5345,5391],{"to":5286,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F31379",[1024,5288,5289],{},"参见 PR #31379 了解实现细节。\n:::",[1054,5291,5293],{"id":5292},"prefetchpreloadtags","prefetchPreloadTags",[1024,5295,2223,5296,5298,5299,5303,5304,5308,5309,5206,5316,5319,5320,5323],{},[1031,5297,397],{}," 被预取，且目标路由启用了 ",[1036,5300,5302],{"href":5301},"#payloadextraction","payload 提取","（预渲染和缓存路由的默认行为）时，将目标通过 ",[1036,5305,5306],{"href":456},[1031,5307,457],{},"（或通过像 ",[1036,5310,5313],{"href":5311,"rel":5312},"https:\u002F\u002Fimage.nuxt.com",[1044],[1031,5314,5315],{},"@nuxt\u002Fimage",[1031,5317,5318],{},"\u003CNuxtImg preload>"," 这样的模块）设置的任何 ",[1031,5321,5322],{},"\u003Clink rel=\"preload\">"," 提示转发到当前文档。",[1024,5325,5326,5327,5330,5331,5334],{},"转发的链接会从 ",[1031,5328,5329],{},"rel=\"preload\""," 降级为 ",[1031,5332,5333],{},"rel=\"prefetch\"","，这样它们就不会与当前页面的关键资源竞争。只转发用户定义的 head 标签；构建时的 JS\u002FCSS chunk 预加载已经由预取管道单独处理。",[1024,5336,5337,5338,5341,5342,5344],{},"这个标志默认是关闭的，因为结合 ",[1031,5339,5340],{},"prefetchOn: 'visibility'","（",[1031,5343,397],{}," 的默认行为），它可能会一次性触发大量跨路由预取。当你确定目标预加载值得为你用户通常会遇到的链接转发时，再启用它。",[1085,5346,5348],{"className":1087,"code":5347,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    prefetchPreloadTags: true,\n  },\n})\n",[1031,5349,5350,5362,5370,5381,5385],{"__ignoreMap":354},[1094,5351,5352,5354,5356,5358,5360],{"class":1096,"line":1097},[1094,5353,1101],{"class":1100},[1094,5355,1104],{"class":1100},[1094,5357,1108],{"class":1107},[1094,5359,1112],{"class":1111},[1094,5361,1116],{"class":1115},[1094,5363,5364,5366,5368],{"class":1096,"line":1119},[1094,5365,1123],{"class":1122},[1094,5367,1126],{"class":1115},[1094,5369,1129],{"class":1115},[1094,5371,5372,5375,5377,5379],{"class":1096,"line":1132},[1094,5373,5374],{"class":1122},"    prefetchPreloadTags",[1094,5376,1126],{"class":1115},[1094,5378,1141],{"class":1140},[1094,5380,1144],{"class":1115},[1094,5382,5383],{"class":1096,"line":1147},[1094,5384,1150],{"class":1115},[1094,5386,5387,5389],{"class":1096,"line":1153},[1094,5388,1156],{"class":1115},[1094,5390,1159],{"class":1111},[1275,5392,5394,5397,5401,5424,5426,5472],{"to":5393,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fissues\u002F34953",[1024,5395,5396],{},"参见 issue #34953 了解动机。\n:::",[1054,5398,5400],{"id":5399},"granularcacheddata","granularCachedData",[1024,5402,5403,5404,1077,5406,5408,5409,2210,5412,5415,5416,5419,5420,5423],{},"在为 ",[1031,5405,441],{},[1031,5407,453],{}," 刷新数据（无论是通过 ",[1031,5410,5411],{},"watch",[1031,5413,5414],{},"refreshNuxtData()","，还是手动的 ",[1031,5417,5418],{},"refresh()"," 调用）时，是否调用并使用 ",[1031,5421,5422],{},"getCachedData"," 的结果。",[1024,5425,1169],{},[1085,5427,5429],{"className":1087,"code":5428,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    granularCachedData: false,\n  },\n})\n",[1031,5430,5431,5443,5451,5462,5466],{"__ignoreMap":354},[1094,5432,5433,5435,5437,5439,5441],{"class":1096,"line":1097},[1094,5434,1101],{"class":1100},[1094,5436,1104],{"class":1100},[1094,5438,1108],{"class":1107},[1094,5440,1112],{"class":1111},[1094,5442,1116],{"class":1115},[1094,5444,5445,5447,5449],{"class":1096,"line":1119},[1094,5446,1123],{"class":1122},[1094,5448,1126],{"class":1115},[1094,5450,1129],{"class":1115},[1094,5452,5453,5456,5458,5460],{"class":1096,"line":1132},[1094,5454,5455],{"class":1122},"    granularCachedData",[1094,5457,1126],{"class":1115},[1094,5459,1204],{"class":1140},[1094,5461,1144],{"class":1115},[1094,5463,5464],{"class":1096,"line":1147},[1094,5465,1150],{"class":1115},[1094,5467,5468,5470],{"class":1096,"line":1153},[1094,5469,1156],{"class":1115},[1094,5471,1159],{"class":1111},[1275,5473,5475,5478,5482,5485,5493,5495,5541,5545,5559,5596,5621,5667,5671,5674,5681,5716,5723,5740,5743,5841,5845,5851,5854,5856,5902,5924],{"to":5474,"icon":1278,"target":1279,"color":4375},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fpull\u002F31373",[1024,5476,5477],{},"参见 PR #31373 了解实现细节。\n:::",[1054,5479,5481],{"id":5480},"headnext","headNext",[1024,5483,5484],{},"使用 head 优化：",[2061,5486,5487,5490],{},[2064,5488,5489],{},"添加 capo.js head 插件，以更高效的方式渲染 head 中的标签。",[2064,5491,5492],{},"使用哈希水合插件来减少初始水合。",[1024,5494,1169],{},[1085,5496,5498],{"className":1087,"code":5497,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    headNext: false,\n  },\n})\n",[1031,5499,5500,5512,5520,5531,5535],{"__ignoreMap":354},[1094,5501,5502,5504,5506,5508,5510],{"class":1096,"line":1097},[1094,5503,1101],{"class":1100},[1094,5505,1104],{"class":1100},[1094,5507,1108],{"class":1107},[1094,5509,1112],{"class":1111},[1094,5511,1116],{"class":1115},[1094,5513,5514,5516,5518],{"class":1096,"line":1119},[1094,5515,1123],{"class":1122},[1094,5517,1126],{"class":1115},[1094,5519,1129],{"class":1115},[1094,5521,5522,5525,5527,5529],{"class":1096,"line":1132},[1094,5523,5524],{"class":1122},"    headNext",[1094,5526,1126],{"class":1115},[1094,5528,1204],{"class":1140},[1094,5530,1144],{"class":1115},[1094,5532,5533],{"class":1096,"line":1147},[1094,5534,1150],{"class":1115},[1094,5536,5537,5539],{"class":1096,"line":1153},[1094,5538,1156],{"class":1115},[1094,5540,1159],{"class":1111},[1054,5542,5544],{"id":5543},"pendingwhenidle","pendingWhenIdle",[1024,5546,5547,5549,5550,1077,5552,5554,5555,5558],{},[1031,5548,5544],{}," 控制 ",[1031,5551,441],{},[1031,5553,453],{}," 返回的 ",[1031,5556,5557],{},"pending"," ref。",[1024,5560,2223,5561,2908,5563,5565,5566,2908,5568,5570,5571,5574,5575,2908,5578,5581,5582,5584,5585,5587,5588,5591,5592,5595],{},[1031,5562,5544],{},[1031,5564,1671],{},"（默认）时，在进行中的请求期间 ",[1031,5567,5557],{},[1031,5569,2078],{},"，并与 ",[1031,5572,5573],{},"status === 'pending'"," 匹配。当 ",[1031,5576,5577],{},"status",[1031,5579,5580],{},"idle"," 时，",[1031,5583,5557],{}," 保持为 ",[1031,5586,1671],{},"。你可以在 ",[1031,5589,5590],{},"{ immediate: false }","，或在服务端渲染期间的 ",[1031,5593,5594],{},"{ server: false }"," 中看到这一点。",[1024,5597,5598,5599,5601,5602,5604,5605,2908,5607,5609,5610,5612,5613,5615,5616,5618,5619,2004],{},"将 ",[1031,5600,5544],{}," 设为 ",[1031,5603,2078],{},"，这样当 ",[1031,5606,5577],{},[1031,5608,5580],{}," 且没有可用缓存数据时，",[1031,5611,5557],{}," 也为 ",[1031,5614,2078],{},"。当你的加载 UI 需要区分 ",[1031,5617,5580],{}," 和进行中的请求时，使用 ",[1031,5620,5577],{},[1085,5622,5624],{"className":1087,"code":5623,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    pendingWhenIdle: true,\n  },\n})\n",[1031,5625,5626,5638,5646,5657,5661],{"__ignoreMap":354},[1094,5627,5628,5630,5632,5634,5636],{"class":1096,"line":1097},[1094,5629,1101],{"class":1100},[1094,5631,1104],{"class":1100},[1094,5633,1108],{"class":1107},[1094,5635,1112],{"class":1111},[1094,5637,1116],{"class":1115},[1094,5639,5640,5642,5644],{"class":1096,"line":1119},[1094,5641,1123],{"class":1122},[1094,5643,1126],{"class":1115},[1094,5645,1129],{"class":1115},[1094,5647,5648,5651,5653,5655],{"class":1096,"line":1132},[1094,5649,5650],{"class":1122},"    pendingWhenIdle",[1094,5652,1126],{"class":1115},[1094,5654,1141],{"class":1140},[1094,5656,1144],{"class":1115},[1094,5658,5659],{"class":1096,"line":1147},[1094,5660,1150],{"class":1115},[1094,5662,5663,5665],{"class":1096,"line":1153},[1094,5664,1156],{"class":1115},[1094,5666,1159],{"class":1111},[1054,5668,5670],{"id":5669},"entryimportmap","entryImportMap",[1024,5672,5673],{},"默认情况下，Nuxt 使用 import map 解析 bundle 的入口 chunk，从而提升 chunk 稳定性。",[1024,5675,5676,5677,5680],{},"这会在你的 ",[1031,5678,5679],{},"\u003Chead>"," 标签顶部注入一个 import map：",[1085,5682,5684],{"className":4234,"code":5683,"language":4236,"meta":354,"style":354},"\u003Cscript type=\"importmap\">{\"imports\":{\"#entry\":\"\u002F_nuxt\u002FDC5HVSK5.js\"}}\u003C\u002Fscript>\n",[1031,5685,5686],{"__ignoreMap":354},[1094,5687,5688,5690,5692,5695,5697,5699,5702,5704,5707,5710,5712,5714],{"class":1096,"line":1097},[1094,5689,1414],{"class":1115},[1094,5691,1418],{"class":1417},[1094,5693,5694],{"class":1421}," type",[1094,5696,3733],{"class":1115},[1094,5698,3736],{"class":1456},[1094,5700,5701],{"class":1460},"importmap",[1094,5703,3736],{"class":1456},[1094,5705,5706],{"class":1115},">",[1094,5708,5709],{"class":1111},"{\"imports\":{\"#entry\":\"\u002F_nuxt\u002FDC5HVSK5.js\"}}",[1094,5711,1510],{"class":1115},[1094,5713,1418],{"class":1417},[1094,5715,1425],{"class":1115},[1024,5717,5718,5719,5722],{},"在 Vite 发出的脚本 chunk 中，导入将来自 ",[1031,5720,5721],{},"#entry","。这意味着对入口的更改不会使其它未更改的 chunk 失效。",[1048,5724,5725],{},[1024,5726,5727,5728,5731,5732,5735,5736,5739],{},"如果你配置了 ",[1031,5729,5730],{},"vite.build.target"," 包含不支持 import map 的浏览器，或配置了 ",[1031,5733,5734],{},"vite.build.rolldownOptions.output.entryFileNames"," 为不包含 ",[1031,5737,5738],{},"[hash]"," 的值，Nuxt 会智能地禁用此特性。",[1024,5741,5742],{},"如果需要禁用此特性，你可以这样做：",[1085,5744,5746],{"className":1087,"code":5745,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    entryImportMap: false,\n  },\n  \u002F\u002F 或者，更好的方式是直接告诉 vite 你的目标\n  \u002F\u002F nuxt 会尊重它\n  vite: {\n    build: {\n      target: 'safari13',\n    },\n  },\n})\n",[1031,5747,5748,5760,5768,5779,5783,5788,5793,5802,5811,5827,5831,5835],{"__ignoreMap":354},[1094,5749,5750,5752,5754,5756,5758],{"class":1096,"line":1097},[1094,5751,1101],{"class":1100},[1094,5753,1104],{"class":1100},[1094,5755,1108],{"class":1107},[1094,5757,1112],{"class":1111},[1094,5759,1116],{"class":1115},[1094,5761,5762,5764,5766],{"class":1096,"line":1119},[1094,5763,1123],{"class":1122},[1094,5765,1126],{"class":1115},[1094,5767,1129],{"class":1115},[1094,5769,5770,5773,5775,5777],{"class":1096,"line":1132},[1094,5771,5772],{"class":1122},"    entryImportMap",[1094,5774,1126],{"class":1115},[1094,5776,1204],{"class":1140},[1094,5778,1144],{"class":1115},[1094,5780,5781],{"class":1096,"line":1147},[1094,5782,1150],{"class":1115},[1094,5784,5785],{"class":1096,"line":1153},[1094,5786,5787],{"class":1408},"  \u002F\u002F 或者，更好的方式是直接告诉 vite 你的目标\n",[1094,5789,5790],{"class":1096,"line":1507},[1094,5791,5792],{"class":1408},"  \u002F\u002F nuxt 会尊重它\n",[1094,5794,5795,5798,5800],{"class":1096,"line":2534},[1094,5796,5797],{"class":1122},"  vite",[1094,5799,1126],{"class":1115},[1094,5801,1129],{"class":1115},[1094,5803,5804,5807,5809],{"class":1096,"line":2539},[1094,5805,5806],{"class":1122},"    build",[1094,5808,1126],{"class":1115},[1094,5810,1129],{"class":1115},[1094,5812,5813,5816,5818,5820,5823,5825],{"class":1096,"line":3221},[1094,5814,5815],{"class":1122},"      target",[1094,5817,1126],{"class":1115},[1094,5819,1711],{"class":1456},[1094,5821,5822],{"class":1460},"safari13",[1094,5824,1457],{"class":1456},[1094,5826,1144],{"class":1115},[1094,5828,5829],{"class":1096,"line":3260},[1094,5830,2531],{"class":1115},[1094,5832,5833],{"class":1096,"line":4973},[1094,5834,1150],{"class":1115},[1094,5836,5837,5839],{"class":1096,"line":4978},[1094,5838,1156],{"class":1115},[1094,5840,1159],{"class":1111},[1054,5842,5844],{"id":5843},"typescriptplugin","typescriptPlugin",[1024,5846,1869,5847,5850],{},[1031,5848,5849],{},"@dxup\u002Fnuxt"," 模块启用增强的 TypeScript 开发者体验。",[1024,5852,5853],{},"这个实验性插件为在 Nuxt 应用中使用 TypeScript 时提供了改进的类型集成和开发工具，以获得更好的 DX。",[1024,5855,1083],{},[1085,5857,5859],{"className":1087,"code":5858,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    typescriptPlugin: true,\n  },\n})\n",[1031,5860,5861,5873,5881,5892,5896],{"__ignoreMap":354},[1094,5862,5863,5865,5867,5869,5871],{"class":1096,"line":1097},[1094,5864,1101],{"class":1100},[1094,5866,1104],{"class":1100},[1094,5868,1108],{"class":1107},[1094,5870,1112],{"class":1111},[1094,5872,1116],{"class":1115},[1094,5874,5875,5877,5879],{"class":1096,"line":1119},[1094,5876,1123],{"class":1122},[1094,5878,1126],{"class":1115},[1094,5880,1129],{"class":1115},[1094,5882,5883,5886,5888,5890],{"class":1096,"line":1132},[1094,5884,5885],{"class":1122},"    typescriptPlugin",[1094,5887,1126],{"class":1115},[1094,5889,1141],{"class":1140},[1094,5891,1144],{"class":1115},[1094,5893,5894],{"class":1096,"line":1147},[1094,5895,1150],{"class":1115},[1094,5897,5898,5900],{"class":1096,"line":1153},[1094,5899,1156],{"class":1115},[1094,5901,1159],{"class":1111},[1626,5903,5904,5907],{},[1024,5905,5906],{},"要使用此特性，你需要：",[2061,5908,5909,5915],{},[2064,5910,5598,5911,5914],{},[1031,5912,5913],{},"typescript"," 作为依赖安装",[2064,5916,5917,5918,5923],{},"配置 VS Code 使用你的工作区 TypeScript 版本（参见 ",[1036,5919,5922],{"href":5920,"rel":5921},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Ftypescript\u002Ftypescript-compiling#_using-the-workspace-version-of-typescript",[1044],"VS Code 文档","）",[1275,5925,5927,5932,5936,5946,5992,5995,6075,6082,6164,6224,6298,6307,6326,6345,6348,6359,6442,6751,6775,6807],{"to":5926,"icon":1278,"target":1279},"https:\u002F\u002Fgithub.com\u002FKazariEX\u002Fdxup",[1024,5928,5929,5930,2399],{},"了解更多关于 ",[1632,5931,5849],{},[1054,5933,5935],{"id":5934},"ssrstreaming","ssrStreaming",[1024,5937,5938,5939,5941,5942,5945],{},"启用 SSR 流式传输，以显著改善 Time to First Byte（TTFB）。启用后，服务器会立即发送 HTML 外壳（包括 ",[1031,5940,5679],{},"、样式、预加载提示和入口脚本），然后使用 Vue 的 ",[1031,5943,5944],{},"renderToWebStream"," 渐进式地流式传输渲染后的 body 内容。",[1085,5947,5949],{"className":1087,"code":5948,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    ssrStreaming: true,\n  },\n})\n",[1031,5950,5951,5963,5971,5982,5986],{"__ignoreMap":354},[1094,5952,5953,5955,5957,5959,5961],{"class":1096,"line":1097},[1094,5954,1101],{"class":1100},[1094,5956,1104],{"class":1100},[1094,5958,1108],{"class":1107},[1094,5960,1112],{"class":1111},[1094,5962,1116],{"class":1115},[1094,5964,5965,5967,5969],{"class":1096,"line":1119},[1094,5966,1123],{"class":1122},[1094,5968,1126],{"class":1115},[1094,5970,1129],{"class":1115},[1094,5972,5973,5976,5978,5980],{"class":1096,"line":1132},[1094,5974,5975],{"class":1122},"    ssrStreaming",[1094,5977,1126],{"class":1115},[1094,5979,1141],{"class":1140},[1094,5981,1144],{"class":1115},[1094,5983,5984],{"class":1096,"line":1147},[1094,5985,1150],{"class":1115},[1094,5987,5988,5990],{"class":1096,"line":1153},[1094,5989,1156],{"class":1115},[1094,5991,1159],{"class":1111},[1024,5993,5994],{},"对于机器人和爬虫用户代理（如 Googlebot、Bingbot 等），流式传输会自动禁用，以确保搜索引擎收到完全渲染的 HTML 以符合 SEO 安全。默认模式只匹配索引爬虫；Lighthouse 和其它审计工具有意排除在外，因此合成测量反映的是与真实用户相同的流式响应。你可以自定义机器人检测正则：",[1085,5996,5998],{"className":1087,"code":5997,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    ssrStreaming: {\n      botRegex: \u002Fgooglebot|bingbot|my-internal-crawler\u002Fi,\n    },\n  },\n})\n",[1031,5999,6000,6012,6020,6028,6061,6065,6069],{"__ignoreMap":354},[1094,6001,6002,6004,6006,6008,6010],{"class":1096,"line":1097},[1094,6003,1101],{"class":1100},[1094,6005,1104],{"class":1100},[1094,6007,1108],{"class":1107},[1094,6009,1112],{"class":1111},[1094,6011,1116],{"class":1115},[1094,6013,6014,6016,6018],{"class":1096,"line":1119},[1094,6015,1123],{"class":1122},[1094,6017,1126],{"class":1115},[1094,6019,1129],{"class":1115},[1094,6021,6022,6024,6026],{"class":1096,"line":1132},[1094,6023,5975],{"class":1122},[1094,6025,1126],{"class":1115},[1094,6027,1129],{"class":1115},[1094,6029,6030,6033,6035,6038,6042,6045,6048,6050,6053,6055,6059],{"class":1096,"line":1147},[1094,6031,6032],{"class":1122},"      botRegex",[1094,6034,1126],{"class":1115},[1094,6036,6037],{"class":1456}," \u002F",[1094,6039,6041],{"class":6040},"sUiHA","googlebot",[1094,6043,6044],{"class":1444},"|",[1094,6046,6047],{"class":6040},"bingbot",[1094,6049,6044],{"class":1444},[1094,6051,6052],{"class":6040},"my-internal-crawler",[1094,6054,4107],{"class":1456},[1094,6056,6058],{"class":6057},"sZr3Q","i",[1094,6060,1144],{"class":1115},[1094,6062,6063],{"class":1096,"line":1153},[1094,6064,2531],{"class":1115},[1094,6066,6067],{"class":1096,"line":1507},[1094,6068,1150],{"class":1115},[1094,6070,6071,6073],{"class":1096,"line":2534},[1094,6072,1156],{"class":1115},[1094,6074,1159],{"class":1111},[1024,6076,6077,6078,6081],{},"你也可以使用 ",[1031,6079,6080],{},"routeRules"," 按路由控制流式传输：",[1085,6083,6085],{"className":1087,"code":6084,"filename":174,"language":1089,"meta":1090,"style":354},"export default defineNuxtConfig({\n  experimental: {\n    ssrStreaming: true,\n  },\n  routeRules: {\n    '\u002Fno-stream\u002F**': { streaming: false },\n  },\n})\n",[1031,6086,6087,6099,6107,6117,6121,6130,6154,6158],{"__ignoreMap":354},[1094,6088,6089,6091,6093,6095,6097],{"class":1096,"line":1097},[1094,6090,1101],{"class":1100},[1094,6092,1104],{"class":1100},[1094,6094,1108],{"class":1107},[1094,6096,1112],{"class":1111},[1094,6098,1116],{"class":1115},[1094,6100,6101,6103,6105],{"class":1096,"line":1119},[1094,6102,1123],{"class":1122},[1094,6104,1126],{"class":1115},[1094,6106,1129],{"class":1115},[1094,6108,6109,6111,6113,6115],{"class":1096,"line":1132},[1094,6110,5975],{"class":1122},[1094,6112,1126],{"class":1115},[1094,6114,1141],{"class":1140},[1094,6116,1144],{"class":1115},[1094,6118,6119],{"class":1096,"line":1147},[1094,6120,1150],{"class":1115},[1094,6122,6123,6126,6128],{"class":1096,"line":1153},[1094,6124,6125],{"class":1122},"  routeRules",[1094,6127,1126],{"class":1115},[1094,6129,1129],{"class":1115},[1094,6131,6132,6134,6138,6140,6142,6144,6147,6149,6151],{"class":1096,"line":1507},[1094,6133,3845],{"class":1456},[1094,6135,6137],{"class":6136},"sSD0A","\u002Fno-stream\u002F**",[1094,6139,1457],{"class":1456},[1094,6141,1126],{"class":1115},[1094,6143,1434],{"class":1115},[1094,6145,6146],{"class":1122}," streaming",[1094,6148,1126],{"class":1115},[1094,6150,1204],{"class":1140},[1094,6152,6153],{"class":1115}," },\n",[1094,6155,6156],{"class":1096,"line":2534},[1094,6157,1150],{"class":1115},[1094,6159,6160,6162],{"class":1096,"line":2539},[1094,6161,1156],{"class":1115},[1094,6163,1159],{"class":1111},[2199,6165,6166,6172],{},[1024,6167,6168,6171],{},[1632,6169,6170],{},"自动回退到非流式渲染。"," 流式传输在外壳刷新时立即提交响应状态码和头部，这与需要在渲染后修改响应的特性不兼容。匹配以下任何情况的请求不会被流式传输；它们使用缓冲渲染器，或短路为重定向或错误响应：",[2061,6173,6174,6197,6202,6209,6214,6221],{},[2064,6175,6176,6178,6179,2210,6182,2210,6185,2210,6188,2210,6191,6193,6194],{},[1031,6177,6080],{}," 为该路由设置了 ",[1031,6180,6181],{},"noScripts",[1031,6183,6184],{},"cache",[1031,6186,6187],{},"isr",[1031,6189,6190],{},"swr",[1031,6192,3359],{},"，或 ",[1031,6195,6196],{},"streaming: false",[2064,6198,6199,6201],{},[1031,6200,2105],{}," 的路由（已经是 SPA 渲染）",[2064,6203,6204,6205,6208],{},"机器人和爬虫用户代理（通过 ",[1031,6206,6207],{},"botRegex"," 控制）",[2064,6210,6211,6212,5923],{},"预渲染的路由（",[1031,6213,697],{},[2064,6215,6216,6217,6220],{},"来自插件、中间件或页面 setup 中的服务端端 ",[1031,6218,6219],{},"navigateTo()"," 重定向",[2064,6222,6223],{},"初始渲染期间抛出的致命错误（在外壳刷新之前）",[2199,6225,6226,6232,6235,6274,6277,6295],{},[1024,6227,6228,6231],{},[1632,6229,6230],{},"响应状态码和头部必须在外壳刷新之前设置。"," 流式传输会在第一个字节处提交 HTTP 状态码和头部，因此之后任何修改响应的操作都无法到达客户端。这是流式传输的固有特性，而不是 Nuxt 特有的 bug。",[1024,6233,6234],{},"边界是外壳刷新：",[2061,6236,6237,6243],{},[2064,6238,6239,6242],{},[1632,6240,6241],{},"能到达客户端","：在渲染开始前完成的 Nuxt 和 Nitro 插件所做的修改。",[2064,6244,6245,6248,6249,2210,6252,2210,6255,6258,6259,4107,6262,6265,6266,6269,6270,6273],{},[1632,6246,6247],{},"被丢弃","：",[1031,6250,6251],{},"setResponseStatus()",[1031,6253,6254],{},"useResponseHeader()",[1031,6256,6257],{},"useCookie()"," 写入以及 h3 的 ",[1031,6260,6261],{},"setHeader()",[1031,6263,6264],{},"appendResponseHeader()"," 调用，在组件渲染期间（包括路由中间件或 ",[1031,6267,6268],{},"\u003Cscript setup>"," 中的 ",[1031,6271,6272],{},"await"," 之后）做出，因为那部分工作在外壳已经在线后发生。",[1024,6275,6276],{},"要保留响应修改，请将其移入插件，或让该路由退出流式传输：",[2061,6278,6279,6285],{},[2064,6280,6281,6284],{},[1031,6282,6283],{},"routeRules: { '\u002Fpath': { streaming: false } }","：静态的，按路由。",[2064,6286,6287,6288,5206,6291,6294],{},"带 ",[1031,6289,6290],{},"ctx.prefersStream = false",[1031,6292,6293],{},"render:route"," 钩子：运行时的，按请求（例如，针对有条件设置 404 的路由）。",[1024,6296,6297],{},"在开发模式下，流式处理程序会记录一个警告，指明被丢弃的修改和路由，因此这些永远不会静默失败。",[1048,6299,6300],{},[1024,6301,6302,6303,6306],{},"如果在 HTTP 状态码已提交后，流式传输期间发生错误，会设置 ",[1031,6304,6305],{},"payload.error","，并且关闭标签仍会作为格式良好的文档发出，以便客户端在水合期间捕获错误并渲染错误页面。在外壳刷新之前抛出的错误会落到带有正确状态码的缓冲错误渲染器。",[1048,6308,6309],{},[1024,6310,6311,6314,6315,6317,6318,6321,6322,6325],{},[1632,6312,6313],{},"路由样式被流式传输，JS 提示仅限入口。"," 外壳在路由渲染之前被刷新，因此它的 ",[1031,6316,5679],{}," 仅携带入口 chunk 的样式和提示。一旦渲染注册了页面和布局模块，它们的 CSS 会在外壳之后立即流式传输（当启用 ",[1031,6319,6320],{},"inlineStyles"," 时内联为 ",[1031,6323,6324],{},"\u003Cstyle>","，否则为样式表链接），因此页面、布局和最顶层 async 组件的样式在 body 绘制之前到达（嵌套的 async 组件是 FOUC 注意事项，见下文）。路由特定的 JS chunk 不会从外壳预加载；浏览器在解析入口脚本后才会发现它们。流式传输改善了每个路由的 TTFB；LCP 收益在 JS 与入口 chunk 重叠的路由上最大。",[1048,6327,6328],{},[1024,6329,6330,6333,6334,6336,6337,6340,6341,6344],{},[1632,6331,6332],{},"组件 islands 与流式传输兼容。"," Island 插槽内容和选择性客户端（",[1031,6335,2696],{},"）组件通常在渲染后的传递中被拼接进 HTML，一旦 body 流过 island 锚点，这就不可能了。相反，渲染器将每个 island teleport 作为惰性的 ",[1031,6338,6339],{},"\u003Ctemplate>"," 发出在文档末尾，并通过一个在水合前运行的内联脚本将其重定位到位。这对应用代码是透明的。例外是使用 ",[1031,6342,6343],{},"features.noScripts"," 和 island 组件构建的应用，因为它们回退到缓冲渲染器，因为重定位脚本无法运行。",[4742,6346,6347],{"id":6347},"模块钩子",[1024,6349,6350,6351,6354,6355,6358],{},"模块通过现有的 ",[1031,6352,6353],{},"render:html"," 钩子（现在第二个参数带有 ",[1031,6356,6357],{},"streaming: true"," 标志）加上一个按请求的决策钩子和两个仅流式传输的钩子来参与流式响应：",[2061,6360,6361,6385,6414,6430],{},[2064,6362,6363,6367,6368,6371,6372,6374,6375,6378,6379,6381,6382,6384],{},[1632,6364,6365],{},[1031,6366,6293],{}," 在渲染开始前每个请求触发一次，用于每次渲染（无论是否启用流式传输）。读取 ",[1031,6369,6370],{},"ctx.canStream"," 以查看该路由是否可以流式传输，并设置 ",[1031,6373,6290],{}," 以强制对该请求使用缓冲渲染，例如基于 cookie、auth 状态或 A\u002FB 桶。渲染器仅在 ",[1031,6376,6377],{},"canStream && prefersStream"," 时流式传输。这是针对静态 ",[1031,6380,6080],{}," \u002F ",[1031,6383,6207],{}," 配置的运行时逃生舱。",[2064,6386,6387,6391,6392,6394,6395,2210,6398,2210,6401,1077,6404,6407,6408,4107,6410,6413],{},[1632,6388,6389],{},[1031,6390,6353],{}," 在外壳刷新之前触发一次，其第二个参数带有 ",[1031,6393,6357],{},"。对 ",[1031,6396,6397],{},"htmlAttrs",[1031,6399,6400],{},"head",[1031,6402,6403],{},"bodyAttrs",[1031,6405,6406],{},"bodyPrepend"," 的修改会到达线上。对 ",[1031,6409,4278],{},[1031,6411,6412],{},"bodyAppend"," 的修改被丢弃，因为 body 即将流式传输（会发出开发模式警告）。只修改 head 字段（CSP 注入、OG 标签、分析 meta）的模块在流式传输中无需代码更改即可工作。",[2064,6415,6416,6421,6422,6425,6426,6429],{},[1632,6417,6418],{},[1031,6419,6420],{},"render:html:chunk"," 在渲染器生成的每个 chunk 入队之前触发。修改 ",[1031,6423,6424],{},"ctx.chunk: Uint8Array"," 来转换字节（例如 nonce 注入）；读取 ",[1031,6427,6428],{},"ctx.index"," 来区分第一个 chunk 与后续 chunk。",[2064,6431,6432,6437,6438,6441],{},[1632,6433,6434],{},[1031,6435,6436],{},"render:html:close"," 在 body 流完成后、关闭标签之前触发。修改 ",[1031,6439,6440],{},"ctx.bodyAppend: string[]"," 来注入最终的标记（body 末尾的分析标签、服务端渲染的调试小部件等）。",[1085,6443,6445],{"className":1087,"code":6444,"language":1089,"meta":354,"style":354},"\u002F\u002F modules\u002Fstreaming-csp\u002Fsrc\u002Fruntime\u002Fserver-plugin.ts\nimport { defineNitroPlugin } from '#imports'\n\nexport default defineNitroPlugin((nitro) => {\n  nitro.hooks.hook('render:html', (ctx, { event }) => {\n    const nonce = event.context.cspNonce\n    if (!nonce) { return }\n    \u002F\u002F 对流式传输（shell 之前）和缓冲（渲染后）路径都有效。\n    for (let i = 0; i \u003C ctx.head.length; i++) {\n      ctx.head[i] = ctx.head[i].replace(\u002F\u003Cscript(?![^>]*\\snonce=)\u002Fg, `\u003Cscript nonce=\"${nonce}\"`)\n    }\n  })\n})\n",[1031,6446,6447,6452,6472,6476,6497,6539,6561,6586,6591,6640,6733,6738,6745],{"__ignoreMap":354},[1094,6448,6449],{"class":1096,"line":1097},[1094,6450,6451],{"class":1408},"\u002F\u002F modules\u002Fstreaming-csp\u002Fsrc\u002Fruntime\u002Fserver-plugin.ts\n",[1094,6453,6454,6456,6458,6461,6463,6465,6467,6470],{"class":1096,"line":1119},[1094,6455,3298],{"class":1100},[1094,6457,1434],{"class":1115},[1094,6459,6460],{"class":1111}," defineNitroPlugin",[1094,6462,1441],{"class":1115},[1094,6464,3308],{"class":1100},[1094,6466,1711],{"class":1456},[1094,6468,6469],{"class":1460},"#imports",[1094,6471,3316],{"class":1456},[1094,6473,6474],{"class":1096,"line":1132},[1094,6475,3322],{"emptyLinePlaceholder":3321},[1094,6477,6478,6480,6482,6484,6486,6488,6491,6493,6495],{"class":1096,"line":1147},[1094,6479,1101],{"class":1100},[1094,6481,1104],{"class":1100},[1094,6483,6460],{"class":1107},[1094,6485,1112],{"class":1111},[1094,6487,1112],{"class":1115},[1094,6489,6490],{"class":1593},"nitro",[1094,6492,1582],{"class":1115},[1094,6494,1475],{"class":1430},[1094,6496,1129],{"class":1115},[1094,6498,6499,6502,6504,6507,6509,6512,6514,6516,6518,6520,6522,6524,6526,6528,6530,6533,6535,6537],{"class":1096,"line":1153},[1094,6500,6501],{"class":1111},"  nitro",[1094,6503,1585],{"class":1115},[1094,6505,6506],{"class":1111},"hooks",[1094,6508,1585],{"class":1115},[1094,6510,6511],{"class":1107},"hook",[1094,6513,1112],{"class":1122},[1094,6515,1457],{"class":1456},[1094,6517,6353],{"class":1460},[1094,6519,1457],{"class":1456},[1094,6521,1466],{"class":1115},[1094,6523,3098],{"class":1115},[1094,6525,3854],{"class":1593},[1094,6527,1466],{"class":1115},[1094,6529,1434],{"class":1115},[1094,6531,6532],{"class":1593}," event",[1094,6534,3111],{"class":1115},[1094,6536,1475],{"class":1430},[1094,6538,1129],{"class":1115},[1094,6540,6541,6544,6547,6549,6551,6553,6556,6558],{"class":1096,"line":1507},[1094,6542,6543],{"class":1430},"    const",[1094,6545,6546],{"class":1437}," nonce",[1094,6548,1445],{"class":1444},[1094,6550,6532],{"class":1111},[1094,6552,1585],{"class":1115},[1094,6554,6555],{"class":1111},"context",[1094,6557,1585],{"class":1115},[1094,6559,6560],{"class":1111},"cspNonce\n",[1094,6562,6563,6566,6568,6571,6574,6577,6580,6583],{"class":1096,"line":2534},[1094,6564,6565],{"class":1100},"    if",[1094,6567,3098],{"class":1122},[1094,6569,6570],{"class":1444},"!",[1094,6572,6573],{"class":1111},"nonce",[1094,6575,6576],{"class":1122},") ",[1094,6578,6579],{"class":1115},"{",[1094,6581,6582],{"class":1100}," return",[1094,6584,6585],{"class":1115}," }\n",[1094,6587,6588],{"class":1096,"line":2539},[1094,6589,6590],{"class":1408},"    \u002F\u002F 对流式传输（shell 之前）和缓冲（渲染后）路径都有效。\n",[1094,6592,6593,6596,6598,6601,6604,6606,6609,6612,6614,6617,6620,6622,6624,6626,6629,6631,6633,6636,6638],{"class":1096,"line":3221},[1094,6594,6595],{"class":1100},"    for",[1094,6597,3098],{"class":1122},[1094,6599,6600],{"class":1430},"let",[1094,6602,6603],{"class":1111}," i",[1094,6605,1445],{"class":1444},[1094,6607,6608],{"class":3684}," 0",[1094,6610,6611],{"class":1115},";",[1094,6613,6603],{"class":1111},[1094,6615,6616],{"class":1444}," \u003C",[1094,6618,6619],{"class":1111}," ctx",[1094,6621,1585],{"class":1115},[1094,6623,6400],{"class":1111},[1094,6625,1585],{"class":1115},[1094,6627,6628],{"class":1437},"length",[1094,6630,6611],{"class":1115},[1094,6632,6603],{"class":1111},[1094,6634,6635],{"class":1444},"++",[1094,6637,6576],{"class":1122},[1094,6639,1116],{"class":1115},[1094,6641,6642,6645,6647,6649,6652,6654,6657,6659,6661,6663,6665,6667,6669,6671,6673,6676,6678,6680,6683,6687,6690,6693,6695,6697,6700,6703,6706,6708,6710,6713,6715,6718,6721,6723,6725,6727,6729,6731],{"class":1096,"line":3260},[1094,6643,6644],{"class":1111},"      ctx",[1094,6646,1585],{"class":1115},[1094,6648,6400],{"class":1111},[1094,6650,6651],{"class":1122},"[",[1094,6653,6058],{"class":1111},[1094,6655,6656],{"class":1122},"] ",[1094,6658,3733],{"class":1444},[1094,6660,6619],{"class":1111},[1094,6662,1585],{"class":1115},[1094,6664,6400],{"class":1111},[1094,6666,6651],{"class":1122},[1094,6668,6058],{"class":1111},[1094,6670,2524],{"class":1122},[1094,6672,1585],{"class":1115},[1094,6674,6675],{"class":1107},"replace",[1094,6677,1112],{"class":1122},[1094,6679,4107],{"class":1456},[1094,6681,6682],{"class":6040},"\u003Cscript",[1094,6684,6686],{"class":6685},"sHfmL","(?!",[1094,6688,6651],{"class":6689},"s0q4w",[1094,6691,6692],{"class":1444},"^",[1094,6694,5706],{"class":4812},[1094,6696,2524],{"class":6689},[1094,6698,6699],{"class":1444},"*",[1094,6701,6702],{"class":4812},"\\s",[1094,6704,6705],{"class":6040},"nonce=",[1094,6707,1582],{"class":6685},[1094,6709,4107],{"class":1456},[1094,6711,6712],{"class":6057},"g",[1094,6714,1466],{"class":1115},[1094,6716,6717],{"class":1456}," `",[1094,6719,6720],{"class":1460},"\u003Cscript nonce=\"",[1094,6722,3134],{"class":1456},[1094,6724,6573],{"class":1111},[1094,6726,1156],{"class":1456},[1094,6728,3736],{"class":1460},[1094,6730,3128],{"class":1456},[1094,6732,1159],{"class":1122},[1094,6734,6735],{"class":1096,"line":4973},[1094,6736,6737],{"class":1115},"    }\n",[1094,6739,6740,6743],{"class":1096,"line":4978},[1094,6741,6742],{"class":1115},"  }",[1094,6744,1159],{"class":1122},[1094,6746,6747,6749],{"class":1096,"line":5003},[1094,6748,1156],{"class":1115},[1094,6750,1159],{"class":1111},[1048,6752,6753],{},[1024,6754,6755,6758,6759,6761,6762,6764,6765,4107,6768,6771,6772,6774],{},[1632,6756,6757],{},"CSP nonce。"," 流式渲染器会发出几个绕过 unhead 的内联脚本和样式：引导队列、IIFE、suspense head 推送、island-teleport 重定位和路由 ",[1031,6760,6324],{}," 块。如果渲染的 head 脚本上存在 ",[1031,6763,6573],{},"，渲染器会自动在所有这些脚本上重用它，因此严格的 ",[1031,6766,6767],{},"script-src",[1031,6769,6770],{},"style-src 'nonce-…'"," 策略不会阻止流式传输。模块只需将 nonce 放在 head 脚本上（如上）；",[1031,6773,6420],{}," 钩子仍可用于为你组件渲染进 body 的脚本打戳。",[2199,6776,6777,6790],{},[1024,6778,6779,6782,6783,6785,6786,6789],{},[1632,6780,6781],{},"SFC 样式的开发模式 FOUC："," 在开发模式下，Vite 将 SFC ",[1031,6784,6324],{}," 块作为 JavaScript 模块提供，这些模块在模块求值后客户端注入样式，外壳中没有对应的 ",[1031,6787,6788],{},"\u003Clink>","。通过流式传输，浏览器在那些样式注入模块运行之前就开始绘制流式 DOM，因此 SFC 定义的样式会短暂地无样式闪烁。",[1024,6791,6792,6793,6796,6797,6800,6801,6803,6804,6806],{},"变通方法：将影响绘制的样式放在通过 ",[1031,6794,6795],{},"css: ['~\u002Fassets\u002Fmain.css']"," 注册的全局 CSS 文件中。全局 CSS 文件作为 ",[1031,6798,6799],{},"\u003Clink rel=\"stylesheet\">"," 发出在 shell 的 ",[1031,6802,5679],{}," 中，并在 body 内容流式传输之前应用。SFC ",[1031,6805,6324],{}," 块对于不阻塞初始绘制的组件级样式仍然没问题。",[2199,6808,6809,6819,6829,6832,6863],{},[1024,6810,6811,6814,6815,6818],{},[1632,6812,6813],{},"嵌套 async 组件的生产模式 FOUC："," 渲染器将路由 CSS 内联在 shell 之后立即发送的 chunk 中。它只能内联到此时已注册模块的组件的样式：页面、布局，以及直接放在 ",[1031,6816,6817],{},"\u003CSuspense>"," 边界内的任何 async 组件（Vue 在渲染开始时急切地实例化这些组件）。",[1024,6820,6821,6822,6825,6826,6828],{},"一个渲染在",[2973,6823,6824],{},"另一个 async 组件内部","的 async 组件，只有当其父级解析后才会被实例化，也就是在第一个 chunk 流式传输之后。它的 SFC ",[1031,6827,6324],{}," 会错过 shell 之后的样式 chunk，而是在关闭的 HTML 中发出，位于组件自身的 DOM 之后。浏览器会无样式地绘制该组件，直到最终的 chunk 到达。",[1024,6830,6831],{},"通过以下方式避免：将影响绘制的样式排除在深层嵌套的 async 组件之外：",[2061,6833,6834,6842,6848,6857],{},[2064,6835,6836,6837,6839,6840,2004],{},"将影响绘制的样式放在全局 CSS 文件中（",[1031,6838,6795],{},"）；这些会到达 shell 的 ",[1031,6841,5679],{},[2064,6843,6844,6845,6847],{},"使用工具类（Tailwind、UnoCSS）样式化：工具类 CSS 存在于入口样式表中，而不是每个组件的 ",[1031,6846,6324],{}," 块中。",[2064,6849,6850,6851,6853,6854,6856],{},"将拥有影响绘制的 ",[1031,6852,6324],{}," 的 async 组件直接放在 ",[1031,6855,6817],{}," 边界下，而不是嵌套在另一个 async 父级之后。",[2064,6858,6859,6860,6862],{},"或使用 ",[1031,6861,6283],{}," 让该路由退出流式传输。",[1024,6864,6865],{},"嵌套 async 组件上不影响绘制的 scoped 样式没问题：短暂的闪烁只对首屏内容有影响。",[2213,6867,6868],{},"html pre.shiki code .szyBz, html code.shiki .szyBz{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .srJn9, html code.shiki .srJn9{--shiki-light:#6182B8;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .smVNa, html code.shiki .smVNa{--shiki-light:#90A4AE;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html 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 .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 .s6g6u, html code.shiki .s6g6u{--shiki-light:#E53935;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sXjFp, html code.shiki .sXjFp{--shiki-light:#9C3EDA;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .sV7Px, html code.shiki .sV7Px{--shiki-light:#9C3EDA;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sJTDI, html code.shiki .sJTDI{--shiki-light:#90A4AE;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sXPRQ, html code.shiki .sXPRQ{--shiki-light:#39ADB5;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .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 .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sOUxV, html code.shiki .sOUxV{--shiki-light:#F76D47;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html pre.shiki code .supr-, html code.shiki .supr-{--shiki-light:#91B859;--shiki-default:#79B8FF;--shiki-dark:#C3E88D}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .sUiHA, html code.shiki .sUiHA{--shiki-light:#91B859;--shiki-default:#DBEDFF;--shiki-dark:#C3E88D}html pre.shiki code .sZr3Q, html code.shiki .sZr3Q{--shiki-light:#F76D47;--shiki-default:#F97583;--shiki-dark:#F78C6C}html pre.shiki code .sSD0A, html code.shiki .sSD0A{--shiki-light:#E53935;--shiki-default:#9ECBFF;--shiki-dark:#F07178}html pre.shiki code .sHfmL, html code.shiki .sHfmL{--shiki-light:#39ADB5;--shiki-default:#DBEDFF;--shiki-dark:#89DDFF}html pre.shiki code .s0q4w, html code.shiki .s0q4w{--shiki-light:#39ADB5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}",{"title":354,"searchDepth":1132,"depth":1132,"links":6870},[6871,6872,6873,6874,6875,6876,6877,6878,6879],{"id":1056,"depth":1119,"text":1057},{"id":1162,"depth":1119,"text":1163},{"id":1219,"depth":1119,"text":1220},{"id":1285,"depth":1119,"text":1286},{"id":1338,"depth":1119,"text":1339},{"id":1638,"depth":1119,"text":1639},{"id":1733,"depth":1119,"text":1734},{"id":1789,"depth":1119,"text":1790},{"id":1865,"depth":1119,"text":1866},"md",{},null,{"title":310,"description":311},"docs\u002F3.guide\u002F6.going-further\u002F1.experimental-features","KCdLMVyiyFfIpKG3Gu2VwonVlKBw39pspH8ROWUVjCQ",1785179849156]