vue router

前端路由的核心是什么呢?
改变url,但是页面不进行整体的刷新。
在这里插入图片描述

  1. 利用url 的hash
    location.hash = ‘qqwe’
    2.html5新增的history模式: pushState
    这种方式类似于向栈里添加数据
    history.pushState({ data }, ’ title’, 'url ')
    history.back() //出栈

3.replaceState
history.replaceState({ data }, ’ title’, ‘url ‘)
这种方式后不能返回!
4… history.go(-1) = history.back()
history.go(1)= history.forward()
history.pushState({},’’,‘qwe’)
undefined
history.pushState({},’’,‘1’)
undefined
history.pushState({},’’,‘2’)
undefined
history.pushState({},’’,‘3’)
undefined
history.pushState({},’’,‘4’)
undefined
history.go(-1)
undefined
history.go(-3)
undefined

使用vue-router

在index.js 里配置路由相关信息

1.import VueRouter from ‘vue-router’ 导入vuerouter
2. 通过vue。use插件 安装插件
3. 配置路由和组件之间的应对关系
4.将router对象传出到vue实例中

import Vue from 'vue' 第三
import VueRouter from 'vue-router'  第一步
// 1.通过vue.use(插件),安装插件
Vue.use(VueRouter)    第二步

// 2.创建vuerouter对象 
 const routes = [   第五

 ]
const router = new VueRouter({   第四
  routes     本来是   routes : routes 简写为routes
})
// 3.将router对象传出到vue实例中
  export default router  第六

第一步创建路由组件

<template>
  <div>
      <h1>hu</h1>
  </div>
</template>

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

<style>

</style>``

在这里插入图片描述
第二步,配置路由映射 : 组件和路径映射之间的关系

使用前别忘了先导入组件

import Home from '../components/Home'
import You from '../components/You'
const routes = [
   {
    path: '/home',
    components: Home
   },
   {
    path: '/about',
    components: You
   }

]

接下来就是使用路由,

在这里插入图片描述
router-view 里显示

重定向! 让用户进入界面时就显示这个路由组件
redirect :
在这里插入图片描述

利用history 改变路劲改变模式
在这里插入图片描述
在前面的
在这里插入图片描述
router-link 的to属性用于指定跳转路径
router-link 默认渲染成a标签
tag属性可以渲染成其他属性 tag= ‘li’

在router-link中添加一个 replace 不需要写其他的了 即不能返回
用法

<router-link to='/home' replace tag='button'> h ome</router-link>

在配置路由的属性里有一个 LinkActiveClass :‘ name ’
可以同意修改动态活跃时的class名字

通过代码跳转路由

1.先监听函数
2.函数方法为
tohome() {
this.$router.push(’/home’)
// huozhe this.

$

router.replace(’/home’)‘’
}

动态路由

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200731095232466.png)

<router-link v-bind:to="'/home'+userid" replace tag='button'> h ome</router-link>

这里的userid是下面动态获取的数据

如何在页面中显示动态获取的数据呢?
在这里插入图片描述
route拿到的是处于活跃状态的路由

在这里插入图片描述

路由懒加载

const Home = () => import('../components/Home.vue')
const You = () => import('../components/You.vue')
const Use = () => import('../components/Use.vue')
Vue.use(VueRouter)


  const routes = [
    {
      path: '',
      // name: 'Home',
      redirect:'home'
    },
  {
    path: '/home',
    // name: 'Home',
    component: Home
  },

路由嵌套

在这里插入图片描述

 {
    path: '/home',
    component: Home,
    meta: {
       title: 'shouye'
     },
    children: [
      {
        path: '',
        redirect: 'news'
      },
      {
        path:'news' ,// 不用加 /
        component: HomeNews,
        // meta: {
        //   title: 'shouye'
        // },
      },
      {
        path:'qwe' ,// 不用加 /
        component: Qwe,
        // meta: {
        //   title: 'shouye'
        // },
      }
    ]
  },``

下一步在组件内部使用router-link标签
同时使用router-view显示内容

<router-link to='/home/news'>asdad</router-link>
        <router-link to='/home/qwe'>2d</router-link>
    <router-view></router-view>
    

参数传递

    <router-link :to="{path : '/profile',query: {name: 'qwe',age:19,height:1.88} }">dangan </router-link>

方式1
在这里插入图片描述
方式2
在这里插入图片描述

获取参数

在这里插入图片描述
在这里插入图片描述

导航守卫

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  document.title = to.matched[0].meta.title

在这里插入图片描述
在这里插入图片描述

为了记录上一次离开的位置

<keep-alive>
          <router-view></router-view>
        </keep-alive>
 activated() {   //这个函数只有在使用了keep-alive包裹了才有效
        this.$router.push(this.path)
       console.log('huoue');
     },
  beforeRouteLeave(to,from,next) {
       console.log(this.$route.path);
       this.path=this.$route.path;
       next()
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值