vue-router 路由创建、路由嵌套、二级路由

前言

首先先安装好Vue CLI
Vue CLI安装参考:Vue 自定义项目的创建以及配置
vue-router中文官网:https://router.vuejs.org/zh/

说明

在这里插入图片描述

在项目目录下创建 “1_src_路由起步“ 等文件夹不会拖慢项目运行,因为不符合规则,CLI不会识别此文件夹。
路由起步,嵌套路由等知识点相关文件都会放在相关文件夹中。以免学习过程中文件过多混乱。

一、路由起步

二、使用步骤

1.创建项目

Vue CLI安装参考:Vue 自定义项目的创建以及配置

安装好项目后,项目目录如下:
在这里插入图片描述

2.安装路由

(依照上一步创建出的项目自带 vue-router,如果用其他方式创建项目没有 vue-router 需要安装)
打开项目下 package.json 文件,先查看 vue 版本。
vue 版本为 2.x,建议 vue-router 安装 3.x 版本。
vue 版本为 3.x,建议 vue-router 安装 4.x 版本。
在这里插入图片描述
随后在该项目目录下输入命令

npm install vue-router@版本号

3.创建文件

打开 src 文件夹,创建以下几个文件(有的默认创建好了,本次只创建了Test.vue)
在这里插入图片描述

1.Test.vue文件

开发一个单页面组件

<template>
	<div>
		<h2>Test</h2>
	</div>
</template>

<script>
	// 导出
	export default {
		name: 'TestItem'
	}
</script>

<style>
</style>
2.index.js文件

配置到路由规则上

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import Test from '../views/Test.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  },
  {
    path: '/test',
    name: 'Test',
    component: Test
  }
]

const router = new VueRouter({
  routes
})

export default router

3.App.vue文件

显示在页面中

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link> |
      <router-link to="/test">Test</router-link>
    </nav>
    <router-view/>
  </div>
</template>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

nav {
  padding: 30px;
}

nav a {
  font-weight: bold;
  color: #2c3e50;
}

nav a.router-link-exact-active {
  color: #42b983;
}
</style>

三、运行项目

1.在项目文件下打开cmd,输入yarn serve

在这里插入图片描述

2.打开浏览器,访问 http://localhost:8080/

在这里插入图片描述

3.点击Test,页面无需刷新,跳转至http://localhost:8080/#/test

在这里插入图片描述

二、嵌套路由

将第一部分《路由起步》中 src 下的文件放入 “1_src_路由起步” 中

1、创建文件

红色箭头为一级页面,蓝色箭头为二级页面
在这里插入图片描述

2、修改文件

1、一级页面配置

1、Course.vue

一级页面

<template>
  <nav>
    <h3>选课页面</h3>
  </nav>
</template>

<script>
// 导出
export default {
  name: 'CourseItem'
}
</script>

<!-- scoped 样式作用域   lang 样式(css less sass) -->
<style scoped="scoped">
/* scoped 作用于本页面 */
nav {
  padding: 30px;
}

nav a {
  font-weight: bold;
  color: #d66363;
}

nav a.router-link-exact-active {
  color: #00ff8c;
}
</style>
2、index.vue

将一级页面配置到路由规则上

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import Course from '../views/Course.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: HomeView
  },
  {
    path: '/course',
    name: 'Course',
    component: Course
  }
]

const router = new VueRouter({
  routes
})

export default router
3、App.vue

将一级页面显示到页面

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/course">选课中心</router-link>
    </nav>
    <router-view/>
  </div>
</template>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

nav {
  padding: 30px;
}

nav a {
  font-weight: bold;
  color: #ff0000;
}

nav a.router-link-exact-active {
  color: #42b983;
}
</style>

2、二级页面配置

1、Html.vue

二级页面

<template>
  <h3>HTML页面</h3>
</template>

<script>
export default {
  name: 'HT'
}
</script>

<style>
</style>

2、CSS.vue

二级页面

<template>
  <h3>CSS页面</h3>
</template>

<script>
export default {
  name: 'CSS'
}
</script>

<style>
</style>
3、index.js

在index.js中引入二级页面并配置路由

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import Course from '../views/Course.vue'
import Ht from '../views/Html.vue'
import Cs from '../views/CSS.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: HomeView
  },
  {
    path: '/course',
    name: 'Course',
    component: Course,
    // 二级路由
    children: [{
      path: '/html',
      component: Ht
    }, {
      path: '/css',
      component: Cs
    }]
  }
]

const router = new VueRouter({
  routes
})

export default router
3、Course.js

将二级页面显示

<template>
  <nav>
    <router-link to="/html">HTML</router-link> |
    <router-link to="/css">CSS</router-link>
    <hr>
    <router-view/>
  </nav>
</template>

<script>
// 导出
export default {
  name: 'CourseItem'
}
</script>

<!-- scoped 样式作用域   lang 样式(css less sass) -->
<style scoped="scoped">
/* scoped 作用于本页面 */
nav {
  padding: 30px;
}

nav a {
  font-weight: bold;
  color: #d66363;
}

nav a.router-link-exact-active {
  color: #00ff8c;
}
</style>

3、运行

与上述运行方法一致。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue-RouterVue.js官方提供的路由管理插件,可以实现单页面应用(SPA)中的路由切换。在Vue-Router中,我们可以通过嵌套路由来管理复杂的页面结构和页面间的跳转逻辑。 路由嵌套是指在一个路由组件中嵌套其他子路由组件,形成一个父子关系的层级结构。通过路由嵌套,我们可以更好地管理页面的细节和逻辑。 在Vue-Router中,我们首先需要定义路由的层级结构。我们可以在路由配置中使用`children`属性来定义嵌套路由。例如: ```js const router = new VueRouter({ routes: [ { path: '/home', component: Home, children: [ { path: 'about', component: About }, { path: 'contact', component: Contact } ] } ] }); ``` 在上面的代码中,我们定义了一个名为`home`的父路由,它有两个子路由`about`和`contact`。当用户访问`/home/about`时,会渲染`About`组件,而当用户访问`/home/contact`时,会渲染`Contact`组件。 在嵌套路由中,父路由的组件中需要使用`<router-view>`标签来显示子路由对应的组件。在上面的例子中,我们需要在`Home`组件中添加`<router-view>`标签。 ```html <template> <div> <h1>Home</h1> <router-view></router-view> </div> </template> ``` 当用户访问`/home`时,会渲染`Home`组件,并且`<router-view>`标签中会显示子路由对应的组件。 通过嵌套路由,我们可以更好地管理页面的结构和逻辑,将页面分成多个模块,并且可以在子路由中访问父路由的数据和方法。我们可以在路由跳转时传递参数,通过使用`$route.params`来获取参数。 总结来说,Vue-Router路由嵌套可以实现复杂的页面结构和页面间的跳转逻辑,通过定义父子关系的路由层级结构,使用`<router-view>`标签来显示子组件,并且可以通过路由传递参数来实现页面间的数据共享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李子木、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值