- 配置参考 Configuration
- 入门指南
- 介绍 Introduction
- 安装 Installation
- 配置 Configuration
- 视图 Views
- 资产 Assets
- 路由 Routing
- SEO and Meta
- 过渡 Transitions
- 数据获取 Data Fetching
- 状态管理 State Management
- 错误处理 Error handling
- 层结构 Layers
- 部署 Deployment
- 测试 Testing
- 升级指南 Upgrade Guide
- 核心概念
- 自动导入 Auto imports
- Vue.Js Vue.js Development
- 渲染模式 Rendering Modes
- 服务端引擎 Server Engine
- 模块化 Modules
- ES模块 ES Modules
- TypeScript TypeScript
- 目录结构
- 可组合项
- 组件
- 工具库
- fetch
- abortNavigation
- addRouteMiddleware
- clearError
- clearNuxtData
- createError
- defineNuxtComponent
- defineNuxtRouteMiddleware
- definePageMeta
- navigateTo
- onBeforeRouteLeave
- onBeforeRouteUpdate
- onNuxtReady
- prefetchComponents
- preloadComponents
- preloadRouteComponents
- refreshNuxtData
- reloadNuxtApp
- setPageLayout
- setResponseStatus
- showError
- updateAppConfig
- CLI 命令
- 进阶
- 深入探究
- 迁移指南
页面和布局 Pages Layouts
app.vue
Nuxt 3 通过 ~/app.vue
为您的应用程序提供一个中央入口点。 如果你的源目录中没有 app.vue
文件,Nuxt 将使用它自己的默认版本。
此文件非常适合放置任何需要在您的应用程序启动时运行一次的自定义代码,以及您应用程序每个页面上出现的任何组件。 例如,如果您只有一个布局,则可以将其移至 app.vue
。
迁移步骤
如果您在应用程序中为多个页面使用布局,则只需稍作更改。
在 Nuxt 2 中,<Nuxt>
组件在布局中用于呈现当前页面。 在 Nuxt 3 中,布局使用插槽代替,因此您必须用 <slot />
替换该组件。 这也允许具有命名和作用域插槽的高级用例。 阅读更多关于布局的信息。
您还需要使用“definePageMeta”编译器宏更改定义页面使用的布局的方式。 布局将采用烤肉串包装。 因此,当在您的页面中引用时,layouts/customLayout.vue
变成了 custom-layout
。
迁移步骤
Nuxt 3 附带一个可选的“vue-router”集成,由源目录中存在的“pages/”目录触发。 如果你只有一个页面,你可以考虑将它移动到 app.vue
以获得更轻的构建。
动态路由
全局 NuxtLink 组件的大部分语法和功能都是相同的。 如果您一直在使用快捷方式 <NLink>
格式,您应该更新它以使用 <NuxtLink>
。
<NuxtLink>
现在是 all 链接的直接替代品,甚至是外部链接。 您可以阅读更多关于它的信息,以及如何扩展它以提供您自己的链接组件,在文档中。
编程式导航
从 Nuxt 2 迁移到 Nuxt 3 时,您将必须更新以编程方式导航用户的方式。 在 Nuxt 2 中,您可以使用 this.$router 访问底层的 Vue 路由器。 在 Nuxt 3 中,您可以使用 navigateTo()
实用方法,它允许您将路由和参数传递给 Vue Router。
注意: 确保始终在 navigateTo
上进行 await
或通过从函数返回来链接它的结果。
<script>
export default {
methods: {
navigate(){
this.$router.push({
path: '/search',
query: {
name: 'first name',
type: '1'
}
})
}
}
}
</script>
Nuxt 3<script setup>
const router = useRouter();
function navigate(){
return navigateTo({
path: '/search',
query: {
name: 'first name',
type: '1'
}
})
}
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论