系列文章目录:
[Vue]目录
老师的课件笔记,不含视频 https://www.aliyundrive.com/s/B8sDe5u56BU
SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与切换都在这唯一的一个页面内完成。
此时,不同组件之间的切换需要通过前端路由来实现。
在 SPA 项目中,不同功能之间的切换,要依赖于前端路由来完成。
vue-router 是 vue 的一个插件库,是 vue.js 官方给出的路由解决方案,专门用来实现 SPA 应用。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。
vue-router 目前有 3.x 的版本和 4.x 的版本。
其中:
vue-router 3.x 结合 vue2 进行使用,vue-router 3.x 的官方文档地址
vue-router 4.x 结合 vue3 进行使用,vue-router 4.x 的官方文档地址
一个路由就是一组映射关系(key - value),key 为路径, value 可能是 function 或 component。
一个路由 key 对应的 value 是 function 还是 component 取决于路由的类别。
路由分为前端路由和后端路由。
<html lang="en">
<head>
<meta charset="utf-8">
<title>Vue Apptitle>
<link rel="stylesheet" href="./css/bootstrap.css">
head>
<body>
<div>
<div class="row">
<div class="col-xs-offset-2 col-xs-8">
<div class="page-header"><h2>Vue Router Demoh2>div>
div>
div>
<div class="row">
<div class="col-xs-2 col-xs-offset-2">
<div class="list-group">
<a class="list-group-item active" href="./about.html">Abouta>
<a class="list-group-item" href="./home.html">Homea>
div>
div>
<div class="col-xs-6">
<div class="panel">
<div class="panel-body">
<h2>我是About的内容h2>
div>
div>
div>
div>
div>
body>
html>
<link rel="stylesheet" href="<%= BASE_URL %>css/bootstrap.css">
main.js
import Vue from 'vue'
import App from './App.vue'
//关闭vue的生产提示
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('#app')
App.vue
<template>
<div>
<div class="row">
<div class="col-xs-offset-2 col-xs-8">
<div class="page-header">
<h2>Vue Router Demoh2>
div>
div>
div>
<div class="row">
<div class="col-xs-2 col-xs-offset-2">
<div class="list-group">
<a class="list-group-item active" href="./about.html">Abouta>
<a class="list-group-item" href="./home.html">Homea>
div>
div>
<div class="col-xs-6">
<div class="panel">
<div class="panel-body">
<h2>点击导航后切换内容区h2>
div>
div>
div>
div>
div>
template>
<script>
// 导入子组件
export default {
name: 'App',
// 注册子组件
components: {
}
}
script>
Home.vue
<template>
<div>
<h2>Home组件h2>
div>
template>
<script>
export default {
name: 'Home'
}
script>
<style>
style>
About.vue
<template>
<div>
<h2>About组件h2>
div>
template>
<script>
export default {
name: 'About'
}
script>
<style>
style>
注意:
vue-router 3.x 结合 vue2 进行使用,vue-router 3.x 的官方文档地址
vue-router 4.x 结合 vue3 进行使用,vue-router 4.x 的官方文档地址
这里vue的版本为2.x,所以安装vue-router的3.x版本
npm i vue-router@3
由于 vue-router 是 vue 中的一个插件,所以使用 vue-router 需要先引入和使用 vue-router。
// 引入 vue-router
import VueRouter from 'vue-router'
// 使用 vue-router 插件
Vue.use(VueRouter)
在引入和使用 vue-router 之后,实例化 vue 实例对象时可以传入一个配置项 router。
目录结构:
router/index.js
// 该文件专门用于创建整个应用的路由器
import VueRouter from 'vue-router'
//引入组件
import About from '../components/About'
import Home from '../components/Home'
//创建并暴露一个路由器
export default new VueRouter({
// 路由,地址与组件的对应关系
routes:[
{
path:'/about',
component:About
},
{
path:'/home',
component:Home
}
]
})
main.js
import Vue from 'vue'
import App from './App.vue'
// 引入 vue-router
import VueRouter from 'vue-router'
// 引入路由器
import router from './router'
// 使用 vue-router 插件
Vue.use(VueRouter)
//关闭vue的生产提示
Vue.config.productionTip = false
new Vue({
render: h => h(App),
// 配置路由器
router: router
}).$mount('#app')
实现导航区地址的修改,需要使用 vue-router 提供的标签
,跳转到的地址通过 router-link 标签上的 to 属性指定。
跳转到的路由地址需要与路由器中配置的一致
激活时的样式可以通过 active-class 属性指定
<div class="col-xs-2 col-xs-offset-2">
<div class="list-group">
<router-link class="list-group-item" active-class="active" to="/about">Aboutrouter-link>
<router-link class="list-group-item" active-class="active" to="/home">Homerouter-link>
div>
div>
指定当前路由对应组件呈现的位置使用 router-view 标签。
<div class="col-xs-6">
<div class="panel">
<div class="panel-body">
<router-view>router-view>
div>
div>
div>
pages
文件夹,一般组件通常存放在components
文件夹。$route
属性,里面存储着自己的路由信息。$router
属性获取到。安装vue-router,命令:npm i vue-router
应用插件:Vue.use(VueRouter)
编写router配置项:
//引入VueRouter
import VueRouter from 'vue-router'
//引入Luyou 组件
import About from '../components/About'
import Home from '../components/Home'
//创建router实例对象,去管理一组一组的路由规则
const router = new VueRouter({
routes:[
{
path:'/about',
component:About
},
{
path:'/home',
component:Home
}
]
})
//暴露router
export default router
实现切换(active-class可配置高亮样式)
About
指定展示位置