[{"data":1,"prerenderedAt":4041},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fgetting-started\u002Fseo-meta":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":34,"body":1020,"description":35,"extension":4035,"meta":4036,"navigation":4037,"path":33,"seo":4038,"stem":4039,"__hash__":4040},"docs\u002Fdocs\u002F1.getting-started\u002F08.seo-meta.md",{"type":1021,"value":1022,"toc":4014},"minimark",[1023,1035,1040,1056,1069,1072,1277,1499,1507,1512,1515,1536,1539,1623,1628,1635,1817,1830,1835,1842,1852,1992,1995,1999,2007,2039,2046,2291,2300,2313,2317,2329,2517,2525,2529,2533,2536,2855,2859,2866,2875,2885,2988,3004,3008,3020,3160,3164,3175,3178,3285,3289,3295,3312,3315,3378,3381,3506,4010],[1024,1025,1026,1027,1034],"p",{},"Nuxt 的 head 标签管理由 ",[1028,1029,1033],"a",{"href":1030,"rel":1031},"https:\u002F\u002Funhead.unjs.io",[1032],"nofollow","Unhead"," 提供支持。它提供了合理的默认值、多个强大的 composables 以及大量配置选项，用于管理你的应用的 head 和 SEO meta 标签。",[1036,1037,1039],"h2",{"id":1038},"nuxt-配置nuxt-config","Nuxt 配置（Nuxt Config）",[1024,1041,1042,1043,1048,1049,1055],{},"在 ",[1028,1044,1045],{"href":173},[1046,1047,174],"code",{}," 中提供 ",[1028,1050,1052],{"href":1051},"\u002Fdocs\u002Fapi\u002Fnuxt-config#head",[1046,1053,1054],{},"app.head"," 属性，可以静态地自定义整个应用的 head。",[1057,1058,1059],"important",{},[1024,1060,1061,1062,1064,1065,1068],{},"这种方式不允许你提供响应式数据。我们建议在 ",[1046,1063,118],{}," 中使用 ",[1046,1066,1067],{},"useHead()","。",[1024,1070,1071],{},"将那些不会发生变化的标签（例如你的站点默认标题、语言和 favicon）设置在这里是一个好习惯。",[1073,1074,1079],"pre",{"className":1075,"code":1076,"filename":174,"language":1077,"meta":1078,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","export default defineNuxtConfig({\n  app: {\n    head: {\n      title: 'Nuxt', \u002F\u002F default fallback title\n      htmlAttrs: {\n        lang: 'en',\n      },\n      link: [\n        { rel: 'icon', type: 'image\u002Fx-icon', href: '\u002Ffavicon.ico' },\n      ],\n    },\n  },\n})\n","ts","twoslash",[1046,1080,1081,1105,1118,1128,1154,1164,1182,1188,1199,1248,1256,1262,1268],{"__ignoreMap":354},[1082,1083,1086,1090,1093,1097,1101],"span",{"class":1084,"line":1085},"line",1,[1082,1087,1089],{"class":1088},"szyBz","export",[1082,1091,1092],{"class":1088}," default",[1082,1094,1096],{"class":1095},"srJn9"," defineNuxtConfig",[1082,1098,1100],{"class":1099},"smVNa","(",[1082,1102,1104],{"class":1103},"sF54B","{\n",[1082,1106,1108,1112,1115],{"class":1084,"line":1107},2,[1082,1109,1111],{"class":1110},"sOtFm","  app",[1082,1113,1114],{"class":1103},":",[1082,1116,1117],{"class":1103}," {\n",[1082,1119,1121,1124,1126],{"class":1084,"line":1120},3,[1082,1122,1123],{"class":1110},"    head",[1082,1125,1114],{"class":1103},[1082,1127,1117],{"class":1103},[1082,1129,1131,1134,1136,1140,1144,1147,1150],{"class":1084,"line":1130},4,[1082,1132,1133],{"class":1110},"      title",[1082,1135,1114],{"class":1103},[1082,1137,1139],{"class":1138},"s0jeK"," '",[1082,1141,1143],{"class":1142},"s-Aze","Nuxt",[1082,1145,1146],{"class":1138},"'",[1082,1148,1149],{"class":1103},",",[1082,1151,1153],{"class":1152},"sZqJ9"," \u002F\u002F default fallback title\n",[1082,1155,1157,1160,1162],{"class":1084,"line":1156},5,[1082,1158,1159],{"class":1110},"      htmlAttrs",[1082,1161,1114],{"class":1103},[1082,1163,1117],{"class":1103},[1082,1165,1167,1170,1172,1174,1177,1179],{"class":1084,"line":1166},6,[1082,1168,1169],{"class":1110},"        lang",[1082,1171,1114],{"class":1103},[1082,1173,1139],{"class":1138},[1082,1175,1176],{"class":1142},"en",[1082,1178,1146],{"class":1138},[1082,1180,1181],{"class":1103},",\n",[1082,1183,1185],{"class":1084,"line":1184},7,[1082,1186,1187],{"class":1103},"      },\n",[1082,1189,1191,1194,1196],{"class":1084,"line":1190},8,[1082,1192,1193],{"class":1110},"      link",[1082,1195,1114],{"class":1103},[1082,1197,1198],{"class":1099}," [\n",[1082,1200,1202,1205,1208,1210,1212,1215,1217,1219,1222,1224,1226,1229,1231,1233,1236,1238,1240,1243,1245],{"class":1084,"line":1201},9,[1082,1203,1204],{"class":1103},"        {",[1082,1206,1207],{"class":1110}," rel",[1082,1209,1114],{"class":1103},[1082,1211,1139],{"class":1138},[1082,1213,1214],{"class":1142},"icon",[1082,1216,1146],{"class":1138},[1082,1218,1149],{"class":1103},[1082,1220,1221],{"class":1110}," type",[1082,1223,1114],{"class":1103},[1082,1225,1139],{"class":1138},[1082,1227,1228],{"class":1142},"image\u002Fx-icon",[1082,1230,1146],{"class":1138},[1082,1232,1149],{"class":1103},[1082,1234,1235],{"class":1110}," href",[1082,1237,1114],{"class":1103},[1082,1239,1139],{"class":1138},[1082,1241,1242],{"class":1142},"\u002Ffavicon.ico",[1082,1244,1146],{"class":1138},[1082,1246,1247],{"class":1103}," },\n",[1082,1249,1251,1254],{"class":1084,"line":1250},10,[1082,1252,1253],{"class":1099},"      ]",[1082,1255,1181],{"class":1103},[1082,1257,1259],{"class":1084,"line":1258},11,[1082,1260,1261],{"class":1103},"    },\n",[1082,1263,1265],{"class":1084,"line":1264},12,[1082,1266,1267],{"class":1103},"  },\n",[1082,1269,1271,1274],{"class":1084,"line":1270},13,[1082,1272,1273],{"class":1103},"}",[1082,1275,1276],{"class":1099},")\n",[1278,1279,1280,1334],"note",{},[1024,1281,1282,1283,1289,1290,1295,1296,1299,1300,1303,1304,1307,1308,1311,1312,1314,1315,1319,1320,1322,1323,1064,1325,1329,1330,1333],{},"当你设置 ",[1028,1284,1286],{"href":1285},"\u002Fdocs\u002Fapi\u002Fnuxt-config#cdnurl",[1046,1287,1288],{},"app.cdnURL"," 时，",[1028,1291,1292],{"href":145},[1046,1293,1294],{},"public\u002F"," 目录中的资源（包括 ",[1046,1297,1298],{},"favicon.ico","）会从这个 CDN 提供。Nuxt 会针对 ",[1046,1301,1302],{},"cdnURL"," 解析公共资源，并回退到 ",[1046,1305,1306],{},"app.baseURL","。但是，像上面 ",[1046,1309,1310],{},"href: '\u002Ffavicon.ico'"," 这样的静态 ",[1046,1313,1054],{}," link 是一个字面量路径，",[1316,1317,1318],"strong",{},"不会","针对 ",[1046,1321,1302],{}," 进行解析。要将 favicon 指向解析后的位置，请在 ",[1046,1324,118],{},[1028,1326,1327],{"href":456},[1046,1328,1067],{}," 结合运行时配置来构建 ",[1046,1331,1332],{},"href","：",[1073,1335,1340],{"className":1336,"code":1337,"filename":1338,"language":1339,"meta":354,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { cdnURL, baseURL } = useRuntimeConfig().app\nuseHead({\n  link: [\n    { rel: 'icon', type: 'image\u002Fx-icon', href: `${cdnURL || baseURL}favicon.ico` },\n  ],\n})\n\u003C\u002Fscript>\n","app\u002Fapp.vue","vue",[1046,1341,1342,1371,1408,1416,1425,1477,1484,1490],{"__ignoreMap":354},[1082,1343,1344,1347,1351,1355,1358,1361,1364,1366,1368],{"class":1084,"line":1085},[1082,1345,1346],{"class":1103},"\u003C",[1082,1348,1350],{"class":1349},"s6g6u","script",[1082,1352,1354],{"class":1353},"sXjFp"," setup",[1082,1356,1357],{"class":1353}," lang",[1082,1359,1360],{"class":1103},"=",[1082,1362,1363],{"class":1138},"\"",[1082,1365,1077],{"class":1142},[1082,1367,1363],{"class":1138},[1082,1369,1370],{"class":1103},">\n",[1082,1372,1373,1377,1380,1384,1386,1389,1392,1396,1399,1402,1405],{"class":1084,"line":1107},[1082,1374,1376],{"class":1375},"sV7Px","const",[1082,1378,1379],{"class":1103}," {",[1082,1381,1383],{"class":1382},"sJTDI"," cdnURL",[1082,1385,1149],{"class":1103},[1082,1387,1388],{"class":1382}," baseURL",[1082,1390,1391],{"class":1103}," }",[1082,1393,1395],{"class":1394},"sXPRQ"," =",[1082,1397,1398],{"class":1095}," useRuntimeConfig",[1082,1400,1401],{"class":1099},"()",[1082,1403,1404],{"class":1103},".",[1082,1406,1407],{"class":1099},"app\n",[1082,1409,1410,1412,1414],{"class":1084,"line":1120},[1082,1411,457],{"class":1095},[1082,1413,1100],{"class":1099},[1082,1415,1104],{"class":1103},[1082,1417,1418,1421,1423],{"class":1084,"line":1130},[1082,1419,1420],{"class":1110},"  link",[1082,1422,1114],{"class":1103},[1082,1424,1198],{"class":1099},[1082,1426,1427,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1461,1463,1466,1468,1470,1472,1475],{"class":1084,"line":1156},[1082,1428,1429],{"class":1103},"    {",[1082,1431,1207],{"class":1110},[1082,1433,1114],{"class":1103},[1082,1435,1139],{"class":1138},[1082,1437,1214],{"class":1142},[1082,1439,1146],{"class":1138},[1082,1441,1149],{"class":1103},[1082,1443,1221],{"class":1110},[1082,1445,1114],{"class":1103},[1082,1447,1139],{"class":1138},[1082,1449,1228],{"class":1142},[1082,1451,1146],{"class":1138},[1082,1453,1149],{"class":1103},[1082,1455,1235],{"class":1110},[1082,1457,1114],{"class":1103},[1082,1459,1460],{"class":1138}," `${",[1082,1462,1302],{"class":1099},[1082,1464,1465],{"class":1394}," ||",[1082,1467,1388],{"class":1099},[1082,1469,1273],{"class":1138},[1082,1471,1298],{"class":1142},[1082,1473,1474],{"class":1138},"`",[1082,1476,1247],{"class":1103},[1082,1478,1479,1482],{"class":1084,"line":1166},[1082,1480,1481],{"class":1099},"  ]",[1082,1483,1181],{"class":1103},[1082,1485,1486,1488],{"class":1084,"line":1184},[1082,1487,1273],{"class":1103},[1082,1489,1276],{"class":1099},[1082,1491,1492,1495,1497],{"class":1084,"line":1190},[1082,1493,1494],{"class":1103},"\u003C\u002F",[1082,1496,1350],{"class":1349},[1082,1498,1370],{"class":1103},[1024,1500,1501,1502,1506],{},"你也可以在下方 ",[1028,1503,1505],{"href":1504},"\u002Fdocs\u002Fgetting-started\u002Fseo-meta#types","Types"," 中提供列出的任意 key。",[1508,1509,1511],"h3",{"id":1510},"默认标签default-tags","默认标签（Default Tags）",[1024,1513,1514],{},"Nuxt 默认提供了一些标签，以确保你的网站开箱即可良好运行。",[1516,1517,1518,1528],"ul",{},[1519,1520,1521,1524,1525],"li",{},[1046,1522,1523],{},"viewport",": ",[1046,1526,1527],{},"width=device-width, initial-scale=1",[1519,1529,1530,1524,1533],{},[1046,1531,1532],{},"charset",[1046,1534,1535],{},"utf-8",[1024,1537,1538],{},"虽然大多数站点不需要覆盖这些默认值，但你可以使用带 key 的快捷方式来更新它们。",[1073,1540,1542],{"className":1075,"code":1541,"filename":174,"language":1077,"meta":1078,"style":354},"export default defineNuxtConfig({\n  app: {\n    head: {\n      \u002F\u002F update Nuxt defaults\n      charset: 'utf-16',\n      viewport: 'width=device-width, initial-scale=1, maximum-scale=1',\n    },\n  },\n})\n",[1046,1543,1544,1556,1564,1572,1577,1593,1609,1613,1617],{"__ignoreMap":354},[1082,1545,1546,1548,1550,1552,1554],{"class":1084,"line":1085},[1082,1547,1089],{"class":1088},[1082,1549,1092],{"class":1088},[1082,1551,1096],{"class":1095},[1082,1553,1100],{"class":1099},[1082,1555,1104],{"class":1103},[1082,1557,1558,1560,1562],{"class":1084,"line":1107},[1082,1559,1111],{"class":1110},[1082,1561,1114],{"class":1103},[1082,1563,1117],{"class":1103},[1082,1565,1566,1568,1570],{"class":1084,"line":1120},[1082,1567,1123],{"class":1110},[1082,1569,1114],{"class":1103},[1082,1571,1117],{"class":1103},[1082,1573,1574],{"class":1084,"line":1130},[1082,1575,1576],{"class":1152},"      \u002F\u002F update Nuxt defaults\n",[1082,1578,1579,1582,1584,1586,1589,1591],{"class":1084,"line":1156},[1082,1580,1581],{"class":1110},"      charset",[1082,1583,1114],{"class":1103},[1082,1585,1139],{"class":1138},[1082,1587,1588],{"class":1142},"utf-16",[1082,1590,1146],{"class":1138},[1082,1592,1181],{"class":1103},[1082,1594,1595,1598,1600,1602,1605,1607],{"class":1084,"line":1166},[1082,1596,1597],{"class":1110},"      viewport",[1082,1599,1114],{"class":1103},[1082,1601,1139],{"class":1138},[1082,1603,1604],{"class":1142},"width=device-width, initial-scale=1, maximum-scale=1",[1082,1606,1146],{"class":1138},[1082,1608,1181],{"class":1103},[1082,1610,1611],{"class":1084,"line":1184},[1082,1612,1261],{"class":1103},[1082,1614,1615],{"class":1084,"line":1190},[1082,1616,1267],{"class":1103},[1082,1618,1619,1621],{"class":1084,"line":1201},[1082,1620,1273],{"class":1103},[1082,1622,1276],{"class":1099},[1036,1624,1626],{"id":1625},"usehead",[1046,1627,457],{},[1024,1629,1630,1634],{},[1028,1631,1632],{"href":456},[1046,1633,457],{}," composable 函数支持响应式输入，让你可以编程式地管理你的 head 标签。",[1073,1636,1638],{"className":1336,"code":1637,"filename":1338,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  title: 'My App',\n  meta: [\n    { name: 'description', content: 'My amazing site.' },\n  ],\n  bodyAttrs: {\n    class: 'test',\n  },\n  script: [{ innerHTML: 'console.log(\\'Hello world\\')' }],\n})\n\u003C\u002Fscript>\n",[1046,1639,1640,1660,1668,1684,1693,1725,1731,1740,1756,1760,1803,1809],{"__ignoreMap":354},[1082,1641,1642,1644,1646,1648,1650,1652,1654,1656,1658],{"class":1084,"line":1085},[1082,1643,1346],{"class":1103},[1082,1645,1350],{"class":1349},[1082,1647,1354],{"class":1353},[1082,1649,1357],{"class":1353},[1082,1651,1360],{"class":1103},[1082,1653,1363],{"class":1138},[1082,1655,1077],{"class":1142},[1082,1657,1363],{"class":1138},[1082,1659,1370],{"class":1103},[1082,1661,1662,1664,1666],{"class":1084,"line":1107},[1082,1663,457],{"class":1095},[1082,1665,1100],{"class":1099},[1082,1667,1104],{"class":1103},[1082,1669,1670,1673,1675,1677,1680,1682],{"class":1084,"line":1120},[1082,1671,1672],{"class":1110},"  title",[1082,1674,1114],{"class":1103},[1082,1676,1139],{"class":1138},[1082,1678,1679],{"class":1142},"My App",[1082,1681,1146],{"class":1138},[1082,1683,1181],{"class":1103},[1082,1685,1686,1689,1691],{"class":1084,"line":1130},[1082,1687,1688],{"class":1110},"  meta",[1082,1690,1114],{"class":1103},[1082,1692,1198],{"class":1099},[1082,1694,1695,1697,1700,1702,1704,1707,1709,1711,1714,1716,1718,1721,1723],{"class":1084,"line":1156},[1082,1696,1429],{"class":1103},[1082,1698,1699],{"class":1110}," name",[1082,1701,1114],{"class":1103},[1082,1703,1139],{"class":1138},[1082,1705,1706],{"class":1142},"description",[1082,1708,1146],{"class":1138},[1082,1710,1149],{"class":1103},[1082,1712,1713],{"class":1110}," content",[1082,1715,1114],{"class":1103},[1082,1717,1139],{"class":1138},[1082,1719,1720],{"class":1142},"My amazing site.",[1082,1722,1146],{"class":1138},[1082,1724,1247],{"class":1103},[1082,1726,1727,1729],{"class":1084,"line":1166},[1082,1728,1481],{"class":1099},[1082,1730,1181],{"class":1103},[1082,1732,1733,1736,1738],{"class":1084,"line":1184},[1082,1734,1735],{"class":1110},"  bodyAttrs",[1082,1737,1114],{"class":1103},[1082,1739,1117],{"class":1103},[1082,1741,1742,1745,1747,1749,1752,1754],{"class":1084,"line":1190},[1082,1743,1744],{"class":1110},"    class",[1082,1746,1114],{"class":1103},[1082,1748,1139],{"class":1138},[1082,1750,1751],{"class":1142},"test",[1082,1753,1146],{"class":1138},[1082,1755,1181],{"class":1103},[1082,1757,1758],{"class":1084,"line":1201},[1082,1759,1267],{"class":1103},[1082,1761,1762,1765,1767,1770,1773,1776,1778,1780,1783,1786,1789,1791,1794,1796,1798,1801],{"class":1084,"line":1250},[1082,1763,1764],{"class":1110},"  script",[1082,1766,1114],{"class":1103},[1082,1768,1769],{"class":1099}," [",[1082,1771,1772],{"class":1103},"{",[1082,1774,1775],{"class":1110}," innerHTML",[1082,1777,1114],{"class":1103},[1082,1779,1139],{"class":1138},[1082,1781,1782],{"class":1142},"console.log(",[1082,1784,1785],{"class":1382},"\\'",[1082,1787,1788],{"class":1142},"Hello world",[1082,1790,1785],{"class":1382},[1082,1792,1793],{"class":1142},")",[1082,1795,1146],{"class":1138},[1082,1797,1391],{"class":1103},[1082,1799,1800],{"class":1099},"]",[1082,1802,1181],{"class":1103},[1082,1804,1805,1807],{"class":1084,"line":1258},[1082,1806,1273],{"class":1103},[1082,1808,1276],{"class":1099},[1082,1810,1811,1813,1815],{"class":1084,"line":1264},[1082,1812,1494],{"class":1103},[1082,1814,1350],{"class":1349},[1082,1816,1370],{"class":1103},[1024,1818,1819,1820,1824,1825,1829],{},"我们建议你了解一下 ",[1028,1821,1822],{"href":456},[1046,1823,457],{}," 和 ",[1028,1826,1827],{"href":460},[1046,1828,461],{}," 这两个 composables。",[1036,1831,1833],{"id":1832},"useseometa",[1046,1834,541],{},[1024,1836,1837,1841],{},[1028,1838,1839],{"href":540},[1046,1840,541],{}," composable 让你可以以对象的形式定义站点的 SEO meta 标签，并具备完整的类型安全。",[1024,1843,1844,1845,1848,1849,1068],{},"这有助于你避免拼写错误和常见错误，例如误用 ",[1046,1846,1847],{},"name"," 而非 ",[1046,1850,1851],{},"property",[1073,1853,1855],{"className":1336,"code":1854,"filename":1338,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseSeoMeta({\n  title: 'My Amazing Site',\n  ogTitle: 'My Amazing Site',\n  description: 'This is my amazing site, let me tell you all about it.',\n  ogDescription: 'This is my amazing site, let me tell you all about it.',\n  ogImage: 'https:\u002F\u002Fexample.com\u002Fimage.png',\n  twitterCard: 'summary_large_image',\n})\n\u003C\u002Fscript>\n",[1046,1856,1857,1877,1885,1900,1915,1931,1946,1962,1978,1984],{"__ignoreMap":354},[1082,1858,1859,1861,1863,1865,1867,1869,1871,1873,1875],{"class":1084,"line":1085},[1082,1860,1346],{"class":1103},[1082,1862,1350],{"class":1349},[1082,1864,1354],{"class":1353},[1082,1866,1357],{"class":1353},[1082,1868,1360],{"class":1103},[1082,1870,1363],{"class":1138},[1082,1872,1077],{"class":1142},[1082,1874,1363],{"class":1138},[1082,1876,1370],{"class":1103},[1082,1878,1879,1881,1883],{"class":1084,"line":1107},[1082,1880,541],{"class":1095},[1082,1882,1100],{"class":1099},[1082,1884,1104],{"class":1103},[1082,1886,1887,1889,1891,1893,1896,1898],{"class":1084,"line":1120},[1082,1888,1672],{"class":1110},[1082,1890,1114],{"class":1103},[1082,1892,1139],{"class":1138},[1082,1894,1895],{"class":1142},"My Amazing Site",[1082,1897,1146],{"class":1138},[1082,1899,1181],{"class":1103},[1082,1901,1902,1905,1907,1909,1911,1913],{"class":1084,"line":1130},[1082,1903,1904],{"class":1110},"  ogTitle",[1082,1906,1114],{"class":1103},[1082,1908,1139],{"class":1138},[1082,1910,1895],{"class":1142},[1082,1912,1146],{"class":1138},[1082,1914,1181],{"class":1103},[1082,1916,1917,1920,1922,1924,1927,1929],{"class":1084,"line":1156},[1082,1918,1919],{"class":1110},"  description",[1082,1921,1114],{"class":1103},[1082,1923,1139],{"class":1138},[1082,1925,1926],{"class":1142},"This is my amazing site, let me tell you all about it.",[1082,1928,1146],{"class":1138},[1082,1930,1181],{"class":1103},[1082,1932,1933,1936,1938,1940,1942,1944],{"class":1084,"line":1166},[1082,1934,1935],{"class":1110},"  ogDescription",[1082,1937,1114],{"class":1103},[1082,1939,1139],{"class":1138},[1082,1941,1926],{"class":1142},[1082,1943,1146],{"class":1138},[1082,1945,1181],{"class":1103},[1082,1947,1948,1951,1953,1955,1958,1960],{"class":1084,"line":1184},[1082,1949,1950],{"class":1110},"  ogImage",[1082,1952,1114],{"class":1103},[1082,1954,1139],{"class":1138},[1082,1956,1957],{"class":1142},"https:\u002F\u002Fexample.com\u002Fimage.png",[1082,1959,1146],{"class":1138},[1082,1961,1181],{"class":1103},[1082,1963,1964,1967,1969,1971,1974,1976],{"class":1084,"line":1190},[1082,1965,1966],{"class":1110},"  twitterCard",[1082,1968,1114],{"class":1103},[1082,1970,1139],{"class":1138},[1082,1972,1973],{"class":1142},"summary_large_image",[1082,1975,1146],{"class":1138},[1082,1977,1181],{"class":1103},[1082,1979,1980,1982],{"class":1084,"line":1201},[1082,1981,1273],{"class":1103},[1082,1983,1276],{"class":1099},[1082,1985,1986,1988,1990],{"class":1084,"line":1250},[1082,1987,1494],{"class":1103},[1082,1989,1350],{"class":1349},[1082,1991,1370],{"class":1103},[1993,1994],"read-more",{"to":540},[1036,1996,1998],{"id":1997},"组件components","组件（Components）",[1024,2000,2001,2002,2006],{},"虽然我们在所有场景下都推荐使用 ",[1028,2003,2004],{"href":456},[1046,2005,457],{},"，但你可能出于个人偏好更希望在模板中使用组件来定义 head 标签。",[1024,2008,2009,2010,2013,2014,2013,2017,2013,2020,2013,2023,2013,2026,2013,2029,2013,2032,1824,2035,2038],{},"Nuxt 为此提供了以下组件：",[1046,2011,2012],{},"\u003CTitle>","、",[1046,2015,2016],{},"\u003CBase>",[1046,2018,2019],{},"\u003CNoScript>",[1046,2021,2022],{},"\u003CStyle>",[1046,2024,2025],{},"\u003CMeta>",[1046,2027,2028],{},"\u003CLink>",[1046,2030,2031],{},"\u003CBody>",[1046,2033,2034],{},"\u003CHtml>",[1046,2036,2037],{},"\u003CHead>","。注意这些组件的首字母大写，以确保我们不会用到无效的原生 HTML 标签。",[1024,2040,2041,1824,2043,2045],{},[1046,2042,2037],{},[1046,2044,2031],{}," 可以接受嵌套的 meta 标签（出于美观考虑），但这不会影响嵌套 meta 标签在最终 HTML 中的渲染_位置_。",[1073,2047,2049],{"className":1336,"code":2048,"filename":1338,"language":1339,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst title = ref('Hello World')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CHead>\n      \u003CTitle>{{ title }}\u003C\u002FTitle>\n      \u003CMeta\n        name=\"description\"\n        :content=\"title\"\n      \u002F>\n      \u003CStyle>\n        body { background-color: green; }\n      \u003C\u002FStyle>\n    \u003C\u002FHead>\n\n    \u003Ch1>{{ title }}\u003C\u002Fh1>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[1046,2050,2051,2071,2094,2102,2108,2117,2127,2136,2156,2163,2177,2191,2196,2205,2229,2239,2249,2254,2272,2282],{"__ignoreMap":354},[1082,2052,2053,2055,2057,2059,2061,2063,2065,2067,2069],{"class":1084,"line":1085},[1082,2054,1346],{"class":1103},[1082,2056,1350],{"class":1349},[1082,2058,1354],{"class":1353},[1082,2060,1357],{"class":1353},[1082,2062,1360],{"class":1103},[1082,2064,1363],{"class":1138},[1082,2066,1077],{"class":1142},[1082,2068,1363],{"class":1138},[1082,2070,1370],{"class":1103},[1082,2072,2073,2075,2078,2080,2083,2085,2087,2090,2092],{"class":1084,"line":1107},[1082,2074,1376],{"class":1375},[1082,2076,2077],{"class":1382}," title",[1082,2079,1395],{"class":1394},[1082,2081,2082],{"class":1095}," ref",[1082,2084,1100],{"class":1099},[1082,2086,1146],{"class":1138},[1082,2088,2089],{"class":1142},"Hello World",[1082,2091,1146],{"class":1138},[1082,2093,1276],{"class":1099},[1082,2095,2096,2098,2100],{"class":1084,"line":1120},[1082,2097,1494],{"class":1103},[1082,2099,1350],{"class":1349},[1082,2101,1370],{"class":1103},[1082,2103,2104],{"class":1084,"line":1130},[1082,2105,2107],{"emptyLinePlaceholder":2106},true,"\n",[1082,2109,2110,2112,2115],{"class":1084,"line":1156},[1082,2111,1346],{"class":1103},[1082,2113,2114],{"class":1349},"template",[1082,2116,1370],{"class":1103},[1082,2118,2119,2122,2125],{"class":1084,"line":1166},[1082,2120,2121],{"class":1103},"  \u003C",[1082,2123,2124],{"class":1349},"div",[1082,2126,1370],{"class":1103},[1082,2128,2129,2132,2134],{"class":1084,"line":1184},[1082,2130,2131],{"class":1103},"    \u003C",[1082,2133,800],{"class":1349},[1082,2135,1370],{"class":1103},[1082,2137,2138,2141,2144,2147,2150,2152,2154],{"class":1084,"line":1190},[1082,2139,2140],{"class":1103},"      \u003C",[1082,2142,2143],{"class":1349},"Title",[1082,2145,2146],{"class":1103},">",[1082,2148,2149],{"class":1099},"{{ title }}",[1082,2151,1494],{"class":1103},[1082,2153,2143],{"class":1349},[1082,2155,1370],{"class":1103},[1082,2157,2158,2160],{"class":1084,"line":1201},[1082,2159,2140],{"class":1103},[1082,2161,2162],{"class":1349},"Meta\n",[1082,2164,2165,2168,2170,2172,2174],{"class":1084,"line":1250},[1082,2166,2167],{"class":1353},"        name",[1082,2169,1360],{"class":1103},[1082,2171,1363],{"class":1138},[1082,2173,1706],{"class":1142},[1082,2175,2176],{"class":1138},"\"\n",[1082,2178,2179,2182,2184,2186,2189],{"class":1084,"line":1258},[1082,2180,2181],{"class":1353},"        :content",[1082,2183,1360],{"class":1103},[1082,2185,1363],{"class":1138},[1082,2187,2188],{"class":1142},"title",[1082,2190,2176],{"class":1138},[1082,2192,2193],{"class":1084,"line":1264},[1082,2194,2195],{"class":1103},"      \u002F>\n",[1082,2197,2198,2200,2203],{"class":1084,"line":1270},[1082,2199,2140],{"class":1103},[1082,2201,2202],{"class":1349},"Style",[1082,2204,1370],{"class":1103},[1082,2206,2208,2212,2214,2218,2220,2223,2226],{"class":1084,"line":2207},14,[1082,2209,2211],{"class":2210},"sv6Pl","        body",[1082,2213,1379],{"class":1103},[1082,2215,2217],{"class":2216},"sETrE"," background-color",[1082,2219,1114],{"class":1103},[1082,2221,2222],{"class":1382}," green",[1082,2224,2225],{"class":1103},";",[1082,2227,2228],{"class":1103}," }\n",[1082,2230,2232,2235,2237],{"class":1084,"line":2231},15,[1082,2233,2234],{"class":1103},"      \u003C\u002F",[1082,2236,2202],{"class":1349},[1082,2238,1370],{"class":1103},[1082,2240,2242,2245,2247],{"class":1084,"line":2241},16,[1082,2243,2244],{"class":1103},"    \u003C\u002F",[1082,2246,800],{"class":1349},[1082,2248,1370],{"class":1103},[1082,2250,2252],{"class":1084,"line":2251},17,[1082,2253,2107],{"emptyLinePlaceholder":2106},[1082,2255,2257,2259,2262,2264,2266,2268,2270],{"class":1084,"line":2256},18,[1082,2258,2131],{"class":1103},[1082,2260,2261],{"class":1349},"h1",[1082,2263,2146],{"class":1103},[1082,2265,2149],{"class":1099},[1082,2267,1494],{"class":1103},[1082,2269,2261],{"class":1349},[1082,2271,1370],{"class":1103},[1082,2273,2275,2278,2280],{"class":1084,"line":2274},19,[1082,2276,2277],{"class":1103},"  \u003C\u002F",[1082,2279,2124],{"class":1349},[1082,2281,1370],{"class":1103},[1082,2283,2285,2287,2289],{"class":1084,"line":2284},20,[1082,2286,1494],{"class":1103},[1082,2288,2114],{"class":1349},[1082,2290,1370],{"class":1103},[1024,2292,2293,2294,2296,2297,2299],{},"建议将你的组件包裹在 ",[1046,2295,2037],{}," 或 ",[1046,2298,2034],{}," 组件中，这样标签的去重会更直观。",[2301,2302,2303],"warning",{},[1024,2304,2305,2306,2308,2309,2312],{},"如果你需要在客户端与服务端边界之间复制标签，请在 ",[1046,2307,2037],{}," 组件上应用一个 ",[1046,2310,2311],{},"key"," 属性。",[1036,2314,2316],{"id":2315},"类型types","类型（Types）",[1024,2318,2319,2320,2013,2324,2328],{},"以下是用于 ",[1028,2321,2322],{"href":456},[1046,2323,457],{},[1028,2325,2326],{"href":1051},[1046,2327,1054],{}," 和组件的非响应式类型。",[1073,2330,2332],{"className":1075,"code":2331,"filename":1505,"language":1077,"meta":354,"style":354},"interface MetaObject {\n  title?: string\n  titleTemplate?: string | ((title?: string) => string)\n  templateParams?: Record\u003Cstring, string | Record\u003Cstring, string>>\n  base?: Base\n  link?: Link[]\n  meta?: Meta[]\n  style?: Style[]\n  script?: Script[]\n  noscript?: Noscript[]\n  htmlAttrs?: HtmlAttributes\n  bodyAttrs?: BodyAttributes\n}\n",[1046,2333,2334,2345,2357,2391,2425,2435,2447,2458,2470,2481,2493,2503,2512],{"__ignoreMap":354},[1082,2335,2336,2339,2343],{"class":1084,"line":1085},[1082,2337,2338],{"class":1375},"interface",[1082,2340,2342],{"class":2341},"sJK67"," MetaObject",[1082,2344,1117],{"class":1103},[1082,2346,2347,2350,2353],{"class":1084,"line":1107},[1082,2348,1672],{"class":2349},"sP6_D",[1082,2351,2352],{"class":1394},"?:",[1082,2354,2356],{"class":2355},"seQRr"," string\n",[1082,2358,2359,2362,2364,2367,2370,2373,2375,2378,2380,2382,2384,2387,2389],{"class":1084,"line":1120},[1082,2360,2361],{"class":2349},"  titleTemplate",[1082,2363,2352],{"class":1394},[1082,2365,2366],{"class":2355}," string",[1082,2368,2369],{"class":1394}," |",[1082,2371,2372],{"class":1099}," (",[1082,2374,1100],{"class":1103},[1082,2376,2188],{"class":2377},"ssIVr",[1082,2379,2352],{"class":1394},[1082,2381,2366],{"class":2355},[1082,2383,1793],{"class":1103},[1082,2385,2386],{"class":1375}," =>",[1082,2388,2366],{"class":2355},[1082,2390,1276],{"class":1099},[1082,2392,2393,2396,2398,2401,2403,2406,2408,2410,2412,2414,2416,2418,2420,2422],{"class":1084,"line":1130},[1082,2394,2395],{"class":2349},"  templateParams",[1082,2397,2352],{"class":1394},[1082,2399,2400],{"class":2341}," Record",[1082,2402,1346],{"class":1103},[1082,2404,2405],{"class":2355},"string",[1082,2407,1149],{"class":1103},[1082,2409,2366],{"class":2355},[1082,2411,2369],{"class":1394},[1082,2413,2400],{"class":2341},[1082,2415,1346],{"class":1103},[1082,2417,2405],{"class":2355},[1082,2419,1149],{"class":1103},[1082,2421,2366],{"class":2355},[1082,2423,2424],{"class":1103},">>\n",[1082,2426,2427,2430,2432],{"class":1084,"line":1156},[1082,2428,2429],{"class":2349},"  base",[1082,2431,2352],{"class":1394},[1082,2433,2434],{"class":2341}," Base\n",[1082,2436,2437,2439,2441,2444],{"class":1084,"line":1166},[1082,2438,1420],{"class":2349},[1082,2440,2352],{"class":1394},[1082,2442,2443],{"class":2341}," Link",[1082,2445,2446],{"class":1099},"[]\n",[1082,2448,2449,2451,2453,2456],{"class":1084,"line":1184},[1082,2450,1688],{"class":2349},[1082,2452,2352],{"class":1394},[1082,2454,2455],{"class":2341}," Meta",[1082,2457,2446],{"class":1099},[1082,2459,2460,2463,2465,2468],{"class":1084,"line":1190},[1082,2461,2462],{"class":2349},"  style",[1082,2464,2352],{"class":1394},[1082,2466,2467],{"class":2341}," Style",[1082,2469,2446],{"class":1099},[1082,2471,2472,2474,2476,2479],{"class":1084,"line":1201},[1082,2473,1764],{"class":2349},[1082,2475,2352],{"class":1394},[1082,2477,2478],{"class":2341}," Script",[1082,2480,2446],{"class":1099},[1082,2482,2483,2486,2488,2491],{"class":1084,"line":1250},[1082,2484,2485],{"class":2349},"  noscript",[1082,2487,2352],{"class":1394},[1082,2489,2490],{"class":2341}," Noscript",[1082,2492,2446],{"class":1099},[1082,2494,2495,2498,2500],{"class":1084,"line":1258},[1082,2496,2497],{"class":2349},"  htmlAttrs",[1082,2499,2352],{"class":1394},[1082,2501,2502],{"class":2341}," HtmlAttributes\n",[1082,2504,2505,2507,2509],{"class":1084,"line":1264},[1082,2506,1735],{"class":2349},[1082,2508,2352],{"class":1394},[1082,2510,2511],{"class":2341}," BodyAttributes\n",[1082,2513,2514],{"class":1084,"line":1270},[1082,2515,2516],{"class":1103},"}\n",[1024,2518,2519,2520,1068],{},"更详细的类型请参见 ",[1028,2521,2524],{"href":2522,"rel":2523},"https:\u002F\u002Fgithub.com\u002Funjs\u002Funhead\u002Fblob\u002Fmain\u002Fpackages\u002Fvue\u002Fsrc\u002Ftypes\u002Fschema.ts",[1032],"@unhead\u002Fvue",[1036,2526,2528],{"id":2527},"特性features","特性（Features）",[1508,2530,2532],{"id":2531},"响应式reactivity","响应式（Reactivity）",[1024,2534,2535],{},"所有属性都支持响应式，可以通过提供一个 computed 值、getter 或响应式对象来实现。",[2537,2538,2539,2651,2728],"code-group",{},[1073,2540,2542],{"className":1336,"code":2541,"filename":457,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nconst description = ref('My amazing site.')\n\nuseHead({\n  meta: [\n    { name: 'description', content: description },\n  ],\n})\n\u003C\u002Fscript>\n",[1046,2543,2544,2564,2585,2589,2597,2605,2631,2637,2643],{"__ignoreMap":354},[1082,2545,2546,2548,2550,2552,2554,2556,2558,2560,2562],{"class":1084,"line":1085},[1082,2547,1346],{"class":1103},[1082,2549,1350],{"class":1349},[1082,2551,1354],{"class":1353},[1082,2553,1357],{"class":1353},[1082,2555,1360],{"class":1103},[1082,2557,1363],{"class":1138},[1082,2559,1077],{"class":1142},[1082,2561,1363],{"class":1138},[1082,2563,1370],{"class":1103},[1082,2565,2566,2568,2571,2573,2575,2577,2579,2581,2583],{"class":1084,"line":1107},[1082,2567,1376],{"class":1375},[1082,2569,2570],{"class":1382}," description",[1082,2572,1395],{"class":1394},[1082,2574,2082],{"class":1095},[1082,2576,1100],{"class":1099},[1082,2578,1146],{"class":1138},[1082,2580,1720],{"class":1142},[1082,2582,1146],{"class":1138},[1082,2584,1276],{"class":1099},[1082,2586,2587],{"class":1084,"line":1120},[1082,2588,2107],{"emptyLinePlaceholder":2106},[1082,2590,2591,2593,2595],{"class":1084,"line":1130},[1082,2592,457],{"class":1095},[1082,2594,1100],{"class":1099},[1082,2596,1104],{"class":1103},[1082,2598,2599,2601,2603],{"class":1084,"line":1156},[1082,2600,1688],{"class":1110},[1082,2602,1114],{"class":1103},[1082,2604,1198],{"class":1099},[1082,2606,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2628],{"class":1084,"line":1166},[1082,2608,1429],{"class":1103},[1082,2610,1699],{"class":1110},[1082,2612,1114],{"class":1103},[1082,2614,1139],{"class":1138},[1082,2616,1706],{"class":1142},[1082,2618,1146],{"class":1138},[1082,2620,1149],{"class":1103},[1082,2622,1713],{"class":1110},[1082,2624,1114],{"class":1103},[1082,2626,2627],{"class":1099}," description ",[1082,2629,2630],{"class":1103},"},\n",[1082,2632,2633,2635],{"class":1084,"line":1184},[1082,2634,1481],{"class":1099},[1082,2636,1181],{"class":1103},[1082,2638,2639,2641],{"class":1084,"line":1190},[1082,2640,1273],{"class":1103},[1082,2642,1276],{"class":1099},[1082,2644,2645,2647,2649],{"class":1084,"line":1201},[1082,2646,1494],{"class":1103},[1082,2648,1350],{"class":1349},[1082,2650,1370],{"class":1103},[1073,2652,2654],{"className":1336,"code":2653,"filename":541,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nconst description = ref('My amazing site.')\n\nuseSeoMeta({\n  description,\n})\n\u003C\u002Fscript>\n",[1046,2655,2656,2676,2696,2700,2708,2714,2720],{"__ignoreMap":354},[1082,2657,2658,2660,2662,2664,2666,2668,2670,2672,2674],{"class":1084,"line":1085},[1082,2659,1346],{"class":1103},[1082,2661,1350],{"class":1349},[1082,2663,1354],{"class":1353},[1082,2665,1357],{"class":1353},[1082,2667,1360],{"class":1103},[1082,2669,1363],{"class":1138},[1082,2671,1077],{"class":1142},[1082,2673,1363],{"class":1138},[1082,2675,1370],{"class":1103},[1082,2677,2678,2680,2682,2684,2686,2688,2690,2692,2694],{"class":1084,"line":1107},[1082,2679,1376],{"class":1375},[1082,2681,2570],{"class":1382},[1082,2683,1395],{"class":1394},[1082,2685,2082],{"class":1095},[1082,2687,1100],{"class":1099},[1082,2689,1146],{"class":1138},[1082,2691,1720],{"class":1142},[1082,2693,1146],{"class":1138},[1082,2695,1276],{"class":1099},[1082,2697,2698],{"class":1084,"line":1120},[1082,2699,2107],{"emptyLinePlaceholder":2106},[1082,2701,2702,2704,2706],{"class":1084,"line":1130},[1082,2703,541],{"class":1095},[1082,2705,1100],{"class":1099},[1082,2707,1104],{"class":1103},[1082,2709,2710,2712],{"class":1084,"line":1156},[1082,2711,1919],{"class":1099},[1082,2713,1181],{"class":1103},[1082,2715,2716,2718],{"class":1084,"line":1166},[1082,2717,1273],{"class":1103},[1082,2719,1276],{"class":1099},[1082,2721,2722,2724,2726],{"class":1084,"line":1184},[1082,2723,1494],{"class":1103},[1082,2725,1350],{"class":1349},[1082,2727,1370],{"class":1103},[1073,2729,2732],{"className":1336,"code":2730,"filename":2731,"language":1339,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst description = ref('My amazing site.')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CMeta\n      name=\"description\"\n      :content=\"description\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","app\u002FComponents",[1046,2733,2734,2754,2774,2782,2786,2794,2802,2808,2821,2834,2839,2847],{"__ignoreMap":354},[1082,2735,2736,2738,2740,2742,2744,2746,2748,2750,2752],{"class":1084,"line":1085},[1082,2737,1346],{"class":1103},[1082,2739,1350],{"class":1349},[1082,2741,1354],{"class":1353},[1082,2743,1357],{"class":1353},[1082,2745,1360],{"class":1103},[1082,2747,1363],{"class":1138},[1082,2749,1077],{"class":1142},[1082,2751,1363],{"class":1138},[1082,2753,1370],{"class":1103},[1082,2755,2756,2758,2760,2762,2764,2766,2768,2770,2772],{"class":1084,"line":1107},[1082,2757,1376],{"class":1375},[1082,2759,2570],{"class":1382},[1082,2761,1395],{"class":1394},[1082,2763,2082],{"class":1095},[1082,2765,1100],{"class":1099},[1082,2767,1146],{"class":1138},[1082,2769,1720],{"class":1142},[1082,2771,1146],{"class":1138},[1082,2773,1276],{"class":1099},[1082,2775,2776,2778,2780],{"class":1084,"line":1120},[1082,2777,1494],{"class":1103},[1082,2779,1350],{"class":1349},[1082,2781,1370],{"class":1103},[1082,2783,2784],{"class":1084,"line":1130},[1082,2785,2107],{"emptyLinePlaceholder":2106},[1082,2787,2788,2790,2792],{"class":1084,"line":1156},[1082,2789,1346],{"class":1103},[1082,2791,2114],{"class":1349},[1082,2793,1370],{"class":1103},[1082,2795,2796,2798,2800],{"class":1084,"line":1166},[1082,2797,2121],{"class":1103},[1082,2799,2124],{"class":1349},[1082,2801,1370],{"class":1103},[1082,2803,2804,2806],{"class":1084,"line":1184},[1082,2805,2131],{"class":1103},[1082,2807,2162],{"class":1349},[1082,2809,2810,2813,2815,2817,2819],{"class":1084,"line":1190},[1082,2811,2812],{"class":1353},"      name",[1082,2814,1360],{"class":1103},[1082,2816,1363],{"class":1138},[1082,2818,1706],{"class":1142},[1082,2820,2176],{"class":1138},[1082,2822,2823,2826,2828,2830,2832],{"class":1084,"line":1201},[1082,2824,2825],{"class":1353},"      :content",[1082,2827,1360],{"class":1103},[1082,2829,1363],{"class":1138},[1082,2831,1706],{"class":1142},[1082,2833,2176],{"class":1138},[1082,2835,2836],{"class":1084,"line":1250},[1082,2837,2838],{"class":1103},"    \u002F>\n",[1082,2840,2841,2843,2845],{"class":1084,"line":1258},[1082,2842,2277],{"class":1103},[1082,2844,2124],{"class":1349},[1082,2846,1370],{"class":1103},[1082,2848,2849,2851,2853],{"class":1084,"line":1264},[1082,2850,1494],{"class":1103},[1082,2852,2114],{"class":1349},[1082,2854,1370],{"class":1103},[1508,2856,2858],{"id":2857},"标题模板title-template","标题模板（Title Template）",[1024,2860,2861,2862,2865],{},"你可以使用 ",[1046,2863,2864],{},"titleTemplate"," 选项来提供一个动态模板，用于自定义站点的标题。例如，你可以将站点名称添加到每个页面的标题中。",[1024,2867,2868,2870,2871,2874],{},[1046,2869,2864],{}," 既可以是一个字符串（其中 ",[1046,2872,2873],{},"%s"," 会被替换为标题），也可以是一个函数。",[1024,2876,2877,2878,2881,2882,2884],{},"如果你想使用函数（以获得完全控制），那么无法在 ",[1046,2879,2880],{},"nuxt.config"," 中设置它。相反，建议在 ",[1046,2883,118],{}," 文件中设置，这样它会应用到站点上的所有页面：",[2537,2886,2887],{},[1073,2888,2890],{"className":1336,"code":2889,"filename":457,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  titleTemplate: (titleChunk) => {\n    return titleChunk ? `${titleChunk} - Site Title` : 'Site Title'\n  },\n})\n\u003C\u002Fscript>\n",[1046,2891,2892,2912,2920,2937,2970,2974,2980],{"__ignoreMap":354},[1082,2893,2894,2896,2898,2900,2902,2904,2906,2908,2910],{"class":1084,"line":1085},[1082,2895,1346],{"class":1103},[1082,2897,1350],{"class":1349},[1082,2899,1354],{"class":1353},[1082,2901,1357],{"class":1353},[1082,2903,1360],{"class":1103},[1082,2905,1363],{"class":1138},[1082,2907,1077],{"class":1142},[1082,2909,1363],{"class":1138},[1082,2911,1370],{"class":1103},[1082,2913,2914,2916,2918],{"class":1084,"line":1107},[1082,2915,457],{"class":1095},[1082,2917,1100],{"class":1099},[1082,2919,1104],{"class":1103},[1082,2921,2922,2924,2926,2928,2931,2933,2935],{"class":1084,"line":1120},[1082,2923,2361],{"class":1095},[1082,2925,1114],{"class":1103},[1082,2927,2372],{"class":1103},[1082,2929,2930],{"class":2377},"titleChunk",[1082,2932,1793],{"class":1103},[1082,2934,2386],{"class":1375},[1082,2936,1117],{"class":1103},[1082,2938,2939,2942,2945,2948,2950,2952,2954,2957,2959,2962,2964,2967],{"class":1084,"line":1130},[1082,2940,2941],{"class":1088},"    return",[1082,2943,2944],{"class":1099}," titleChunk",[1082,2946,2947],{"class":1394}," ?",[1082,2949,1460],{"class":1138},[1082,2951,2930],{"class":1099},[1082,2953,1273],{"class":1138},[1082,2955,2956],{"class":1142}," - Site Title",[1082,2958,1474],{"class":1138},[1082,2960,2961],{"class":1394}," :",[1082,2963,1139],{"class":1138},[1082,2965,2966],{"class":1142},"Site Title",[1082,2968,2969],{"class":1138},"'\n",[1082,2971,2972],{"class":1084,"line":1156},[1082,2973,1267],{"class":1103},[1082,2975,2976,2978],{"class":1084,"line":1166},[1082,2977,1273],{"class":1103},[1082,2979,1276],{"class":1099},[1082,2981,2982,2984,2986],{"class":1084,"line":1184},[1082,2983,1494],{"class":1103},[1082,2985,1350],{"class":1349},[1082,2987,1370],{"class":1103},[1024,2989,2990,2991,2995,2996,2999,3000,3003],{},"现在，如果你在站点的另一个页面上通过 ",[1028,2992,2993],{"href":456},[1046,2994,457],{}," 将标题设置为 ",[1046,2997,2998],{},"My Page","，浏览器标签页中的标题就会显示为「My Page - Site Title」。你也可以传递 ",[1046,3001,3002],{},"null"," 来默认使用「Site Title」。",[1508,3005,3007],{"id":3006},"模板参数template-parameters","模板参数（Template Parameters）",[1024,3009,2861,3010,3013,3014,3016,3017,3019],{},[1046,3011,3012],{},"templateParams"," 来在 ",[1046,3015,2864],{}," 中提供除默认 ",[1046,3018,2873],{}," 之外的额外占位符。这允许生成更具动态性的标题。",[2537,3021,3022],{},[1073,3023,3025],{"className":1336,"code":3024,"filename":457,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  titleTemplate: (titleChunk) => {\n    return titleChunk ? `${titleChunk} %separator %siteName` : '%siteName'\n  },\n  templateParams: {\n    siteName: 'Site Title',\n    separator: '-',\n  },\n})\n\u003C\u002Fscript>\n",[1046,3026,3027,3047,3055,3071,3099,3103,3111,3126,3142,3146,3152],{"__ignoreMap":354},[1082,3028,3029,3031,3033,3035,3037,3039,3041,3043,3045],{"class":1084,"line":1085},[1082,3030,1346],{"class":1103},[1082,3032,1350],{"class":1349},[1082,3034,1354],{"class":1353},[1082,3036,1357],{"class":1353},[1082,3038,1360],{"class":1103},[1082,3040,1363],{"class":1138},[1082,3042,1077],{"class":1142},[1082,3044,1363],{"class":1138},[1082,3046,1370],{"class":1103},[1082,3048,3049,3051,3053],{"class":1084,"line":1107},[1082,3050,457],{"class":1095},[1082,3052,1100],{"class":1099},[1082,3054,1104],{"class":1103},[1082,3056,3057,3059,3061,3063,3065,3067,3069],{"class":1084,"line":1120},[1082,3058,2361],{"class":1095},[1082,3060,1114],{"class":1103},[1082,3062,2372],{"class":1103},[1082,3064,2930],{"class":2377},[1082,3066,1793],{"class":1103},[1082,3068,2386],{"class":1375},[1082,3070,1117],{"class":1103},[1082,3072,3073,3075,3077,3079,3081,3083,3085,3088,3090,3092,3094,3097],{"class":1084,"line":1130},[1082,3074,2941],{"class":1088},[1082,3076,2944],{"class":1099},[1082,3078,2947],{"class":1394},[1082,3080,1460],{"class":1138},[1082,3082,2930],{"class":1099},[1082,3084,1273],{"class":1138},[1082,3086,3087],{"class":1142}," %separator %siteName",[1082,3089,1474],{"class":1138},[1082,3091,2961],{"class":1394},[1082,3093,1139],{"class":1138},[1082,3095,3096],{"class":1142},"%siteName",[1082,3098,2969],{"class":1138},[1082,3100,3101],{"class":1084,"line":1156},[1082,3102,1267],{"class":1103},[1082,3104,3105,3107,3109],{"class":1084,"line":1166},[1082,3106,2395],{"class":1110},[1082,3108,1114],{"class":1103},[1082,3110,1117],{"class":1103},[1082,3112,3113,3116,3118,3120,3122,3124],{"class":1084,"line":1184},[1082,3114,3115],{"class":1110},"    siteName",[1082,3117,1114],{"class":1103},[1082,3119,1139],{"class":1138},[1082,3121,2966],{"class":1142},[1082,3123,1146],{"class":1138},[1082,3125,1181],{"class":1103},[1082,3127,3128,3131,3133,3135,3138,3140],{"class":1084,"line":1190},[1082,3129,3130],{"class":1110},"    separator",[1082,3132,1114],{"class":1103},[1082,3134,1139],{"class":1138},[1082,3136,3137],{"class":1142},"-",[1082,3139,1146],{"class":1138},[1082,3141,1181],{"class":1103},[1082,3143,3144],{"class":1084,"line":1201},[1082,3145,1267],{"class":1103},[1082,3147,3148,3150],{"class":1084,"line":1250},[1082,3149,1273],{"class":1103},[1082,3151,1276],{"class":1099},[1082,3153,3154,3156,3158],{"class":1084,"line":1258},[1082,3155,1494],{"class":1103},[1082,3157,1350],{"class":1349},[1082,3159,1370],{"class":1103},[1508,3161,3163],{"id":3162},"正文标签body-tags","正文标签（Body Tags）",[1024,3165,3166,3167,3170,3171,3174],{},"你可以在适用的标签上使用 ",[1046,3168,3169],{},"tagPosition: 'bodyClose'"," 选项，将它们追加到 ",[1046,3172,3173],{},"\u003Cbody>"," 标签的末尾。",[1024,3176,3177],{},"例如：",[1073,3179,3181],{"className":1336,"code":3180,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  script: [\n    {\n      src: 'https:\u002F\u002Fthird-party-script.com',\n      \u002F\u002F valid options are: 'head' | 'bodyClose' | 'bodyOpen'\n      tagPosition: 'bodyClose',\n    },\n  ],\n})\n\u003C\u002Fscript>\n",[1046,3182,3183,3203,3211,3219,3224,3240,3245,3261,3265,3271,3277],{"__ignoreMap":354},[1082,3184,3185,3187,3189,3191,3193,3195,3197,3199,3201],{"class":1084,"line":1085},[1082,3186,1346],{"class":1103},[1082,3188,1350],{"class":1349},[1082,3190,1354],{"class":1353},[1082,3192,1357],{"class":1353},[1082,3194,1360],{"class":1103},[1082,3196,1363],{"class":1138},[1082,3198,1077],{"class":1142},[1082,3200,1363],{"class":1138},[1082,3202,1370],{"class":1103},[1082,3204,3205,3207,3209],{"class":1084,"line":1107},[1082,3206,457],{"class":1095},[1082,3208,1100],{"class":1099},[1082,3210,1104],{"class":1103},[1082,3212,3213,3215,3217],{"class":1084,"line":1120},[1082,3214,1764],{"class":1110},[1082,3216,1114],{"class":1103},[1082,3218,1198],{"class":1099},[1082,3220,3221],{"class":1084,"line":1130},[1082,3222,3223],{"class":1103},"    {\n",[1082,3225,3226,3229,3231,3233,3236,3238],{"class":1084,"line":1156},[1082,3227,3228],{"class":1110},"      src",[1082,3230,1114],{"class":1103},[1082,3232,1139],{"class":1138},[1082,3234,3235],{"class":1142},"https:\u002F\u002Fthird-party-script.com",[1082,3237,1146],{"class":1138},[1082,3239,1181],{"class":1103},[1082,3241,3242],{"class":1084,"line":1166},[1082,3243,3244],{"class":1152},"      \u002F\u002F valid options are: 'head' | 'bodyClose' | 'bodyOpen'\n",[1082,3246,3247,3250,3252,3254,3257,3259],{"class":1084,"line":1184},[1082,3248,3249],{"class":1110},"      tagPosition",[1082,3251,1114],{"class":1103},[1082,3253,1139],{"class":1138},[1082,3255,3256],{"class":1142},"bodyClose",[1082,3258,1146],{"class":1138},[1082,3260,1181],{"class":1103},[1082,3262,3263],{"class":1084,"line":1190},[1082,3264,1261],{"class":1103},[1082,3266,3267,3269],{"class":1084,"line":1201},[1082,3268,1481],{"class":1099},[1082,3270,1181],{"class":1103},[1082,3272,3273,3275],{"class":1084,"line":1250},[1082,3274,1273],{"class":1103},[1082,3276,1276],{"class":1099},[1082,3278,3279,3281,3283],{"class":1084,"line":1258},[1082,3280,1494],{"class":1103},[1082,3282,1350],{"class":1349},[1082,3284,1370],{"class":1103},[1036,3286,3288],{"id":3287},"示例example","示例（Example）",[1508,3290,3292,3293],{"id":3291},"配合-definepagemeta","配合 ",[1046,3294,601],{},[1024,3296,1042,3297,3303,3304,3306,3307,3311],{},[1028,3298,3299,3302],{"href":105},[1046,3300,3301],{},"app\u002Fpages\u002F"," 目录"," 中，你可以将 ",[1046,3305,601],{}," 与 ",[1028,3308,3309],{"href":456},[1046,3310,457],{}," 结合使用，根据当前路由设置元数据。",[1024,3313,3314],{},"例如，你可以先设置当前页面的标题（这是在构建时通过宏提取的，因此无法动态设置）：",[1073,3316,3319],{"className":1336,"code":3317,"filename":3318,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  title: 'Some Page',\n})\n\u003C\u002Fscript>\n","pages\u002Fsome-page.vue",[1046,3320,3321,3341,3349,3364,3370],{"__ignoreMap":354},[1082,3322,3323,3325,3327,3329,3331,3333,3335,3337,3339],{"class":1084,"line":1085},[1082,3324,1346],{"class":1103},[1082,3326,1350],{"class":1349},[1082,3328,1354],{"class":1353},[1082,3330,1357],{"class":1353},[1082,3332,1360],{"class":1103},[1082,3334,1363],{"class":1138},[1082,3336,1077],{"class":1142},[1082,3338,1363],{"class":1138},[1082,3340,1370],{"class":1103},[1082,3342,3343,3345,3347],{"class":1084,"line":1107},[1082,3344,601],{"class":1095},[1082,3346,1100],{"class":1099},[1082,3348,1104],{"class":1103},[1082,3350,3351,3353,3355,3357,3360,3362],{"class":1084,"line":1120},[1082,3352,1672],{"class":1110},[1082,3354,1114],{"class":1103},[1082,3356,1139],{"class":1138},[1082,3358,3359],{"class":1142},"Some Page",[1082,3361,1146],{"class":1138},[1082,3363,1181],{"class":1103},[1082,3365,3366,3368],{"class":1084,"line":1130},[1082,3367,1273],{"class":1103},[1082,3369,1276],{"class":1099},[1082,3371,3372,3374,3376],{"class":1084,"line":1156},[1082,3373,1494],{"class":1103},[1082,3375,1350],{"class":1349},[1082,3377,1370],{"class":1103},[1024,3379,3380],{},"然后在你的布局文件中，使用之前设置的路由元数据：",[1073,3382,3385],{"className":1336,"code":3383,"filename":3384,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\n\nuseHead({\n  meta: [{ property: 'og:title', content: `App Name - ${route.meta.title}` }],\n})\n\u003C\u002Fscript>\n","layouts\u002Fdefault.vue",[1046,3386,3387,3407,3422,3426,3434,3492,3498],{"__ignoreMap":354},[1082,3388,3389,3391,3393,3395,3397,3399,3401,3403,3405],{"class":1084,"line":1085},[1082,3390,1346],{"class":1103},[1082,3392,1350],{"class":1349},[1082,3394,1354],{"class":1353},[1082,3396,1357],{"class":1353},[1082,3398,1360],{"class":1103},[1082,3400,1363],{"class":1138},[1082,3402,1077],{"class":1142},[1082,3404,1363],{"class":1138},[1082,3406,1370],{"class":1103},[1082,3408,3409,3411,3414,3416,3419],{"class":1084,"line":1107},[1082,3410,1376],{"class":1375},[1082,3412,3413],{"class":1382}," route",[1082,3415,1395],{"class":1394},[1082,3417,3418],{"class":1095}," useRoute",[1082,3420,3421],{"class":1099},"()\n",[1082,3423,3424],{"class":1084,"line":1120},[1082,3425,2107],{"emptyLinePlaceholder":2106},[1082,3427,3428,3430,3432],{"class":1084,"line":1130},[1082,3429,457],{"class":1095},[1082,3431,1100],{"class":1099},[1082,3433,1104],{"class":1103},[1082,3435,3436,3438,3440,3442,3444,3447,3449,3451,3454,3456,3458,3460,3462,3465,3468,3471,3474,3476,3479,3481,3483,3486,3488,3490],{"class":1084,"line":1156},[1082,3437,1688],{"class":1110},[1082,3439,1114],{"class":1103},[1082,3441,1769],{"class":1099},[1082,3443,1772],{"class":1103},[1082,3445,3446],{"class":1110}," property",[1082,3448,1114],{"class":1103},[1082,3450,1139],{"class":1138},[1082,3452,3453],{"class":1142},"og:title",[1082,3455,1146],{"class":1138},[1082,3457,1149],{"class":1103},[1082,3459,1713],{"class":1110},[1082,3461,1114],{"class":1103},[1082,3463,3464],{"class":1138}," `",[1082,3466,3467],{"class":1142},"App Name - ",[1082,3469,3470],{"class":1138},"${",[1082,3472,3473],{"class":1099},"route",[1082,3475,1404],{"class":1138},[1082,3477,3478],{"class":1099},"meta",[1082,3480,1404],{"class":1138},[1082,3482,2188],{"class":1099},[1082,3484,3485],{"class":1138},"}`",[1082,3487,1391],{"class":1103},[1082,3489,1800],{"class":1099},[1082,3491,1181],{"class":1103},[1082,3493,3494,3496],{"class":1084,"line":1166},[1082,3495,1273],{"class":1103},[1082,3497,1276],{"class":1099},[1082,3499,3500,3502,3504],{"class":1084,"line":1184},[1082,3501,1494],{"class":1103},[1082,3503,1350],{"class":1349},[1082,3505,1370],{"class":1103},[3507,3508,3510,3513,3517,3530,3602,3709,3723,3727,3742],"link-example",{"to":3509},"\u002Fdocs\u002Fexamples\u002Ffeatures\u002Fmeta-tags",[1993,3511],{"to":3512},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages\u002F#page-metadata",[1508,3514,3516],{"id":3515},"动态标题dynamic-title","动态标题（Dynamic Title）",[1024,3518,3519,3520,3522,3523,3525,3526,3529],{},"在下面的示例中，",[1046,3521,2864],{}," 既可以设置为带有 ",[1046,3524,2873],{}," 占位符的字符串，也可以设置为 ",[1046,3527,3528],{},"function","，从而允许你为 Nuxt 应用的每个路由更灵活地动态设置页面标题：",[1073,3531,3533],{"className":1336,"code":3532,"filename":1338,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  \u002F\u002F as a string,\n  \u002F\u002F where `%s` is replaced with the title\n  titleTemplate: '%s - Site Title',\n})\n\u003C\u002Fscript>\n",[1046,3534,3535,3555,3563,3568,3573,3588,3594],{"__ignoreMap":354},[1082,3536,3537,3539,3541,3543,3545,3547,3549,3551,3553],{"class":1084,"line":1085},[1082,3538,1346],{"class":1103},[1082,3540,1350],{"class":1349},[1082,3542,1354],{"class":1353},[1082,3544,1357],{"class":1353},[1082,3546,1360],{"class":1103},[1082,3548,1363],{"class":1138},[1082,3550,1077],{"class":1142},[1082,3552,1363],{"class":1138},[1082,3554,1370],{"class":1103},[1082,3556,3557,3559,3561],{"class":1084,"line":1107},[1082,3558,457],{"class":1095},[1082,3560,1100],{"class":1099},[1082,3562,1104],{"class":1103},[1082,3564,3565],{"class":1084,"line":1120},[1082,3566,3567],{"class":1152},"  \u002F\u002F as a string,\n",[1082,3569,3570],{"class":1084,"line":1130},[1082,3571,3572],{"class":1152},"  \u002F\u002F where `%s` is replaced with the title\n",[1082,3574,3575,3577,3579,3581,3584,3586],{"class":1084,"line":1156},[1082,3576,2361],{"class":1110},[1082,3578,1114],{"class":1103},[1082,3580,1139],{"class":1138},[1082,3582,3583],{"class":1142},"%s - Site Title",[1082,3585,1146],{"class":1138},[1082,3587,1181],{"class":1103},[1082,3589,3590,3592],{"class":1084,"line":1166},[1082,3591,1273],{"class":1103},[1082,3593,1276],{"class":1099},[1082,3595,3596,3598,3600],{"class":1084,"line":1184},[1082,3597,1494],{"class":1103},[1082,3599,1350],{"class":1349},[1082,3601,1370],{"class":1103},[1073,3603,3605],{"className":1336,"code":3604,"filename":1338,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  \u002F\u002F or as a function\n  titleTemplate: (productCategory) => {\n    return productCategory\n      ? `${productCategory} - Site Title`\n      : 'Site Title'\n  },\n})\n\u003C\u002Fscript>\n",[1046,3606,3607,3627,3635,3640,3657,3664,3680,3691,3695,3701],{"__ignoreMap":354},[1082,3608,3609,3611,3613,3615,3617,3619,3621,3623,3625],{"class":1084,"line":1085},[1082,3610,1346],{"class":1103},[1082,3612,1350],{"class":1349},[1082,3614,1354],{"class":1353},[1082,3616,1357],{"class":1353},[1082,3618,1360],{"class":1103},[1082,3620,1363],{"class":1138},[1082,3622,1077],{"class":1142},[1082,3624,1363],{"class":1138},[1082,3626,1370],{"class":1103},[1082,3628,3629,3631,3633],{"class":1084,"line":1107},[1082,3630,457],{"class":1095},[1082,3632,1100],{"class":1099},[1082,3634,1104],{"class":1103},[1082,3636,3637],{"class":1084,"line":1120},[1082,3638,3639],{"class":1152},"  \u002F\u002F or as a function\n",[1082,3641,3642,3644,3646,3648,3651,3653,3655],{"class":1084,"line":1130},[1082,3643,2361],{"class":1095},[1082,3645,1114],{"class":1103},[1082,3647,2372],{"class":1103},[1082,3649,3650],{"class":2377},"productCategory",[1082,3652,1793],{"class":1103},[1082,3654,2386],{"class":1375},[1082,3656,1117],{"class":1103},[1082,3658,3659,3661],{"class":1084,"line":1156},[1082,3660,2941],{"class":1088},[1082,3662,3663],{"class":1099}," productCategory\n",[1082,3665,3666,3669,3671,3673,3675,3677],{"class":1084,"line":1166},[1082,3667,3668],{"class":1394},"      ?",[1082,3670,1460],{"class":1138},[1082,3672,3650],{"class":1099},[1082,3674,1273],{"class":1138},[1082,3676,2956],{"class":1142},[1082,3678,3679],{"class":1138},"`\n",[1082,3681,3682,3685,3687,3689],{"class":1084,"line":1184},[1082,3683,3684],{"class":1394},"      :",[1082,3686,1139],{"class":1138},[1082,3688,2966],{"class":1142},[1082,3690,2969],{"class":1138},[1082,3692,3693],{"class":1084,"line":1190},[1082,3694,1267],{"class":1103},[1082,3696,3697,3699],{"class":1084,"line":1201},[1082,3698,1273],{"class":1103},[1082,3700,1276],{"class":1099},[1082,3702,3703,3705,3707],{"class":1084,"line":1250},[1082,3704,1494],{"class":1103},[1082,3706,1350],{"class":1349},[1082,3708,1370],{"class":1103},[1024,3710,3711,3713,3714,3716,3717,3719,3720,3722],{},[1046,3712,2880],{}," 也作为一种替代方式来设置页面标题。但是，",[1046,3715,2880],{}," 不允许页面标题是动态的。因此，建议在 ",[1046,3718,118],{}," 文件中使用 ",[1046,3721,2864],{}," 来添加动态标题，它会应用到 Nuxt 应用的所有路由上。",[1508,3724,3726],{"id":3725},"外部-cssexternal-css","外部 CSS（External CSS）",[1024,3728,3729,3730,3734,3735,3738,3739,3741],{},"下面的示例展示了如何通过 ",[1028,3731,3732],{"href":456},[1046,3733,457],{}," composable 的 ",[1046,3736,3737],{},"link"," 属性，或使用 ",[1046,3740,2028],{}," 组件来启用 Google Fonts：",[2537,3743,3744,3895],{},[1073,3745,3747],{"className":1336,"code":3746,"filename":457,"language":1339,"meta":1078,"style":354},"\u003Cscript setup lang=\"ts\">\nuseHead({\n  link: [\n    {\n      rel: 'preconnect',\n      href: 'https:\u002F\u002Ffonts.googleapis.com',\n    },\n    {\n      rel: 'stylesheet',\n      href: 'https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Roboto&display=swap',\n      crossorigin: '',\n    },\n  ],\n})\n\u003C\u002Fscript>\n",[1046,3748,3749,3769,3777,3785,3789,3805,3821,3825,3829,3844,3859,3871,3875,3881,3887],{"__ignoreMap":354},[1082,3750,3751,3753,3755,3757,3759,3761,3763,3765,3767],{"class":1084,"line":1085},[1082,3752,1346],{"class":1103},[1082,3754,1350],{"class":1349},[1082,3756,1354],{"class":1353},[1082,3758,1357],{"class":1353},[1082,3760,1360],{"class":1103},[1082,3762,1363],{"class":1138},[1082,3764,1077],{"class":1142},[1082,3766,1363],{"class":1138},[1082,3768,1370],{"class":1103},[1082,3770,3771,3773,3775],{"class":1084,"line":1107},[1082,3772,457],{"class":1095},[1082,3774,1100],{"class":1099},[1082,3776,1104],{"class":1103},[1082,3778,3779,3781,3783],{"class":1084,"line":1120},[1082,3780,1420],{"class":1110},[1082,3782,1114],{"class":1103},[1082,3784,1198],{"class":1099},[1082,3786,3787],{"class":1084,"line":1130},[1082,3788,3223],{"class":1103},[1082,3790,3791,3794,3796,3798,3801,3803],{"class":1084,"line":1156},[1082,3792,3793],{"class":1110},"      rel",[1082,3795,1114],{"class":1103},[1082,3797,1139],{"class":1138},[1082,3799,3800],{"class":1142},"preconnect",[1082,3802,1146],{"class":1138},[1082,3804,1181],{"class":1103},[1082,3806,3807,3810,3812,3814,3817,3819],{"class":1084,"line":1166},[1082,3808,3809],{"class":1110},"      href",[1082,3811,1114],{"class":1103},[1082,3813,1139],{"class":1138},[1082,3815,3816],{"class":1142},"https:\u002F\u002Ffonts.googleapis.com",[1082,3818,1146],{"class":1138},[1082,3820,1181],{"class":1103},[1082,3822,3823],{"class":1084,"line":1184},[1082,3824,1261],{"class":1103},[1082,3826,3827],{"class":1084,"line":1190},[1082,3828,3223],{"class":1103},[1082,3830,3831,3833,3835,3837,3840,3842],{"class":1084,"line":1201},[1082,3832,3793],{"class":1110},[1082,3834,1114],{"class":1103},[1082,3836,1139],{"class":1138},[1082,3838,3839],{"class":1142},"stylesheet",[1082,3841,1146],{"class":1138},[1082,3843,1181],{"class":1103},[1082,3845,3846,3848,3850,3852,3855,3857],{"class":1084,"line":1250},[1082,3847,3809],{"class":1110},[1082,3849,1114],{"class":1103},[1082,3851,1139],{"class":1138},[1082,3853,3854],{"class":1142},"https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Roboto&display=swap",[1082,3856,1146],{"class":1138},[1082,3858,1181],{"class":1103},[1082,3860,3861,3864,3866,3869],{"class":1084,"line":1258},[1082,3862,3863],{"class":1110},"      crossorigin",[1082,3865,1114],{"class":1103},[1082,3867,3868],{"class":1138}," ''",[1082,3870,1181],{"class":1103},[1082,3872,3873],{"class":1084,"line":1264},[1082,3874,1261],{"class":1103},[1082,3876,3877,3879],{"class":1084,"line":1270},[1082,3878,1481],{"class":1099},[1082,3880,1181],{"class":1103},[1082,3882,3883,3885],{"class":1084,"line":2207},[1082,3884,1273],{"class":1103},[1082,3886,1276],{"class":1099},[1082,3888,3889,3891,3893],{"class":1084,"line":2231},[1082,3890,1494],{"class":1103},[1082,3892,1350],{"class":1349},[1082,3894,1370],{"class":1103},[1073,3896,3898],{"className":1336,"code":3897,"filename":2731,"language":1339,"meta":354,"style":354},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CLink\n      rel=\"preconnect\"\n      href=\"https:\u002F\u002Ffonts.googleapis.com\"\n    \u002F>\n    \u003CLink\n      rel=\"stylesheet\"\n      href=\"https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Roboto&display=swap\"\n      crossorigin=\"\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[1046,3899,3900,3908,3916,3923,3935,3947,3951,3957,3969,3981,3990,3994,4002],{"__ignoreMap":354},[1082,3901,3902,3904,3906],{"class":1084,"line":1085},[1082,3903,1346],{"class":1103},[1082,3905,2114],{"class":1349},[1082,3907,1370],{"class":1103},[1082,3909,3910,3912,3914],{"class":1084,"line":1107},[1082,3911,2121],{"class":1103},[1082,3913,2124],{"class":1349},[1082,3915,1370],{"class":1103},[1082,3917,3918,3920],{"class":1084,"line":1120},[1082,3919,2131],{"class":1103},[1082,3921,3922],{"class":1349},"Link\n",[1082,3924,3925,3927,3929,3931,3933],{"class":1084,"line":1130},[1082,3926,3793],{"class":1353},[1082,3928,1360],{"class":1103},[1082,3930,1363],{"class":1138},[1082,3932,3800],{"class":1142},[1082,3934,2176],{"class":1138},[1082,3936,3937,3939,3941,3943,3945],{"class":1084,"line":1156},[1082,3938,3809],{"class":1353},[1082,3940,1360],{"class":1103},[1082,3942,1363],{"class":1138},[1082,3944,3816],{"class":1142},[1082,3946,2176],{"class":1138},[1082,3948,3949],{"class":1084,"line":1166},[1082,3950,2838],{"class":1103},[1082,3952,3953,3955],{"class":1084,"line":1184},[1082,3954,2131],{"class":1103},[1082,3956,3922],{"class":1349},[1082,3958,3959,3961,3963,3965,3967],{"class":1084,"line":1190},[1082,3960,3793],{"class":1353},[1082,3962,1360],{"class":1103},[1082,3964,1363],{"class":1138},[1082,3966,3839],{"class":1142},[1082,3968,2176],{"class":1138},[1082,3970,3971,3973,3975,3977,3979],{"class":1084,"line":1201},[1082,3972,3809],{"class":1353},[1082,3974,1360],{"class":1103},[1082,3976,1363],{"class":1138},[1082,3978,3854],{"class":1142},[1082,3980,2176],{"class":1138},[1082,3982,3983,3985,3987],{"class":1084,"line":1250},[1082,3984,3863],{"class":1353},[1082,3986,1360],{"class":1103},[1082,3988,3989],{"class":1138},"\"\"\n",[1082,3991,3992],{"class":1084,"line":1258},[1082,3993,2838],{"class":1103},[1082,3995,3996,3998,4000],{"class":1084,"line":1264},[1082,3997,2277],{"class":1103},[1082,3999,2124],{"class":1349},[1082,4001,1370],{"class":1103},[1082,4003,4004,4006,4008],{"class":1084,"line":1270},[1082,4005,1494],{"class":1103},[1082,4007,2114],{"class":1349},[1082,4009,1370],{"class":1103},[4011,4012,4013],"style",{},"html pre.shiki code .szyBz, html code.shiki .szyBz{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .srJn9, html code.shiki .srJn9{--shiki-light:#6182B8;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .smVNa, html code.shiki .smVNa{--shiki-light:#90A4AE;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .s0jeK, html code.shiki .s0jeK{--shiki-light:#39ADB5;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .s-Aze, html code.shiki .s-Aze{--shiki-light:#91B859;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sZqJ9, html code.shiki .sZqJ9{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .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 .sv6Pl, html code.shiki .sv6Pl{--shiki-light:#E2931D;--shiki-default:#85E89D;--shiki-dark:#FFCB6B}html pre.shiki code .sETrE, html code.shiki .sETrE{--shiki-light:#8796B0;--shiki-default:#79B8FF;--shiki-dark:#B2CCD6}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sP6_D, html code.shiki .sP6_D{--shiki-light:#E53935;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":354,"searchDepth":1120,"depth":1120,"links":4015},[4016,4019,4020,4021,4022,4023,4029],{"id":1038,"depth":1107,"text":1039,"children":4017},[4018],{"id":1510,"depth":1120,"text":1511},{"id":1625,"depth":1107,"text":457},{"id":1832,"depth":1107,"text":541},{"id":1997,"depth":1107,"text":1998},{"id":2315,"depth":1107,"text":2316},{"id":2527,"depth":1107,"text":2528,"children":4024},[4025,4026,4027,4028],{"id":2531,"depth":1120,"text":2532},{"id":2857,"depth":1120,"text":2858},{"id":3006,"depth":1120,"text":3007},{"id":3162,"depth":1120,"text":3163},{"id":3287,"depth":1107,"text":3288,"children":4030},[4031,4033,4034],{"id":3291,"depth":1120,"text":4032},"配合 definePageMeta",{"id":3515,"depth":1120,"text":3516},{"id":3725,"depth":1120,"text":3726},"md",{},"[object Object]",{"title":34,"description":35},"docs\u002F1.getting-started\u002F08.seo-meta","-W_-tcftyusldNcLL-50L_9f2LY5nuIqyhsTzQVpkFE",1785179852168]