vue-router 的基本使用-vue router routes

2023-08-07 20:18:48

 

1、下载

使用仪表盘下载

1、下载

使用仪表盘下载
使用 cmd下载

ABAP $ npm i vue-router 或 $ yarn add vue-router

2、单路由使用

1、创建一个router 文件,方便管理路由

router -> index.js

import Vue from vue import Router from vue-router Vue.use( Router ) import Home from ../pages/Home import News from ../pages/News export default new Router( { routes:[ { path:/, name:home, component:Home },{ path:/news, name:News, component:News } ] } )

2、此时我们创建两个模块

Home 主页News 新闻

Home -> index.vue

<template> <div class="Home" > <h1>Home</h1> <router-link to="/news" > go to news </router-link> </div> </template> <script> export default { name: "Home" }; </script> <style> </style>

News -> index.vue

<template> <div class="News" > <h1> News </h1> <router-link to="/" > to go Home </router-link> </div> </template> <script> export default { name:News } </script> <style> </style>

3、在main.js 文件下引用 router

main.js

import Vue from vue import App from ./App.vue import router from ./router/index Vue.config.productionTip = false new Vue({ render: h => h(App), router }).$mount(#app)

4、在app.vue 根文件中,开启路由

<template> <div id="app"> <router-view /> </div> </template> <script> export default { name: App } </script>

5、最后的效果展示

3、嵌套路由

此时我们在原有的路由基础上去修改

1、修改路由配置文件

router -> index.js

... import Login from ../pages/Login ... component:News, ... children:[ { path:/news/login, name:Login, component:Login } ] ...

Login -> index.vue

<template> <div class=Login > <h1>Login</h1> </div> </template> <script> export default { name:Login, data(){ return{ } }, } </script> <style> </style>

2、打开news 下面的二级路由

<router-link to="/" > to go Home </router-link><br> ... <router-link to="/news/login" > to go Login </router-link> <router-view /> ...

3、查看效果

<img src="https://s1.imagehub.cc/images/2021/03/31/QQ20210331220121.png" style="zoom:50%;" />

4、路由重定向

1、在原有的基础上,我们修改路由的文件

router -> index.js

... { path:/home, name:home, component:Home }, ... { path:/, redirect:/home } ...

2、效果

此时我们访问根路径的时候,就会重定向到/home,这就是重定向的效果

5、路由跳转

在之前的例子中,我们已经使用了一种跳转方式

<router-link to="/news" > go to news </router-link>

但是这种方式在我们实际的开发中,是完全不够的

1、push 跳转

Home -> index.vue

... <el-button type="text" @click="toNews" > news </el-button> ... toNews(){ this.$router.push(/news) } ...

News -> index.vue

... <el-button type="text" @click="toHome" > Home </el-button> <el-button type="text" @click="toLogin" > Login </el-button> ... <router-view /> ... methods:{ toHome(){ this.$router.push( /home ) }, toLogin(){ this.$router.push( /news/login ) } } ...

效果

2、replace

用法同上,push

3、go

News -> index.js

.... <el-button type="text" @click="toBack" > 返回上一级 </el-button> <el-button type="text" @click="toNext" > 去下一级 </el-button> .... toBack(){ this.$router.go( -1 ) }, toNext(){ this.$router.go( 1 ) }

效果我就不展示了

6、路由守卫

在开发中,我们会判断进入某一个路由是否已经登录了,如果没有登录,那我们就需要让他返回到登录的页面,这种业务逻辑,就可以交给我们 守卫 来完成

1、添加守卫

router -> index.js

router.beforeEach( /** * * @param {*} to 将要访问的路径 * @param {*} from 代表重那个路径跳转而来 * @param {*} next 一个函数,表示放行 */ ( to,from,next ) => { const token = localStorage.getItem( token ) if( to.path === /login ){ // 此时如果存在 token 就不允许进入 login 了 if( token ){ return next( /home ) } return next() } if( token ){ next() } else { return next( /login ) } } )

2、伪登录

Login -> index.vue

... <el-button type="text" @click="Login" > 登录 </el-button> ... Login(){ localStorage.setItem( token,"Login" ) this.$router.push( /home ) }

3、效果


以上就是关于《vue-router 的基本使用-vue router routes》的全部内容,本文网址:https://www.7ca.cn/baike/60032.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜