yado前端Vue项目01

86 阅读1分钟

01提纲

创建基本结构、侧边导航栏、登录验证、改写push、repalce解决重复路径报错
github地址:github.com/Yado-yu/yad…

1基本结构创建

使用脚手架创建基本结构,删除多余文件

image.png

2侧边导航栏

1、使用elementUI和编程路由完成

image.png 2、重复点击路径时会发生如下报错

image.png 此时在router/index.js中改写push、replace方法

//改写push方法,解决重复路径跳转报错问题
const oPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(...args) {
	// console.log(oPush.call(this, ...args));
	return oPush.call(this, ...args).catch(err => err)
}
//改写replace方法,解决重复路径跳转报错问题
const oReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace(...args) {
	// console.log(oPush.call(this, ...args));
	return oReplace.call(this, ...args).catch(err => err)
}

3设置简单的登录验证

1、在login中给登录按钮绑定点击事件,当点击时验证登录

loginHandler(){
            if(!this.userName||!this.passWord) {
                this.$message.error('账号或密码为空!')
                return
            }
            //用户名为'admin',密码为'123'
            if(this.userName !== 'admin' || this.passWord !== '123') {
                this.$message.error('账号或密码错误!')
                return
            }
            //向浏览器中加入token,用于后面的路由守卫验证登录
            sessionStorage.setItem('token', '123')
            this.$router.replace('/')
        }

2、在根目录中创建路由守卫文件routerAuth.js,代码如下:

export default function routerAuth(router) { 
    router.beforeEach((to, from, next) => {
        console.log(to)
        const token = sessionStorage.getItem('token')
        if (token || to.path === '/login') {
            next();
            return
        }
        next('/login');
        
    })
    //浏览器标题
    router.afterEach((to) => {
        document.title = to.meta && to.meta.title ? `${to.meta.title}-宿舍管理系统` : '宿舍管理系统'
    })
}