首页 > 其他分享 >Vue路由插件使用 -- vue-router

Vue路由插件使用 -- vue-router

时间:2023-02-21 20:48:06浏览次数:29  
标签:插件 vue name -- 跳转 router login 路由

Vue路由插件使用 -- vue-router

路由插件可以在创建项目时就在手动配置时下载安装。

如果没有创建时没有下载,那也可以用npm或cnpm安装。

npm install vue-router@4

路由设置与路由分发

router/index.js设置路由

创建vue项目时如果安装了router模块,那么在src中会自动生成router文件夹,其中的index.js帮助我们初始化引入了插件,并引用到了main.js中。

import HomeView from '../views/HomeView.vue'

const routes = [
    {
        path: '/',  // 路由,/表示根路径
        name: 'home',  // 在通过对象跳转时会用到
        component: HomeView  // 可以先导入视图,然后注册
    },
    {
        path: '/login',
        name: 'login',
        component: () => import( '../views/LoginView.vue')  
        // 也可以直接通过箭头函数导入视图组件
    },
]

路由分发

在App.vue的模板中写入分发路由的标签<router-view/>即可:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

一般来说,app只需要加这一个路由组件即可,因为每个视图界面可能完全不一样,没有共有元素,app中的标签肯定是每个界面都会展示的。

基本路由跳转

点击跳转的两种方式

  • js控制

    //  @click="handleClick"
    handleClick(){
        // 路由跳转方式
        this.$router.push('/login')  // push(path) path对应路由配置中的path
        // 对象跳转方式
        this.$router.push({
            name:'/login',
             // 如果要携带数据的话,以下是携带数据的两种方式
            query:{name:'leethon',age:19},
            params:{id:2}
        })
    }
    
    
  • 标签控制

    <router-link to="/login">
        <button>点我跳转到home页面</button>
    </router-link>
    

携带数据跳转路由的两种方式

  • 通过查询形式携带 /book/?id=1

    // /book/?id=1
    // 在对应的视图组件中,我们可以通过.$route.query获取
    this.$route.query.id
    
  • 通过动态路由捕获 /book/1/

    // 在对应的视图组件中,我们可以通过.$route.params获取
    this.$route.params.id
    // 这种需要在路由配置中对路径做处理,“:”表示捕获
    path: '/book/:id'
    

区分$router$route

this.$router:new VueRoute实例,可以实现路由的跳转

this.$route:是当前路由对象,内部有传入的参数

使用对象跳转的两种方式

  • js代码

    this.$router.push({
        name: 'login',
    	/*?携带的数据*/
        query: {name: 'leethon', age: 19},
        /*动态路由携带的数据*/
        params: {id: 2}
    })
    

    以上对象会自动将路由转换为login/2/?name=leethon&age=19

  • 标签跳转

    <router-link :to="{name: 'login', query: {name: 'leethon'}, params: {id: 2}}">
        <button>点我跳转到home页面</button>
    </router-link>
    

    注意to中默认不能传对象,使用v-bind写法后可以绑定对象

路由守卫

这里简单介绍一下:全局前置路由守卫

router.beforeEach((to, from, next) => {}

  • to:去哪个路由对象,route对象,包含name等属性
  • from:从哪个路由来,route对象
  • next:函数,执行next()则跳转到原本要去的路由
router.beforeEach((to, from, next) => {
    if (to.name==='login'){
        next()  // 放行
    }else{
        let jwt_token = JSON.parse(localStorage.getItem('Authorization'))
        if (jwt_token){
            // 这里暂时没有向后端发校验,只要有,我就让它访问
            next()  // 如果内部不传参数,那么去原本的to
        }else{
            alert('您还没有登录!')
            next({name:'login'})  // 内部传入to对象,含name,query,params属性的对象
        }
    }
})

标签:插件,vue,name,--,跳转,router,login,路由
From: https://www.cnblogs.com/Leethon-lizhilog/p/17142323.html

相关文章

  • 2023.2.21
    今天下午是模拟赛,机房里两位大佬AK了,咱是爆零。所以好好学习天天向上继续努力......今日比赛题目:(洛谷)P1521求逆序对(进阶版是P2513逆序对数列)、P2511木棍分割、石子......
  • 【Spring AOP】【七】Spring AOP源码解析-代理对象执行过程
    1 前言不知道你现在清晰了没,我们一路从AOP的基础概念,到AOP配置的解析,到AOP在Bean的生命周期的切入时机以及创建代理的过程一步步走下来,脑瓜还清晰不,那我们是不是就该到......
  • Vue-cli混入、elementUI的使用、vue-router、Vuex
    目录混入、elementUI的使用、vue-router、Vuex一、Vue项目改成比较纯净的状态及props其他使用1.Vue项目改成纯净的项目2.props的其他使用二、混入(mixin)三、elementUI的使......
  • scrcpy不使用adb远程控制android
    1.开启服务器CLASSPATH=/data/local/tmp/scrcpy-server.jarapp_process/com.genymobile.scrcpy.Server1.23log_level=infobit_rate=8000000cleanup=falsetunnel_......
  • 解决ssh端口无法连接的问题
    问题描述:kex_exchange_identification:read:ConnectionresetbypeerConnectionresetby106.15.43.140port22这个问题从我刚接触云服务器,再到给导师搭建知识库系......
  • consul 安装使用
    安装dockerrun-d-p8500:8500-p8300:8300-p8301:8301-p8302:8302-p8600:8600/udpconsulconsulagent-dev-client=0.0.0.0 访问地址:http://192.168.244.......
  • SharePoint Online 列表视图的隔行变色
    前言最近碰到一个需求,用户觉得默认的列表视图太单调了,想要做一个隔行变色,没问题!安排!!正文1.进入到我们需要处理的列表,选择AllItems,点击Formatcurrent......
  • pat1010
    题不难,但是代码有一个结果报错,猜测可能如果输入0000234的话,可能会输出-1?先标记一下看看别人的#include<iostream>#include<stdio.h>usingnamespacestd;intmain(......
  • 配置 brew 源
    替换成国内源:cd"$(brew--repo)"gitremoteset-urloriginhttps://mirrors.ustc.edu.cn/brew.gitcd"$(brew--repo)/Library/Taps/homebrew/homebrew-core"gitremot......
  • 为何选择用scrum敏捷看板工具
    首先:什么是Scrum?Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一......