全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue实现路由跳转和嵌套

一、配置 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跳转方式的常见方式以及区别分析  # 跳转  # 可以使用  # 还可以  # 不需要  # 象中  # 的是  # 就会  # 也不  # 我在  # 也会  # 在这个  # 都要  # 就能  # 有很多  # 模式下  # 还会  # 也能  # 前车之鉴  # 会在  # 并在 


相关文章: 如何快速生成凡客建站的专业级图册?  网站制作壁纸教程视频,电脑壁纸网站?  css网站制作参考文献有哪些,易聊怎么注册?  建站之星安装提示数据库无法连接如何解决?  如何在建站之星网店版论坛获取技术支持?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  建站之星如何助力网站排名飙升?揭秘高效技巧  青岛网站建设如何选择本地服务器?  如何做静态网页,sublimetext3.0制作静态网页?  潮流网站制作头像软件下载,适合母子的网名有哪些?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何在IIS7中新建站点?详细步骤解析  香港服务器如何优化才能显著提升网站加载速度?  建站主机选购指南:核心配置与性价比推荐解析  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  建站之星安装后界面空白如何解决?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  中山网站推广排名,中山信息港登录入口?  如何快速使用云服务器搭建个人网站?  海南网站制作公司有哪些,海口网是哪家的?  如何选择高效便捷的WAP商城建站系统?  如何通过网站建站时间优化SEO与用户体验?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  高防服务器租用指南:配置选择与快速部署攻略  魔方云NAT建站如何实现端口转发?  PHP 500报错的快速解决方法  建站之星在线版空间:自助建站+智能模板一键生成方案  建站之家VIP精选网站模板与SEO优化教程整合指南  如何高效完成独享虚拟主机建站?  如何在阿里云部署织梦网站?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何高效利用亚马逊云主机搭建企业网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  建站之星导航配置指南:自助建站与SEO优化全解析  设计网站制作公司有哪些,制作网页教程?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  在线制作视频网站免费,都有哪些好的动漫网站?  建站主机SSH密钥生成步骤及常见问题解答?  如何确保西部建站助手FTP传输的安全性?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何快速搭建响应式可视化网站?  安云自助建站系统如何快速提升SEO排名?  建站之星多图banner生成与模板自定义指南  建站之星后台密码遗忘?如何快速找回?  如何通过西部数码建站助手快速创建专业网站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  建站DNS解析失败?如何正确配置域名服务器?  淘宝制作网站有哪些,淘宝网官网主页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。