[{"data":1,"prerenderedAt":3156},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fgetting-started\u002Fstate-management":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":46,"body":1020,"description":47,"extension":3150,"meta":3151,"navigation":3152,"path":45,"seo":3153,"stem":3154,"__hash__":3155},"docs\u002Fdocs\u002F1.getting-started\u002F11.state-management.md",{"type":1021,"value":1022,"toc":3144},"minimark",[1023,1034,1050,3140],[1024,1025,1026,1027,1033],"p",{},"Nuxt 提供了 ",[1028,1029,1030],"a",{"href":548},[1031,1032,549],"code",{}," composable 来创建跨组件的、响应式且对 SSR 友好的共享状态。",[1024,1035,1036,1040,1041,1049],{},[1028,1037,1038],{"href":548},[1031,1039,549],{}," 是一个对 SSR 友好的 ",[1028,1042,1046],{"href":1043,"rel":1044},"https:\u002F\u002Fvuejs.org\u002Fapi\u002Freactivity-core#ref",[1045],"nofollow",[1031,1047,1048],{},"ref"," 替代品。它的值会在服务端渲染之后（在客户端 hydration 期间）保留，并通过一个唯一的 key 在所有使用它的组件之间共享。",[1051,1052,1055,1066],"video-accordion",{"title":1053,"video-id":1054},"观看 Alexander Lichter 关于为何以及何时使用 useState 的视频","mv0WcBABcIk",[1056,1057,1058],"important",{},[1024,1059,1060,1061,1065],{},"由于 ",[1028,1062,1063],{"href":548},[1031,1064,549],{}," 中的数据会被序列化为 JSON，重要的是它不能包含任何无法被序列化的内容，例如类、函数或 symbol。",[1067,1068,1069,1075,1080,1106,1116,1120,1125,1132,1385],"read-more",{"to":548},[1024,1070,1071,1072,1074],{},"阅读更多关于 ",[1031,1073,549],{}," composable 的内容。\n:::",[1076,1077,1079],"h2",{"id":1078},"最佳实践best-practices","最佳实践（Best Practices）",[1081,1082,1083],"warning",{},[1024,1084,1085,1086,1089,1090,1093,1094,1097,1098,1101,1102,1105],{},"永远不要在 ",[1031,1087,1088],{},"\u003Cscript setup>"," 或 ",[1031,1091,1092],{},"setup()"," 函数之外定义 ",[1031,1095,1096],{},"const state = ref()","。",[1099,1100],"br",{},"\n例如，执行 ",[1031,1103,1104],{},"export myState = ref({})"," 会导致状态在服务端上的请求之间被共享，并可能导致内存泄漏。",[1107,1108,1110],"tip",{"icon":1109},"i-lucide-circle-check",[1024,1111,1112,1113],{},"改为使用 ",[1031,1114,1115],{},"const useX = () => useState('x')",[1076,1117,1119],{"id":1118},"示例example","示例（Example）",[1121,1122,1124],"h3",{"id":1123},"基本用法basic-usage","基本用法（Basic Usage）",[1024,1126,1127,1128,1131],{},"在这个示例中，我们使用一个组件本地的计数器状态。任何其他使用 ",[1031,1129,1130],{},"useState('counter')"," 的组件都共享同一个响应式状态。",[1133,1134,1140],"pre",{"className":1135,"code":1136,"filename":1137,"language":1138,"meta":1139,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst counter = useState('counter', () => Math.round(Math.random() * 1000))\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    Counter: {{ counter }}\n    \u003Cbutton @click=\"counter++\">\n      +\n    \u003C\u002Fbutton>\n    \u003Cbutton @click=\"counter--\">\n      -\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","app\u002Fapp.vue","vue","twoslash",[1031,1141,1142,1178,1248,1258,1265,1275,1286,1292,1315,1321,1331,1351,1357,1366,1376],{"__ignoreMap":354},[1143,1144,1147,1151,1155,1159,1162,1165,1169,1173,1175],"span",{"class":1145,"line":1146},"line",1,[1143,1148,1150],{"class":1149},"sF54B","\u003C",[1143,1152,1154],{"class":1153},"s6g6u","script",[1143,1156,1158],{"class":1157},"sXjFp"," setup",[1143,1160,1161],{"class":1157}," lang",[1143,1163,1164],{"class":1149},"=",[1143,1166,1168],{"class":1167},"s0jeK","\"",[1143,1170,1172],{"class":1171},"s-Aze","ts",[1143,1174,1168],{"class":1167},[1143,1176,1177],{"class":1149},">\n",[1143,1179,1181,1185,1189,1193,1197,1201,1204,1207,1209,1212,1215,1218,1221,1224,1227,1230,1232,1235,1238,1241,1245],{"class":1145,"line":1180},2,[1143,1182,1184],{"class":1183},"sV7Px","const",[1143,1186,1188],{"class":1187},"sJTDI"," counter",[1143,1190,1192],{"class":1191},"sXPRQ"," =",[1143,1194,1196],{"class":1195},"srJn9"," useState",[1143,1198,1200],{"class":1199},"smVNa","(",[1143,1202,1203],{"class":1167},"'",[1143,1205,1206],{"class":1171},"counter",[1143,1208,1203],{"class":1167},[1143,1210,1211],{"class":1149},",",[1143,1213,1214],{"class":1149}," ()",[1143,1216,1217],{"class":1183}," =>",[1143,1219,1220],{"class":1199}," Math",[1143,1222,1223],{"class":1149},".",[1143,1225,1226],{"class":1195},"round",[1143,1228,1229],{"class":1199},"(Math",[1143,1231,1223],{"class":1149},[1143,1233,1234],{"class":1195},"random",[1143,1236,1237],{"class":1199},"() ",[1143,1239,1240],{"class":1191},"*",[1143,1242,1244],{"class":1243},"sOUxV"," 1000",[1143,1246,1247],{"class":1199},"))\n",[1143,1249,1251,1254,1256],{"class":1145,"line":1250},3,[1143,1252,1253],{"class":1149},"\u003C\u002F",[1143,1255,1154],{"class":1153},[1143,1257,1177],{"class":1149},[1143,1259,1261],{"class":1145,"line":1260},4,[1143,1262,1264],{"emptyLinePlaceholder":1263},true,"\n",[1143,1266,1268,1270,1273],{"class":1145,"line":1267},5,[1143,1269,1150],{"class":1149},[1143,1271,1272],{"class":1153},"template",[1143,1274,1177],{"class":1149},[1143,1276,1278,1281,1284],{"class":1145,"line":1277},6,[1143,1279,1280],{"class":1149},"  \u003C",[1143,1282,1283],{"class":1153},"div",[1143,1285,1177],{"class":1149},[1143,1287,1289],{"class":1145,"line":1288},7,[1143,1290,1291],{"class":1199},"    Counter: {{ counter }}\n",[1143,1293,1295,1298,1301,1304,1306,1308,1311,1313],{"class":1145,"line":1294},8,[1143,1296,1297],{"class":1149},"    \u003C",[1143,1299,1300],{"class":1153},"button",[1143,1302,1303],{"class":1157}," @click",[1143,1305,1164],{"class":1149},[1143,1307,1168],{"class":1167},[1143,1309,1310],{"class":1171},"counter++",[1143,1312,1168],{"class":1167},[1143,1314,1177],{"class":1149},[1143,1316,1318],{"class":1145,"line":1317},9,[1143,1319,1320],{"class":1199},"      +\n",[1143,1322,1324,1327,1329],{"class":1145,"line":1323},10,[1143,1325,1326],{"class":1149},"    \u003C\u002F",[1143,1328,1300],{"class":1153},[1143,1330,1177],{"class":1149},[1143,1332,1334,1336,1338,1340,1342,1344,1347,1349],{"class":1145,"line":1333},11,[1143,1335,1297],{"class":1149},[1143,1337,1300],{"class":1153},[1143,1339,1303],{"class":1157},[1143,1341,1164],{"class":1149},[1143,1343,1168],{"class":1167},[1143,1345,1346],{"class":1171},"counter--",[1143,1348,1168],{"class":1167},[1143,1350,1177],{"class":1149},[1143,1352,1354],{"class":1145,"line":1353},12,[1143,1355,1356],{"class":1199},"      -\n",[1143,1358,1360,1362,1364],{"class":1145,"line":1359},13,[1143,1361,1326],{"class":1149},[1143,1363,1300],{"class":1153},[1143,1365,1177],{"class":1149},[1143,1367,1369,1372,1374],{"class":1145,"line":1368},14,[1143,1370,1371],{"class":1149},"  \u003C\u002F",[1143,1373,1283],{"class":1153},[1143,1375,1177],{"class":1149},[1143,1377,1379,1381,1383],{"class":1145,"line":1378},15,[1143,1380,1253],{"class":1149},[1143,1382,1272],{"class":1153},[1143,1384,1177],{"class":1149},[1386,1387,1389,1400,1404,1417,1535,1549],"link-example",{"to":1388},"\u002Fdocs\u002Fexamples\u002Ffeatures\u002Fstate-management",[1390,1391,1392],"note",{},[1024,1393,1394,1395,1399],{},"要全局使缓存的状态失效，请参阅 ",[1028,1396,1397],{"href":576},[1031,1398,577],{}," 工具。",[1121,1401,1403],{"id":1402},"初始化状态initializing-state","初始化状态（Initializing State）",[1024,1405,1406,1407,1411,1412,1416],{},"大多数时候，你会希望用能异步解析的数据来初始化你的状态。你可以使用 ",[1028,1408,1409],{"href":117},[1031,1410,118],{}," 组件配合 ",[1028,1413,1414],{"href":564},[1031,1415,565],{}," 工具来实现。",[1133,1418,1420],{"className":1135,"code":1419,"filename":1137,"language":1138,"meta":1139,"style":354},"\u003Cscript setup lang=\"ts\">\nconst websiteConfig = useState('config')\n\nawait callOnce(async () => {\n  websiteConfig.value = await $fetch('https:\u002F\u002Fmy-cms.com\u002Fapi\u002Fwebsite-config')\n})\n\u003C\u002Fscript>\n",[1031,1421,1422,1442,1465,1469,1490,1520,1527],{"__ignoreMap":354},[1143,1423,1424,1426,1428,1430,1432,1434,1436,1438,1440],{"class":1145,"line":1146},[1143,1425,1150],{"class":1149},[1143,1427,1154],{"class":1153},[1143,1429,1158],{"class":1157},[1143,1431,1161],{"class":1157},[1143,1433,1164],{"class":1149},[1143,1435,1168],{"class":1167},[1143,1437,1172],{"class":1171},[1143,1439,1168],{"class":1167},[1143,1441,1177],{"class":1149},[1143,1443,1444,1446,1449,1451,1453,1455,1457,1460,1462],{"class":1145,"line":1180},[1143,1445,1184],{"class":1183},[1143,1447,1448],{"class":1187}," websiteConfig",[1143,1450,1192],{"class":1191},[1143,1452,1196],{"class":1195},[1143,1454,1200],{"class":1199},[1143,1456,1203],{"class":1167},[1143,1458,1459],{"class":1171},"config",[1143,1461,1203],{"class":1167},[1143,1463,1464],{"class":1199},")\n",[1143,1466,1467],{"class":1145,"line":1250},[1143,1468,1264],{"emptyLinePlaceholder":1263},[1143,1470,1471,1475,1478,1480,1483,1485,1487],{"class":1145,"line":1260},[1143,1472,1474],{"class":1473},"szyBz","await",[1143,1476,1477],{"class":1195}," callOnce",[1143,1479,1200],{"class":1199},[1143,1481,1482],{"class":1183},"async",[1143,1484,1214],{"class":1149},[1143,1486,1217],{"class":1183},[1143,1488,1489],{"class":1149}," {\n",[1143,1491,1492,1495,1497,1500,1502,1505,1508,1511,1513,1516,1518],{"class":1145,"line":1267},[1143,1493,1494],{"class":1199},"  websiteConfig",[1143,1496,1223],{"class":1149},[1143,1498,1499],{"class":1199},"value",[1143,1501,1192],{"class":1191},[1143,1503,1504],{"class":1473}," await",[1143,1506,1507],{"class":1195}," $fetch",[1143,1509,1200],{"class":1510},"sOtFm",[1143,1512,1203],{"class":1167},[1143,1514,1515],{"class":1171},"https:\u002F\u002Fmy-cms.com\u002Fapi\u002Fwebsite-config",[1143,1517,1203],{"class":1167},[1143,1519,1464],{"class":1510},[1143,1521,1522,1525],{"class":1145,"line":1277},[1143,1523,1524],{"class":1149},"}",[1143,1526,1464],{"class":1199},[1143,1528,1529,1531,1533],{"class":1145,"line":1288},[1143,1530,1253],{"class":1149},[1143,1532,1154],{"class":1153},[1143,1534,1177],{"class":1149},[1107,1536,1537],{},[1024,1538,1539,1540,1548],{},"这类似于 Nuxt 2 中的 ",[1028,1541,1544,1547],{"href":1542,"rel":1543},"https:\u002F\u002Fv2.nuxt.com\u002Fdocs\u002Fdirectory-structure\u002Fstore\u002F#the-nuxtserverinit-action",[1045],[1031,1545,1546],{},"nuxtServerInit"," action","，它允许在渲染页面之前在服务端填充 store 的初始状态。",[1067,1550,1551,1555,1563,1578,1912,1916,2888],{"to":564},[1121,1552,1554],{"id":1553},"配合-pinia-使用usage-with-pinia","配合 Pinia 使用（Usage with Pinia）",[1024,1556,1557,1558,1562],{},"在这个示例中，我们利用 ",[1028,1559,1561],{"href":1560},"\u002Fmodules\u002Fpinia","Pinia module"," 创建一个全局 store 并在应用中使用它。",[1056,1564,1565],{},[1024,1566,1567,1568,1571,1572,1577],{},"请确保使用 ",[1031,1569,1570],{},"npx nuxt module add pinia"," 安装 Pinia 模块，或按照",[1028,1573,1576],{"href":1574,"rel":1575},"https:\u002F\u002Fpinia.vuejs.org\u002Fssr\u002Fnuxt.html#Installation",[1045],"模块的安装步骤","操作。",[1579,1580,1581,1774],"code-group",{},[1133,1582,1586],{"className":1583,"code":1584,"filename":1585,"language":1172,"meta":354,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","export const useWebsiteStore = defineStore('websiteStore', {\n  state: () => ({\n    name: '',\n    description: '',\n  }),\n  actions: {\n    async fetch () {\n      const infos = await $fetch('https:\u002F\u002Fapi.nuxt.com\u002Fmodules\u002Fpinia')\n\n      this.name = infos.name\n      this.description = infos.description\n    },\n  },\n})\n","app\u002Fstores\u002Fwebsite.ts",[1031,1587,1588,1617,1635,1648,1659,1669,1678,1691,1716,1720,1740,1758,1763,1768],{"__ignoreMap":354},[1143,1589,1590,1593,1596,1599,1601,1604,1606,1608,1611,1613,1615],{"class":1145,"line":1146},[1143,1591,1592],{"class":1473},"export",[1143,1594,1595],{"class":1183}," const",[1143,1597,1598],{"class":1187}," useWebsiteStore",[1143,1600,1192],{"class":1191},[1143,1602,1603],{"class":1195}," defineStore",[1143,1605,1200],{"class":1199},[1143,1607,1203],{"class":1167},[1143,1609,1610],{"class":1171},"websiteStore",[1143,1612,1203],{"class":1167},[1143,1614,1211],{"class":1149},[1143,1616,1489],{"class":1149},[1143,1618,1619,1622,1625,1627,1629,1632],{"class":1145,"line":1180},[1143,1620,1621],{"class":1195},"  state",[1143,1623,1624],{"class":1149},":",[1143,1626,1214],{"class":1149},[1143,1628,1217],{"class":1183},[1143,1630,1631],{"class":1199}," (",[1143,1633,1634],{"class":1149},"{\n",[1143,1636,1637,1640,1642,1645],{"class":1145,"line":1250},[1143,1638,1639],{"class":1510},"    name",[1143,1641,1624],{"class":1149},[1143,1643,1644],{"class":1167}," ''",[1143,1646,1647],{"class":1149},",\n",[1143,1649,1650,1653,1655,1657],{"class":1145,"line":1260},[1143,1651,1652],{"class":1510},"    description",[1143,1654,1624],{"class":1149},[1143,1656,1644],{"class":1167},[1143,1658,1647],{"class":1149},[1143,1660,1661,1664,1667],{"class":1145,"line":1267},[1143,1662,1663],{"class":1149},"  }",[1143,1665,1666],{"class":1199},")",[1143,1668,1647],{"class":1149},[1143,1670,1671,1674,1676],{"class":1145,"line":1277},[1143,1672,1673],{"class":1510},"  actions",[1143,1675,1624],{"class":1149},[1143,1677,1489],{"class":1149},[1143,1679,1680,1683,1687,1689],{"class":1145,"line":1288},[1143,1681,1682],{"class":1183},"    async",[1143,1684,1686],{"class":1685},"syA7L"," fetch",[1143,1688,1214],{"class":1149},[1143,1690,1489],{"class":1149},[1143,1692,1693,1696,1699,1701,1703,1705,1707,1709,1712,1714],{"class":1145,"line":1294},[1143,1694,1695],{"class":1183},"      const",[1143,1697,1698],{"class":1187}," infos",[1143,1700,1192],{"class":1191},[1143,1702,1504],{"class":1473},[1143,1704,1507],{"class":1195},[1143,1706,1200],{"class":1510},[1143,1708,1203],{"class":1167},[1143,1710,1711],{"class":1171},"https:\u002F\u002Fapi.nuxt.com\u002Fmodules\u002Fpinia",[1143,1713,1203],{"class":1167},[1143,1715,1464],{"class":1510},[1143,1717,1718],{"class":1145,"line":1317},[1143,1719,1264],{"emptyLinePlaceholder":1263},[1143,1721,1722,1726,1728,1731,1733,1735,1737],{"class":1145,"line":1323},[1143,1723,1725],{"class":1724},"s0q4w","      this",[1143,1727,1223],{"class":1149},[1143,1729,1730],{"class":1199},"name",[1143,1732,1192],{"class":1191},[1143,1734,1698],{"class":1199},[1143,1736,1223],{"class":1149},[1143,1738,1739],{"class":1199},"name\n",[1143,1741,1742,1744,1746,1749,1751,1753,1755],{"class":1145,"line":1333},[1143,1743,1725],{"class":1724},[1143,1745,1223],{"class":1149},[1143,1747,1748],{"class":1199},"description",[1143,1750,1192],{"class":1191},[1143,1752,1698],{"class":1199},[1143,1754,1223],{"class":1149},[1143,1756,1757],{"class":1199},"description\n",[1143,1759,1760],{"class":1145,"line":1353},[1143,1761,1762],{"class":1149},"    },\n",[1143,1764,1765],{"class":1145,"line":1359},[1143,1766,1767],{"class":1149},"  },\n",[1143,1769,1770,1772],{"class":1145,"line":1368},[1143,1771,1524],{"class":1149},[1143,1773,1464],{"class":1199},[1133,1775,1777],{"className":1135,"code":1776,"filename":1137,"language":1138,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst website = useWebsiteStore()\n\nawait callOnce(website.fetch)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cmain>\n    \u003Ch1>{{ website.name }}\u003C\u002Fh1>\n    \u003Cp>{{ website.description }}\u003C\u002Fp>\n  \u003C\u002Fmain>\n\u003C\u002Ftemplate>\n",[1031,1778,1779,1799,1813,1817,1831,1839,1843,1851,1860,1879,1896,1904],{"__ignoreMap":354},[1143,1780,1781,1783,1785,1787,1789,1791,1793,1795,1797],{"class":1145,"line":1146},[1143,1782,1150],{"class":1149},[1143,1784,1154],{"class":1153},[1143,1786,1158],{"class":1157},[1143,1788,1161],{"class":1157},[1143,1790,1164],{"class":1149},[1143,1792,1168],{"class":1167},[1143,1794,1172],{"class":1171},[1143,1796,1168],{"class":1167},[1143,1798,1177],{"class":1149},[1143,1800,1801,1803,1806,1808,1810],{"class":1145,"line":1180},[1143,1802,1184],{"class":1183},[1143,1804,1805],{"class":1187}," website",[1143,1807,1192],{"class":1191},[1143,1809,1598],{"class":1195},[1143,1811,1812],{"class":1199},"()\n",[1143,1814,1815],{"class":1145,"line":1250},[1143,1816,1264],{"emptyLinePlaceholder":1263},[1143,1818,1819,1821,1823,1826,1828],{"class":1145,"line":1260},[1143,1820,1474],{"class":1473},[1143,1822,1477],{"class":1195},[1143,1824,1825],{"class":1199},"(website",[1143,1827,1223],{"class":1149},[1143,1829,1830],{"class":1199},"fetch)\n",[1143,1832,1833,1835,1837],{"class":1145,"line":1267},[1143,1834,1253],{"class":1149},[1143,1836,1154],{"class":1153},[1143,1838,1177],{"class":1149},[1143,1840,1841],{"class":1145,"line":1277},[1143,1842,1264],{"emptyLinePlaceholder":1263},[1143,1844,1845,1847,1849],{"class":1145,"line":1288},[1143,1846,1150],{"class":1149},[1143,1848,1272],{"class":1153},[1143,1850,1177],{"class":1149},[1143,1852,1853,1855,1858],{"class":1145,"line":1294},[1143,1854,1280],{"class":1149},[1143,1856,1857],{"class":1153},"main",[1143,1859,1177],{"class":1149},[1143,1861,1862,1864,1867,1870,1873,1875,1877],{"class":1145,"line":1317},[1143,1863,1297],{"class":1149},[1143,1865,1866],{"class":1153},"h1",[1143,1868,1869],{"class":1149},">",[1143,1871,1872],{"class":1199},"{{ website.name }}",[1143,1874,1253],{"class":1149},[1143,1876,1866],{"class":1153},[1143,1878,1177],{"class":1149},[1143,1880,1881,1883,1885,1887,1890,1892,1894],{"class":1145,"line":1323},[1143,1882,1297],{"class":1149},[1143,1884,1024],{"class":1153},[1143,1886,1869],{"class":1149},[1143,1888,1889],{"class":1199},"{{ website.description }}",[1143,1891,1253],{"class":1149},[1143,1893,1024],{"class":1153},[1143,1895,1177],{"class":1149},[1143,1897,1898,1900,1902],{"class":1145,"line":1333},[1143,1899,1371],{"class":1149},[1143,1901,1857],{"class":1153},[1143,1903,1177],{"class":1149},[1143,1905,1906,1908,1910],{"class":1145,"line":1353},[1143,1907,1253],{"class":1149},[1143,1909,1272],{"class":1153},[1143,1911,1177],{"class":1149},[1076,1913,1915],{"id":1914},"进阶用法advanced-usage","进阶用法（Advanced Usage）",[1579,1917,1918,2585],{},[1133,1919,1922],{"className":1583,"code":1920,"filename":1921,"language":1172,"meta":354,"style":354},"import type { Ref } from 'vue'\n\nexport const useLocale = () => {\n  return useState\u003Cstring>('locale', () => useDefaultLocale().value)\n}\n\nexport const useDefaultLocale = (fallback = 'en-US') => {\n  const locale = ref(fallback)\n  if (import.meta.server) {\n    const reqLocale = useRequestHeaders()['accept-language']?.split(',')[0]\n    if (reqLocale) {\n      locale.value = reqLocale\n    }\n  } else if (import.meta.client) {\n    const navLang = navigator.language\n    if (navLang) {\n      locale.value = navLang\n    }\n  }\n  return locale\n}\n\nexport const useLocales = () => {\n  const locale = useLocale()\n  const locales = ref([\n    'en-US',\n    'en-GB',\n    \u002F\u002F ...,\n    'ja-JP-u-ca-japanese',\n  ])\n  if (!locales.value.includes(locale.value)) {\n    locales.value.unshift(locale.value)\n  }\n  return locales\n}\n\nexport const useLocaleDate = (date: Ref\u003CDate> | Date, locale = useLocale()) => {\n  return computed(() => new Intl.DateTimeFormat(locale.value, { dateStyle: 'full' }).format(unref(date)))\n}\n","app\u002Fcomposables\u002Flocale.ts",[1031,1923,1924,1952,1956,1974,2016,2021,2025,2056,2075,2098,2147,2161,2175,2180,2207,2224,2238,2252,2257,2263,2271,2276,2281,2299,2312,2327,2339,2351,2358,2370,2376,2411,2436,2441,2449,2454,2459,2510,2580],{"__ignoreMap":354},[1143,1925,1926,1929,1932,1935,1938,1941,1944,1947,1949],{"class":1145,"line":1146},[1143,1927,1928],{"class":1473},"import",[1143,1930,1931],{"class":1473}," type",[1143,1933,1934],{"class":1149}," {",[1143,1936,1937],{"class":1199}," Ref",[1143,1939,1940],{"class":1149}," }",[1143,1942,1943],{"class":1473}," from",[1143,1945,1946],{"class":1167}," '",[1143,1948,1138],{"class":1171},[1143,1950,1951],{"class":1167},"'\n",[1143,1953,1954],{"class":1145,"line":1180},[1143,1955,1264],{"emptyLinePlaceholder":1263},[1143,1957,1958,1960,1962,1966,1968,1970,1972],{"class":1145,"line":1250},[1143,1959,1592],{"class":1473},[1143,1961,1595],{"class":1183},[1143,1963,1965],{"class":1964},"s5Y2e"," useLocale",[1143,1967,1192],{"class":1191},[1143,1969,1214],{"class":1149},[1143,1971,1217],{"class":1183},[1143,1973,1489],{"class":1149},[1143,1975,1976,1979,1981,1983,1987,1989,1991,1993,1996,1998,2000,2002,2004,2007,2010,2012,2014],{"class":1145,"line":1260},[1143,1977,1978],{"class":1473},"  return",[1143,1980,1196],{"class":1195},[1143,1982,1150],{"class":1149},[1143,1984,1986],{"class":1985},"seQRr","string",[1143,1988,1869],{"class":1149},[1143,1990,1200],{"class":1510},[1143,1992,1203],{"class":1167},[1143,1994,1995],{"class":1171},"locale",[1143,1997,1203],{"class":1167},[1143,1999,1211],{"class":1149},[1143,2001,1214],{"class":1149},[1143,2003,1217],{"class":1183},[1143,2005,2006],{"class":1195}," useDefaultLocale",[1143,2008,2009],{"class":1510},"()",[1143,2011,1223],{"class":1149},[1143,2013,1499],{"class":1199},[1143,2015,1464],{"class":1510},[1143,2017,2018],{"class":1145,"line":1267},[1143,2019,2020],{"class":1149},"}\n",[1143,2022,2023],{"class":1145,"line":1277},[1143,2024,1264],{"emptyLinePlaceholder":1263},[1143,2026,2027,2029,2031,2033,2035,2037,2041,2043,2045,2048,2050,2052,2054],{"class":1145,"line":1288},[1143,2028,1592],{"class":1473},[1143,2030,1595],{"class":1183},[1143,2032,2006],{"class":1964},[1143,2034,1192],{"class":1191},[1143,2036,1631],{"class":1149},[1143,2038,2040],{"class":2039},"ssIVr","fallback",[1143,2042,1192],{"class":1191},[1143,2044,1946],{"class":1167},[1143,2046,2047],{"class":1171},"en-US",[1143,2049,1203],{"class":1167},[1143,2051,1666],{"class":1149},[1143,2053,1217],{"class":1183},[1143,2055,1489],{"class":1149},[1143,2057,2058,2061,2064,2066,2069,2071,2073],{"class":1145,"line":1294},[1143,2059,2060],{"class":1183},"  const",[1143,2062,2063],{"class":1187}," locale",[1143,2065,1192],{"class":1191},[1143,2067,2068],{"class":1195}," ref",[1143,2070,1200],{"class":1510},[1143,2072,2040],{"class":1199},[1143,2074,1464],{"class":1510},[1143,2076,2077,2080,2082,2084,2086,2089,2091,2093,2096],{"class":1145,"line":1317},[1143,2078,2079],{"class":1473},"  if",[1143,2081,1631],{"class":1510},[1143,2083,1928],{"class":1473},[1143,2085,1223],{"class":1149},[1143,2087,2088],{"class":1187},"meta",[1143,2090,1223],{"class":1149},[1143,2092,150],{"class":1199},[1143,2094,2095],{"class":1510},") ",[1143,2097,1634],{"class":1149},[1143,2099,2100,2103,2106,2108,2111,2114,2116,2119,2121,2124,2127,2130,2132,2134,2136,2138,2141,2144],{"class":1145,"line":1323},[1143,2101,2102],{"class":1183},"    const",[1143,2104,2105],{"class":1187}," reqLocale",[1143,2107,1192],{"class":1191},[1143,2109,2110],{"class":1195}," useRequestHeaders",[1143,2112,2113],{"class":1510},"()[",[1143,2115,1203],{"class":1167},[1143,2117,2118],{"class":1171},"accept-language",[1143,2120,1203],{"class":1167},[1143,2122,2123],{"class":1510},"]",[1143,2125,2126],{"class":1149},"?.",[1143,2128,2129],{"class":1195},"split",[1143,2131,1200],{"class":1510},[1143,2133,1203],{"class":1167},[1143,2135,1211],{"class":1171},[1143,2137,1203],{"class":1167},[1143,2139,2140],{"class":1510},")[",[1143,2142,2143],{"class":1243},"0",[1143,2145,2146],{"class":1510},"]\n",[1143,2148,2149,2152,2154,2157,2159],{"class":1145,"line":1333},[1143,2150,2151],{"class":1473},"    if",[1143,2153,1631],{"class":1510},[1143,2155,2156],{"class":1199},"reqLocale",[1143,2158,2095],{"class":1510},[1143,2160,1634],{"class":1149},[1143,2162,2163,2166,2168,2170,2172],{"class":1145,"line":1353},[1143,2164,2165],{"class":1199},"      locale",[1143,2167,1223],{"class":1149},[1143,2169,1499],{"class":1199},[1143,2171,1192],{"class":1191},[1143,2173,2174],{"class":1199}," reqLocale\n",[1143,2176,2177],{"class":1145,"line":1359},[1143,2178,2179],{"class":1149},"    }\n",[1143,2181,2182,2184,2187,2190,2192,2194,2196,2198,2200,2203,2205],{"class":1145,"line":1368},[1143,2183,1663],{"class":1149},[1143,2185,2186],{"class":1473}," else",[1143,2188,2189],{"class":1473}," if",[1143,2191,1631],{"class":1510},[1143,2193,1928],{"class":1473},[1143,2195,1223],{"class":1149},[1143,2197,2088],{"class":1187},[1143,2199,1223],{"class":1149},[1143,2201,2202],{"class":1199},"client",[1143,2204,2095],{"class":1510},[1143,2206,1634],{"class":1149},[1143,2208,2209,2211,2214,2216,2219,2221],{"class":1145,"line":1378},[1143,2210,2102],{"class":1183},[1143,2212,2213],{"class":1187}," navLang",[1143,2215,1192],{"class":1191},[1143,2217,2218],{"class":1199}," navigator",[1143,2220,1223],{"class":1149},[1143,2222,2223],{"class":1199},"language\n",[1143,2225,2227,2229,2231,2234,2236],{"class":1145,"line":2226},16,[1143,2228,2151],{"class":1473},[1143,2230,1631],{"class":1510},[1143,2232,2233],{"class":1199},"navLang",[1143,2235,2095],{"class":1510},[1143,2237,1634],{"class":1149},[1143,2239,2241,2243,2245,2247,2249],{"class":1145,"line":2240},17,[1143,2242,2165],{"class":1199},[1143,2244,1223],{"class":1149},[1143,2246,1499],{"class":1199},[1143,2248,1192],{"class":1191},[1143,2250,2251],{"class":1199}," navLang\n",[1143,2253,2255],{"class":1145,"line":2254},18,[1143,2256,2179],{"class":1149},[1143,2258,2260],{"class":1145,"line":2259},19,[1143,2261,2262],{"class":1149},"  }\n",[1143,2264,2266,2268],{"class":1145,"line":2265},20,[1143,2267,1978],{"class":1473},[1143,2269,2270],{"class":1199}," locale\n",[1143,2272,2274],{"class":1145,"line":2273},21,[1143,2275,2020],{"class":1149},[1143,2277,2279],{"class":1145,"line":2278},22,[1143,2280,1264],{"emptyLinePlaceholder":1263},[1143,2282,2284,2286,2288,2291,2293,2295,2297],{"class":1145,"line":2283},23,[1143,2285,1592],{"class":1473},[1143,2287,1595],{"class":1183},[1143,2289,2290],{"class":1964}," useLocales",[1143,2292,1192],{"class":1191},[1143,2294,1214],{"class":1149},[1143,2296,1217],{"class":1183},[1143,2298,1489],{"class":1149},[1143,2300,2302,2304,2306,2308,2310],{"class":1145,"line":2301},24,[1143,2303,2060],{"class":1183},[1143,2305,2063],{"class":1187},[1143,2307,1192],{"class":1191},[1143,2309,1965],{"class":1195},[1143,2311,1812],{"class":1510},[1143,2313,2315,2317,2320,2322,2324],{"class":1145,"line":2314},25,[1143,2316,2060],{"class":1183},[1143,2318,2319],{"class":1187}," locales",[1143,2321,1192],{"class":1191},[1143,2323,2068],{"class":1195},[1143,2325,2326],{"class":1510},"([\n",[1143,2328,2330,2333,2335,2337],{"class":1145,"line":2329},26,[1143,2331,2332],{"class":1167},"    '",[1143,2334,2047],{"class":1171},[1143,2336,1203],{"class":1167},[1143,2338,1647],{"class":1149},[1143,2340,2342,2344,2347,2349],{"class":1145,"line":2341},27,[1143,2343,2332],{"class":1167},[1143,2345,2346],{"class":1171},"en-GB",[1143,2348,1203],{"class":1167},[1143,2350,1647],{"class":1149},[1143,2352,2354],{"class":1145,"line":2353},28,[1143,2355,2357],{"class":2356},"sZqJ9","    \u002F\u002F ...,\n",[1143,2359,2361,2363,2366,2368],{"class":1145,"line":2360},29,[1143,2362,2332],{"class":1167},[1143,2364,2365],{"class":1171},"ja-JP-u-ca-japanese",[1143,2367,1203],{"class":1167},[1143,2369,1647],{"class":1149},[1143,2371,2373],{"class":1145,"line":2372},30,[1143,2374,2375],{"class":1510},"  ])\n",[1143,2377,2379,2381,2383,2386,2389,2391,2393,2395,2398,2400,2402,2404,2406,2409],{"class":1145,"line":2378},31,[1143,2380,2079],{"class":1473},[1143,2382,1631],{"class":1510},[1143,2384,2385],{"class":1191},"!",[1143,2387,2388],{"class":1199},"locales",[1143,2390,1223],{"class":1149},[1143,2392,1499],{"class":1199},[1143,2394,1223],{"class":1149},[1143,2396,2397],{"class":1195},"includes",[1143,2399,1200],{"class":1510},[1143,2401,1995],{"class":1199},[1143,2403,1223],{"class":1149},[1143,2405,1499],{"class":1199},[1143,2407,2408],{"class":1510},")) ",[1143,2410,1634],{"class":1149},[1143,2412,2414,2417,2419,2421,2423,2426,2428,2430,2432,2434],{"class":1145,"line":2413},32,[1143,2415,2416],{"class":1199},"    locales",[1143,2418,1223],{"class":1149},[1143,2420,1499],{"class":1199},[1143,2422,1223],{"class":1149},[1143,2424,2425],{"class":1195},"unshift",[1143,2427,1200],{"class":1510},[1143,2429,1995],{"class":1199},[1143,2431,1223],{"class":1149},[1143,2433,1499],{"class":1199},[1143,2435,1464],{"class":1510},[1143,2437,2439],{"class":1145,"line":2438},33,[1143,2440,2262],{"class":1149},[1143,2442,2444,2446],{"class":1145,"line":2443},34,[1143,2445,1978],{"class":1473},[1143,2447,2448],{"class":1199}," locales\n",[1143,2450,2452],{"class":1145,"line":2451},35,[1143,2453,2020],{"class":1149},[1143,2455,2457],{"class":1145,"line":2456},36,[1143,2458,1264],{"emptyLinePlaceholder":1263},[1143,2460,2462,2464,2466,2469,2471,2473,2476,2478,2481,2483,2486,2488,2491,2494,2496,2498,2500,2502,2504,2506,2508],{"class":1145,"line":2461},37,[1143,2463,1592],{"class":1473},[1143,2465,1595],{"class":1183},[1143,2467,2468],{"class":1964}," useLocaleDate",[1143,2470,1192],{"class":1191},[1143,2472,1631],{"class":1149},[1143,2474,2475],{"class":2039},"date",[1143,2477,1624],{"class":1191},[1143,2479,1937],{"class":2480},"sJK67",[1143,2482,1150],{"class":1149},[1143,2484,2485],{"class":2480},"Date",[1143,2487,1869],{"class":1149},[1143,2489,2490],{"class":1191}," |",[1143,2492,2493],{"class":2480}," Date",[1143,2495,1211],{"class":1149},[1143,2497,2063],{"class":2039},[1143,2499,1192],{"class":1191},[1143,2501,1965],{"class":1195},[1143,2503,2009],{"class":1199},[1143,2505,1666],{"class":1149},[1143,2507,1217],{"class":1183},[1143,2509,1489],{"class":1149},[1143,2511,2513,2515,2518,2520,2522,2524,2527,2530,2532,2535,2537,2539,2541,2543,2545,2547,2550,2552,2554,2557,2559,2561,2563,2565,2568,2570,2573,2575,2577],{"class":1145,"line":2512},38,[1143,2514,1978],{"class":1473},[1143,2516,2517],{"class":1195}," computed",[1143,2519,1200],{"class":1510},[1143,2521,2009],{"class":1149},[1143,2523,1217],{"class":1183},[1143,2525,2526],{"class":1191}," new",[1143,2528,2529],{"class":1199}," Intl",[1143,2531,1223],{"class":1149},[1143,2533,2534],{"class":1195},"DateTimeFormat",[1143,2536,1200],{"class":1510},[1143,2538,1995],{"class":1199},[1143,2540,1223],{"class":1149},[1143,2542,1499],{"class":1199},[1143,2544,1211],{"class":1149},[1143,2546,1934],{"class":1149},[1143,2548,2549],{"class":1510}," dateStyle",[1143,2551,1624],{"class":1149},[1143,2553,1946],{"class":1167},[1143,2555,2556],{"class":1171},"full",[1143,2558,1203],{"class":1167},[1143,2560,1940],{"class":1149},[1143,2562,1666],{"class":1510},[1143,2564,1223],{"class":1149},[1143,2566,2567],{"class":1195},"format",[1143,2569,1200],{"class":1510},[1143,2571,2572],{"class":1195},"unref",[1143,2574,1200],{"class":1510},[1143,2576,2475],{"class":1199},[1143,2578,2579],{"class":1510},")))\n",[1143,2581,2583],{"class":1145,"line":2582},39,[1143,2584,2020],{"class":1149},[1133,2586,2588],{"className":1135,"code":2587,"filename":1137,"language":1138,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst locales = useLocales()\nconst locale = useLocale()\nconst date = useLocaleDate(new Date('2016-10-26'))\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>Nuxt birthday\u003C\u002Fh1>\n    \u003Cp>{{ date }}\u003C\u002Fp>\n    \u003Clabel for=\"locale-chooser\">Preview a different locale\u003C\u002Flabel>\n    \u003Cselect\n      id=\"locale-chooser\"\n      v-model=\"locale\"\n    >\n      \u003Coption\n        v-for=\"loc of locales\"\n        :key=\"loc\"\n        :value=\"loc\"\n      >\n        {{ loc }}\n      \u003C\u002Foption>\n    \u003C\u002Fselect>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[1031,2589,2590,2610,2622,2634,2663,2671,2675,2683,2691,2708,2725,2755,2762,2776,2789,2794,2802,2816,2830,2843,2848,2853,2863,2872,2880],{"__ignoreMap":354},[1143,2591,2592,2594,2596,2598,2600,2602,2604,2606,2608],{"class":1145,"line":1146},[1143,2593,1150],{"class":1149},[1143,2595,1154],{"class":1153},[1143,2597,1158],{"class":1157},[1143,2599,1161],{"class":1157},[1143,2601,1164],{"class":1149},[1143,2603,1168],{"class":1167},[1143,2605,1172],{"class":1171},[1143,2607,1168],{"class":1167},[1143,2609,1177],{"class":1149},[1143,2611,2612,2614,2616,2618,2620],{"class":1145,"line":1180},[1143,2613,1184],{"class":1183},[1143,2615,2319],{"class":1187},[1143,2617,1192],{"class":1191},[1143,2619,2290],{"class":1195},[1143,2621,1812],{"class":1199},[1143,2623,2624,2626,2628,2630,2632],{"class":1145,"line":1250},[1143,2625,1184],{"class":1183},[1143,2627,2063],{"class":1187},[1143,2629,1192],{"class":1191},[1143,2631,1965],{"class":1195},[1143,2633,1812],{"class":1199},[1143,2635,2636,2638,2641,2643,2645,2647,2650,2652,2654,2656,2659,2661],{"class":1145,"line":1260},[1143,2637,1184],{"class":1183},[1143,2639,2640],{"class":1187}," date",[1143,2642,1192],{"class":1191},[1143,2644,2468],{"class":1195},[1143,2646,1200],{"class":1199},[1143,2648,2649],{"class":1191},"new",[1143,2651,2493],{"class":1195},[1143,2653,1200],{"class":1199},[1143,2655,1203],{"class":1167},[1143,2657,2658],{"class":1171},"2016-10-26",[1143,2660,1203],{"class":1167},[1143,2662,1247],{"class":1199},[1143,2664,2665,2667,2669],{"class":1145,"line":1267},[1143,2666,1253],{"class":1149},[1143,2668,1154],{"class":1153},[1143,2670,1177],{"class":1149},[1143,2672,2673],{"class":1145,"line":1277},[1143,2674,1264],{"emptyLinePlaceholder":1263},[1143,2676,2677,2679,2681],{"class":1145,"line":1288},[1143,2678,1150],{"class":1149},[1143,2680,1272],{"class":1153},[1143,2682,1177],{"class":1149},[1143,2684,2685,2687,2689],{"class":1145,"line":1294},[1143,2686,1280],{"class":1149},[1143,2688,1283],{"class":1153},[1143,2690,1177],{"class":1149},[1143,2692,2693,2695,2697,2699,2702,2704,2706],{"class":1145,"line":1317},[1143,2694,1297],{"class":1149},[1143,2696,1866],{"class":1153},[1143,2698,1869],{"class":1149},[1143,2700,2701],{"class":1199},"Nuxt birthday",[1143,2703,1253],{"class":1149},[1143,2705,1866],{"class":1153},[1143,2707,1177],{"class":1149},[1143,2709,2710,2712,2714,2716,2719,2721,2723],{"class":1145,"line":1323},[1143,2711,1297],{"class":1149},[1143,2713,1024],{"class":1153},[1143,2715,1869],{"class":1149},[1143,2717,2718],{"class":1199},"{{ date }}",[1143,2720,1253],{"class":1149},[1143,2722,1024],{"class":1153},[1143,2724,1177],{"class":1149},[1143,2726,2727,2729,2732,2735,2737,2739,2742,2744,2746,2749,2751,2753],{"class":1145,"line":1333},[1143,2728,1297],{"class":1149},[1143,2730,2731],{"class":1153},"label",[1143,2733,2734],{"class":1157}," for",[1143,2736,1164],{"class":1149},[1143,2738,1168],{"class":1167},[1143,2740,2741],{"class":1171},"locale-chooser",[1143,2743,1168],{"class":1167},[1143,2745,1869],{"class":1149},[1143,2747,2748],{"class":1199},"Preview a different locale",[1143,2750,1253],{"class":1149},[1143,2752,2731],{"class":1153},[1143,2754,1177],{"class":1149},[1143,2756,2757,2759],{"class":1145,"line":1353},[1143,2758,1297],{"class":1149},[1143,2760,2761],{"class":1153},"select\n",[1143,2763,2764,2767,2769,2771,2773],{"class":1145,"line":1359},[1143,2765,2766],{"class":1157},"      id",[1143,2768,1164],{"class":1149},[1143,2770,1168],{"class":1167},[1143,2772,2741],{"class":1171},[1143,2774,2775],{"class":1167},"\"\n",[1143,2777,2778,2781,2783,2785,2787],{"class":1145,"line":1368},[1143,2779,2780],{"class":1157},"      v-model",[1143,2782,1164],{"class":1149},[1143,2784,1168],{"class":1167},[1143,2786,1995],{"class":1171},[1143,2788,2775],{"class":1167},[1143,2790,2791],{"class":1145,"line":1378},[1143,2792,2793],{"class":1149},"    >\n",[1143,2795,2796,2799],{"class":1145,"line":2226},[1143,2797,2798],{"class":1149},"      \u003C",[1143,2800,2801],{"class":1153},"option\n",[1143,2803,2804,2807,2809,2811,2814],{"class":1145,"line":2240},[1143,2805,2806],{"class":1157},"        v-for",[1143,2808,1164],{"class":1149},[1143,2810,1168],{"class":1167},[1143,2812,2813],{"class":1171},"loc of locales",[1143,2815,2775],{"class":1167},[1143,2817,2818,2821,2823,2825,2828],{"class":1145,"line":2254},[1143,2819,2820],{"class":1157},"        :key",[1143,2822,1164],{"class":1149},[1143,2824,1168],{"class":1167},[1143,2826,2827],{"class":1171},"loc",[1143,2829,2775],{"class":1167},[1143,2831,2832,2835,2837,2839,2841],{"class":1145,"line":2259},[1143,2833,2834],{"class":1157},"        :value",[1143,2836,1164],{"class":1149},[1143,2838,1168],{"class":1167},[1143,2840,2827],{"class":1171},[1143,2842,2775],{"class":1167},[1143,2844,2845],{"class":1145,"line":2265},[1143,2846,2847],{"class":1149},"      >\n",[1143,2849,2850],{"class":1145,"line":2273},[1143,2851,2852],{"class":1199},"        {{ loc }}\n",[1143,2854,2855,2858,2861],{"class":1145,"line":2278},[1143,2856,2857],{"class":1149},"      \u003C\u002F",[1143,2859,2860],{"class":1153},"option",[1143,2862,1177],{"class":1149},[1143,2864,2865,2867,2870],{"class":1145,"line":2283},[1143,2866,1326],{"class":1149},[1143,2868,2869],{"class":1153},"select",[1143,2871,1177],{"class":1149},[1143,2873,2874,2876,2878],{"class":1145,"line":2301},[1143,2875,1371],{"class":1149},[1143,2877,1283],{"class":1153},[1143,2879,1177],{"class":1149},[1143,2881,2882,2884,2886],{"class":1145,"line":2314},[1143,2883,1253],{"class":1149},[1143,2885,1272],{"class":1153},[1143,2887,1177],{"class":1149},[1386,2889,2891,2895,2902,2955,3093],{"to":2890},"\u002Fdocs\u002Fexamples\u002Fadvanced\u002Flocale",[1076,2892,2894],{"id":2893},"共享状态shared-state","共享状态（Shared State）",[1024,2896,2897,2898,2901],{},"通过使用",[1028,2899,2900],{"href":93},"自动导入的 composables","，我们可以定义全局的、类型安全的状态，并在应用中导入它们。",[1133,2903,2906],{"className":1583,"code":2904,"filename":2905,"language":1172,"meta":1139,"style":354},"export const useColor = () => useState\u003Cstring>('color', () => 'pink')\n","composables\u002Fstates.ts",[1031,2907,2908],{"__ignoreMap":354},[1143,2909,2910,2912,2914,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2938,2940,2942,2944,2946,2948,2951,2953],{"class":1145,"line":1146},[1143,2911,1592],{"class":1473},[1143,2913,1595],{"class":1183},[1143,2915,2916],{"class":1964}," useColor",[1143,2918,1192],{"class":1191},[1143,2920,1214],{"class":1149},[1143,2922,1217],{"class":1183},[1143,2924,1196],{"class":1195},[1143,2926,1150],{"class":1149},[1143,2928,1986],{"class":1985},[1143,2930,1869],{"class":1149},[1143,2932,1200],{"class":1199},[1143,2934,1203],{"class":1167},[1143,2936,2937],{"class":1171},"color",[1143,2939,1203],{"class":1167},[1143,2941,1211],{"class":1149},[1143,2943,1214],{"class":1149},[1143,2945,1217],{"class":1183},[1143,2947,1946],{"class":1167},[1143,2949,2950],{"class":1171},"pink",[1143,2952,1203],{"class":1167},[1143,2954,1464],{"class":1199},[1133,2956,2958],{"className":1135,"code":2957,"filename":1137,"language":1138,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\n\u002F\u002F ---cut-start---\nconst useColor = () => useState\u003Cstring>('color', () => 'pink')\n\u002F\u002F ---cut-end---\nconst color = useColor() \u002F\u002F Same as useState('color')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cp>Current color: {{ color }}\u003C\u002Fp>\n\u003C\u002Ftemplate>\n",[1031,2959,2960,2980,2985,3027,3032,3048,3056,3060,3068,3085],{"__ignoreMap":354},[1143,2961,2962,2964,2966,2968,2970,2972,2974,2976,2978],{"class":1145,"line":1146},[1143,2963,1150],{"class":1149},[1143,2965,1154],{"class":1153},[1143,2967,1158],{"class":1157},[1143,2969,1161],{"class":1157},[1143,2971,1164],{"class":1149},[1143,2973,1168],{"class":1167},[1143,2975,1172],{"class":1171},[1143,2977,1168],{"class":1167},[1143,2979,1177],{"class":1149},[1143,2981,2982],{"class":1145,"line":1180},[1143,2983,2984],{"class":2356},"\u002F\u002F ---cut-start---\n",[1143,2986,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025],{"class":1145,"line":1250},[1143,2988,1184],{"class":1183},[1143,2990,2916],{"class":1964},[1143,2992,1192],{"class":1191},[1143,2994,1214],{"class":1149},[1143,2996,1217],{"class":1183},[1143,2998,1196],{"class":1195},[1143,3000,1150],{"class":1149},[1143,3002,1986],{"class":1985},[1143,3004,1869],{"class":1149},[1143,3006,1200],{"class":1199},[1143,3008,1203],{"class":1167},[1143,3010,2937],{"class":1171},[1143,3012,1203],{"class":1167},[1143,3014,1211],{"class":1149},[1143,3016,1214],{"class":1149},[1143,3018,1217],{"class":1183},[1143,3020,1946],{"class":1167},[1143,3022,2950],{"class":1171},[1143,3024,1203],{"class":1167},[1143,3026,1464],{"class":1199},[1143,3028,3029],{"class":1145,"line":1260},[1143,3030,3031],{"class":2356},"\u002F\u002F ---cut-end---\n",[1143,3033,3034,3036,3039,3041,3043,3045],{"class":1145,"line":1267},[1143,3035,1184],{"class":1183},[1143,3037,3038],{"class":1187}," color",[1143,3040,1192],{"class":1191},[1143,3042,2916],{"class":1195},[1143,3044,1237],{"class":1199},[1143,3046,3047],{"class":2356},"\u002F\u002F Same as useState('color')\n",[1143,3049,3050,3052,3054],{"class":1145,"line":1277},[1143,3051,1253],{"class":1149},[1143,3053,1154],{"class":1153},[1143,3055,1177],{"class":1149},[1143,3057,3058],{"class":1145,"line":1288},[1143,3059,1264],{"emptyLinePlaceholder":1263},[1143,3061,3062,3064,3066],{"class":1145,"line":1294},[1143,3063,1150],{"class":1149},[1143,3065,1272],{"class":1153},[1143,3067,1177],{"class":1149},[1143,3069,3070,3072,3074,3076,3079,3081,3083],{"class":1145,"line":1317},[1143,3071,1280],{"class":1149},[1143,3073,1024],{"class":1153},[1143,3075,1869],{"class":1149},[1143,3077,3078],{"class":1199},"Current color: {{ color }}",[1143,3080,1253],{"class":1149},[1143,3082,1024],{"class":1153},[1143,3084,1177],{"class":1149},[1143,3086,3087,3089,3091],{"class":1145,"line":1323},[1143,3088,1253],{"class":1149},[1143,3090,1272],{"class":1153},[1143,3092,1177],{"class":1149},[1051,3094,3097,3101,3113,3116],{"title":3095,"video-id":3096},"观看 Daniel Roe 关于如何处理 Nuxt 中的全局状态与 SSR 的视频","dZSNW07sO-A",[1076,3098,3100],{"id":3099},"使用第三方库using-third-party-libraries","使用第三方库（Using Third-Party Libraries）",[1024,3102,3103,3104,3108,3109,1097],{},"Nuxt ",[3105,3106,3107],"strong",{},"曾经依赖"," Vuex 库来提供全局状态管理。如果你正在从 Nuxt 2 迁移，请前往",[1028,3110,3112],{"href":3111},"\u002Fdocs\u002Fmigration\u002Fconfiguration#vuex","迁移指南",[1024,3114,3115],{},"Nuxt 对状态管理没有固定的主张，因此请自由选择适合你需求的方案。有多个与最流行的状态管理库的集成，包括：",[3117,3118,3119,3126,3133],"ul",{},[3120,3121,3122,3125],"li",{},[1028,3123,3124],{"href":1560},"Pinia"," - Vue 官方推荐",[3120,3127,3128,3132],{},[1028,3129,3131],{"href":3130},"\u002Fmodules\u002Fharlem","Harlem"," - 不可变全局状态管理",[3120,3134,3135,3139],{},[1028,3136,3138],{"href":3137},"\u002Fmodules\u002Fxstate","XState"," - 状态机方法，附带可视化和测试状态逻辑的工具",[3141,3142,3143],"style",{},"html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .s6g6u, html code.shiki .s6g6u{--shiki-light:#E53935;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sXjFp, html code.shiki .sXjFp{--shiki-light:#9C3EDA;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .s0jeK, html code.shiki .s0jeK{--shiki-light:#39ADB5;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .s-Aze, html code.shiki .s-Aze{--shiki-light:#91B859;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .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 .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 .sOUxV, html code.shiki .sOUxV{--shiki-light:#F76D47;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szyBz, html code.shiki .szyBz{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .s0q4w, html code.shiki .s0q4w{--shiki-light:#39ADB5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .s5Y2e, html code.shiki .s5Y2e{--shiki-light:#90A4AE;--shiki-default:#B392F0;--shiki-dark:#BABED8}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}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 .sZqJ9, html code.shiki .sZqJ9{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}",{"title":354,"searchDepth":1250,"depth":1250,"links":3145},[3146,3147],{"id":1078,"depth":1180,"text":1079},{"id":1118,"depth":1180,"text":1119,"children":3148},[3149],{"id":1123,"depth":1250,"text":1124},"md",{},"[object Object]",{"title":46,"description":47},"docs\u002F1.getting-started\u002F11.state-management","vbl771z96FOOybIGioLWkzMVdAiSVKudexOf8YTjC-E",1785179851161]