Web前端vue必做笔记之一:路由功能
配置路由index.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import Blog from '../views/Blog.vue'
import Video from '../views/Video.vue'
import Login from '../views/Login.vue'
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/blog',
name: 'Blog',
component: Blog
},
{
path: '/video',
name: 'Video',
component: Video
},
{
path: '/login',
name: 'Login',
component: Login
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
//导航守卫
router.beforeEach( (to, from, next) => {
if(to.path !== '/login'){
if(localStorage.getItem('usr')){
next(); //正常访问
}else{
next('/login')
}
}else{
next();
}
})
export default router
登录页组件
<template>
<div>
<form @submit.prevent="doLogin">
<input type="text" v-model="username">
<input type="text">
<button>登录</button>
</form>
</div>
</template>
<script>
export default {
data(){
return {
username:''
}
},
methods:{
doLogin(){
console.log(this.username);
//本地存储
localStorage.setItem("usr",this.username);
this.$router.push("/");
}
}
}
</script>
App.vue页面
<template>
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/blog">博客</router-link> |
<router-link to="/video">视频</router-link> ||
<span v-if="showUser">欢迎:{{username}} <button @click="logout">注销</button></span>
</div>
<router-view/>
</template>
<script>
export default {
data(){
return {
username:localStorage.getItem('usr'),
showUser:localStorage.getItem('usr')
}
},
watch:{
//使用监听器监听路由变化 , 这样就不用手动刷新,就可以实现登录显示用户名功能
'$route.path':function(){
// console.log("hello");
this.username = localStorage.getItem('usr')
this.showUser = localStorage.getItem('usr')
}
},
methods:{
//注销
logout(){
//清空本地存储
localStorage.clear();
this.$router.push("/login")
}
}
}
</script>