Vue路由一(简介、分类、基本使用、注意事项)

1. 简介

  1. 路由就是一组key:value的对应关系。vue可能是function或component
  2. 多个路由,需要经过路由器管理

路由

是为了实现SPA(single page web application)单页面应用。以前需要实现多个html,现在只需实现一个html就能达到多个html的功能。如点击导航区的班级管理,只有url地址发生变化,而页面不会刷新,也不会打开新的标签页
SPA应用

SPA的原理:当我们点击班级管理,router发现url路径变成了/class,就会去加载班级组件;router发现url路径变成了/subject,就会去加载学科组件
SPA的原理

2. 路由的分类

路由vue-router是vue的一个插件库,专门用来实现SPA应用

  • 后端路由:
    • 理解:value是function, 用于处理客户端提交的请求
    • 工作过程:服务器接收到一个请求时, 根据请求路径找到匹配的函数
      来处理请求, 返回响应数据
  • 前端路由:
    • 理解:key是url的路径,value是component,用于展示页面内容
    • 工作过程:当浏览器的路径改变时, 对应的组件就会显示

3. 基本使用

  1. 使用命令cnpm install vue-router@3安装路由插件
  2. 同时使用命令cnpm install bootstrap@3安装bootstrap,后面的示例会用到里面的bootstrap.css
  3. About.vue
<template>
  <h2>我是About的内容</h2>
</template>

<script>
  export default {
    name: 'About'
  }
</script>
  1. News.vue
<template>
	<h2>我是News的内容</h2>
</template>

<script>
	export default {
		name:'News'
	}
</script>
  1. src/router/index.js。创建路由器,定义url路径和组件的映射规则。如访问/about就加载About组件
// 该文件专门用于创建整个应用的路由器
import VueRouter from 'vue-router'
// import {createRouter} from 'vue-router'

// 引入组件
import About from '../components/About'
import News from '../components/News'

// 创建并暴露一个路由器
// export default createRouter({})
export default new VueRouter({
	routes:[
		{
			path:'/about',
			component:About
		},
		{
			path:'/news',
			component:News
		},
		{
			path:'/',
			redirect:'/about'
		}
	],
	// 设置每次url跳转后,右侧滚动条的位置
	scrollBehavior() {
	    return {
	        left: 0,
	        top: 0
	    }
    }
})
  1. App.vue
    • 这里的css都是通过import 'bootstrap/dist/css/bootstrap.css'来实现的
    • 使用<router-link>标签,来实现<a>标签的跳转效果,最终也会被解析成<a>标签。to表示跳转的路径,就会激活路由器路径对应的组件,当点击当前标签时会激活active-class所在的css样式
    • <router-view>用于显示激活的组件
<template>
  <div>
    <div class="row">
      <div class="col-xs-offset-2 col-xs-8">
        <div class="page-header"><h2>Vue Router Demo</h2></div>
      </div>
    </div>
    <div class="row">
      <div class="col-xs-2 col-xs-offset-2">
        <div class="list-group">
          <!-- 原始html中我们使用a标签实现页面的跳转 -->
          <!-- <a class="list-group-item active" href="./about.html">About</a> -->
          <!-- <a class="list-group-item" href="./news.html">News</a> -->

          <!-- Vue中借助router-link标签实现路由的切换 -->
          <router-link class="list-group-item" active-class="active" to="/about">About</router-link>
          <router-link class="list-group-item" active-class="active" to="/news">News</router-link>
        </div>
      </div>
      <div class="col-xs-6">
        <div class="panel">
          <div class="panel-body">
            <!-- 原始html中我们使用h2标签直接显示内容 -->
            <!-- <h2>我是XXX的内容</h2> -->

            <!-- 指定组件的呈现位置 -->
            <router-view></router-view>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
  import 'bootstrap/dist/css/bootstrap.css'

	export default {
		name:'App'
	}
</script>
  1. main.js。引入路由插件并使用路由插件;引入路由器,并开启路由器
import Vue from 'vue'
import App from './App.vue'

// 引入VueRouter
import VueRouter from 'vue-router'
// 引入路由器
import router from './router'

Vue.config.productionTip = false

Vue.use(VueRouter)

const vm = new Vue({
    el: '#app',
    router: router,
    render: h => h(App)
})
  1. 启动项目。先访问http://localhost:8080/#/的页面显示效果如下。导航栏没有激活css样式,而且内容区也没显示内容

访问首页

点击About,页面的url变成了http://localhost:8080/#/about,但是并没有重新加载一次页面。页面显示如下。导航栏的About激活css样式,而且内容区显示About组件的内容

显示About组件

点击News,页面的url变成了http://localhost:8080/#/news,但是并没有重新加载一次页面。页面显示如下。导航栏的News激活css样式,而且内容区显示News组件的内容

显示News组件

4. 注意事项

  1. 路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹
  2. 通过在导航栏切换,路由组件默认是被销毁掉的,需要的时候再去挂载
  3. 每个组件都有自己的$route属性,里面存储着自己的路由信息
  4. 整个应用只有一个router,可以通过组件的$router属性获取到
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值