Vue2笔记(五)Vue-Router

本文详细介绍了Vue2中的前端路由Vue Router的使用,包括路由的基本配置、动态路由、参数传递、路由嵌套、导航守卫以及keep-alive组件的使用。通过实例展示了如何安装、配置路由,以及如何实现页面间的动态跳转和数据传递,帮助理解Vue应用中的路由管理。
摘要由CSDN通过智能技术生成

Vue Router

什么是前端路由

一、路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动.

路由器提供了两种机制: 路由和转送.
路由是决定数据包从来源到目的地的路径.
转送将输入端的数据转移到合适的输出端.

路由中有一个非常重要的概念叫路由表.
路由表本质上就是一个映射表, 决定了数据包的指向.

二、前端渲染和后端渲染
1、后端渲染
如jsp,后端渲染好网页再传给前端

2、后端路由
后端处理url和页面之间的映射关系

3、前后端分离
后端只负责提供数据,不负责任何阶段的内容
ajax出现后出现的前后端分离模式
后端只提供api来返回数据,前端通过ajax获取数据,并且可以通过JavaScript将数据渲染到页面
ios和android出现后,后端不需要进行任何处理,依然使用之前的一套api即可

4、前端渲染
浏览器中显示的网页中的大部分内容,都是由前端写的js代码在浏览器中执行,最终渲染出来的网页。

5、单页面富(SPA)应用阶段
在前后端分离的基础上加了一层前端路由
也就是前端来维护一套路由规则
整个网站只有一个html页面

三、url的hash和html的history

前端路由的核心:改变url,但是页面不进行整体的刷新

1、依靠改变url的hash实现

​ URL的hash也就是锚点(#), 本质上是改变window.location的href属性.
​ 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新

2、Html5的history.pushState()实现

 history.pushState({
   },'','home')

3、Html5的history.replaceState()实现

由于是替换,所以,无法再浏览器中返回

4、Html5的history.go()实现

此外还有
history.go(n):
history.back():等价于history.go(-1)
history.forward():等价于history.go(1)

路由的基本配置

路由的安装

npm install vue-router --save

使用步骤

1.创建路由组件
在组件文件夹中创建Home.vue和About.vue组件模板
Home.vue

<template>
<div>
  <h2>我是首页</h2>
  <h4>我是首页内容,哈哈哈哈</h4>
</div>
</template>

<script>
export default{
  name:"Home"//模板名称
}
</script>

<style>
</style>

About.vue

<template>
<div>
<h2>我是关于</h2>
  <h4>我是关于页的内容,呵呵呵呵</h4>
</div>
</template>

<script>
export default{
  name:'About'//模板名称
}
</script>

<style>
</style>

2.配置组件和路径的映射关系

在router目录下的index.js中进行配置
要先导入home和about两个组件模板
创建router对象数组

import Vue from 'vue'
import Router from 'vue-router'
//导入home和about两个模板文件
import Home from '../components/Home'
import About from '../components/About'
//1、通过Vue.use(插件),安装插件
Vue.use(Router);

//2、创建Router对象
const routes = [
  //一个对象就是一个映射关系
  {
   
    path: '/home',//路径对应根/home
    component:Home
  },
  {
   
    path: '/about',//路径对应根/about
    component:About
  }
];

const router = new Router({
   
  routes
});

export default router;

3.使用路由

main.js引入

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

new Vue({
   
  el: '#app',
  router,
  render: h => h(App)
})

通过和
在App.vue模板文件中插入刚才创建并配置好的路由组件
router-link是vue默认的全局组件,可以只接拿来使用

和用来控制切换
同时添加to属性,指向各模板文件对应的路径
用于显示切换过来的自定义组件(home和about)

App.vue

<template>
  <div id="app">
    <router-link to="/home">首页</router-link>
    <router-link to="/about">关于</router-link>
    <router-view></router-view>

  </div>
</template>

<script>
export default {
  name: 'App',
  components: {
      
  }
}
</script>

<style> 
</style>

细节处理

路由的默认路径和history

让路径默认跳转到首页,并且router-view渲染首页文件
只要多配置一个映射即可

 //设置默认首页
const routes ={
   
    path: '/',
    component:Home
  }
// 但更简洁的方式是使用重定向到/home映射上去
const routes = {
   
    path: '/',
    redirect:'/home'
  }

在index.js中直接修改路由的配置模式为history(不显示路径中的#)

const router = new Router({
   
  routes,
  //配置浏览器地址栏模式
  mode:'history'
});

export default router;
router-link补充

还有一些其他属性:
tag: tag可以指定之后渲染成什么组件, 比如上面的代码会被渲染成一个

  • 元素, 而不是
    replace: replace不会留下history记录, 所以指定replace的情况下, 后退键返回不能返回到上一个页面中
    active-class: 当对应的路由匹配成功时, 会自动给当前元素设置一个router-link-active的class, 设置active-class可以修改默认的名称.
  • <router-link to="/home" tag="button" replace active-class="active">首页</router-link>
    

    修改linkActiveClass的名称

    在index.js中修改

    const router = new VueRouter({
         
    
     *// 配置路由和组件之间的应用关系*
    
     routes,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值