Vue实现路由跳转和嵌套
发布时间 - 2026-01-11 01:58:14 点击率:次一、配置 Router

用 vue-cli 创建的初始模板里面,并没有 vue-router,需要通过 npm 安装
cnpm i vue-router -D
安装完成后,在 src 文件夹下,创建一个 routers.js 文件,和 main.js 平级
然后在 router.js 中引入所需的组件,创建 routers 对象
import Home from './components/home.vue'
const routers = [
{
path: '/home',
name: 'home',
component: Home
},
{
path: '/',
component: Home
},
]
export default routers
在创建的 routers 对象中, path 配置了路由的路径,component 配置了映射的组件
需要注意的是,export default routers 必须写在文件底部,而且后面还需要接一空行,否则无法通过 ESlint 语法验证
然后 main.js 也需要修改:
import Vue from 'vue'
import VueRouter from 'vue-router'
import routers from './routers'
import App from './App'
Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
routes: routers
})
new Vue({
el: '#app',
router,
render: h => h(App)
})
在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化为 #! 开头。
添加 mode: 'history' 之后将使用 HTML5 history 模式,该模式下没有 # 前缀,而且可以使用 pushState 和 replaceState 来管理记录。
关于 html5 history 模式的更多内容,可以参考官方文档:https://router.vuejs.org/zh-cn/essentials/history-mode.html
二、嵌套路由
在这个实例中,为了加深项目层级,App.vue 只是作为一个存放组件的容器:
其中 <router-view> 是用来渲染通过路由映射过来的组件,当路径更改时,<router-view> 中的内容也会发生更改
上面已经配置了两个路由,当打开 http://localhost:8080 或者 http://localhost:8080/home 的时候,就会在 <router-view> 中渲染 home.vue 组件
home.vue 是真正的父组件,first.vue、login.vue 等子组件都会渲染到 home.vue 中的 <router-view>
如此一来,就需要在一级路由中嵌套二级路由,修改 routers.js
import Home from './components/home.vue'
import First from './components/children/first.vue'
import Login from './components/children/login.vue'
const routers = [
{
path: '/',
component: Home,
children: [
{
path: '/',
component: Login
}
]
},
{
path: '/home',
name: 'home',
component: Home,
children: [
{
path: '/',
name: 'login',
component: Login
},
{
path: 'first',
name: 'first',
component: First
}
]
}
]
export default routers
在配置的路由后面,添加 children,并在 children 中添加二级路由,就能实现路由嵌套
配置 path 的时候,以 " / " 开头的嵌套路径会被当作根路径,所以子路由的 path 不需要添加 " / "
三、使用 <router-link> 映射路由
home.vue 中引入了 header.vue 组件,其中含有导航菜单
当点击导航菜单的时候,会切换 home.vue 中 <router-view> 中的内容
这种只需要跳转页面,不需要添加验证方法的情况,可以使用 <router-link> 来实现导航的功能:
在编译之后,<router-link> 会被渲染为 <a> 标签, to 会被渲染为 href,当 <router-link> 被点击的时候,url 会发生相应的改变
如果使用 v-bind 指令,还可以在 to 后面接变量,配合 v-for 指令可以渲染导航菜单
如果对于所有 ID 各不相同的用户,都要使用 home 组件来渲染,可以在 routers.js 中添加动态参数:
{
path: '/home/:id',
component: Home
}
这样 "/home/user01"、"/home/user02"、"/home/user03" 等路由,都会映射到 Home 组件
然后还可以使用 $route.params.id 来获取到对应的 id
四、编程式导航
实际情况下,有很多按钮在执行跳转之前,还会执行一系列方法,这时可以使用 this.$router.push(location) 来修改 url,完成跳转
push 后面可以是对象,也可以是字符串:
// 字符串
this.$router.push('/home/first')
// 对象
this.$router.push({ path: '/home/first' })
// 命名的路由
this.$router.push({ name: 'home', params: { userId: wise }})
五、前车之鉴
在学习的过程中,遇到一个困扰许久的问题,大概是从 first 组件跳转回 login 之后,无法再跳转回去。但是 url 已经被修改,刷新页面也能正常显示。
这是因为我在 first.vue 组件中的 data 里面没有写 return
在 vue 组件中,data 必须写为函数,且需要用 return 来返回参数。但是当 data 为空时,即使不写 return 也不会报错,所以导致了上面的问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue嵌套路由跳转
# vue
# 路由嵌套
# vue.js
# 路由跳转
# vue跳转页面的几种方法(推荐)
# 详解vue 路由跳转四种方式 (带参数)
# VueJs路由跳转——vue-router的使用详解
# vue-router跳转页面的方法
# vue跳转方式的常见方式以及区别分析
# 跳转
# 可以使用
# 还可以
# 不需要
# 象中
# 的是
# 就会
# 也不
# 我在
# 也会
# 在这个
# 都要
# 就能
# 有很多
# 模式下
# 还会
# 也能
# 前车之鉴
# 会在
# 并在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
使用Dockerfile构建java web环境
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
如何在Windows虚拟主机上快速搭建网站?
高端建站如何打造兼具美学与转化的品牌官网?
Laravel Docker环境搭建教程_Laravel Sail使用指南
javascript如何操作浏览器历史记录_怎样实现无刷新导航
网站制作壁纸教程视频,电脑壁纸网站?
网站制作企业,网站的banner和导航栏是指什么?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
智能起名网站制作软件有哪些,制作logo的软件?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
node.js报错:Cannot find module 'ejs'的解决办法
网站建设整体流程解析,建站其实很容易!
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Python文件操作最佳实践_稳定性说明【指导】
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
北京网站制作的公司有哪些,北京白云观官方网站?
Laravel如何创建自定义中间件?(Middleware代码示例)
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何挑选优质建站一级代理提升网站排名?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
浅谈redis在项目中的应用
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
魔方云NAT建站如何实现端口转发?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
简单实现jsp分页
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
如何在建站之星网店版论坛获取技术支持?
如何用美橙互联一键搭建多站合一网站?
JavaScript如何实现继承_有哪些常用方法
如何获取PHP WAP自助建站系统源码?
PHP 500报错的快速解决方法
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何实现javascript表单验证_正则表达式有哪些实用技巧
python中快速进行多个字符替换的方法小结
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
长沙做网站要多少钱,长沙国安网络怎么样?
Android实现代码画虚线边框背景效果
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
如何在IIS服务器上快速部署高效网站?

