美文网首页
项目中 进度条组件的封装

项目中 进度条组件的封装

作者: 一只章鱼哥 | 来源:发表于2021-10-14 15:48 被阅读0次

    很多项目中需要在跳转路由时 页面顶部出现滚动条动画 ,当路由跳转成功后进度条消失 ,这个功能还是挺多见的,所以在简书里做个简单记录。
    这个小功能具体实现 可以使用 插件 nprogress 配合 路由的前置守卫和后置守卫 ,结合实际项目具体代码如下:

    import Vue from "vue"
    import router from "../router.js"
    import nprogress from 'nprogress' // 引入插件nprogress
    import 'nprogress/nprogress.css' // 引入nprogress样式css
    let routerVue = new Vue();
    nprogress.inc(1) // 进度条的初始化
    nprogress.configure({ // 进度条的配置信息
        easing: 'ease',
        speed: 2000,
        showSpinner: false
    })
    router.beforeEach((to, from, next) => {
        nprogress.start() // 开始加载进度条
        let toPath = to.path.split('/')
    
           // 以下代码是实际项目中的逻辑代码,
        if(from.path == '/' && toPath.length == 2) {
            if(parseInt(sessionStorage.getItem("defaultDisplay")) == 1) {
                // if(toPath[1] == 'orgDataCenter') {
                //  next()
                // } else {
                //  router.push("/orgDataCenter");
                // }
                if(toPath[1] == 'dataCenter'){
                    next()
                }else{
                    router.push("/dataCenter");
                }
            } else if(parseInt(sessionStorage.getItem("defaultDisplay")) == 0) {
                next()
            } else {
                routerVue.http('/mushu/login/getLoginUser', {}, 'get').then((data) => {
                    sessionStorage.setItem("defaultDisplay", data.defaultDisplay);
                    if(data.defaultDisplay == 1) {
                        // router.push("/orgDataCenter");
                        router.push("/dataCenter");
                    } else {
                        next()
                    }
                }, () => {
                    next()
                })
            }
        } else {
            next()
        }
    })
    
    // 后置守卫里进度条动画加载完毕
    router.afterEach(() => {
        nprogress.done()
    })
    

    相关文章

      网友评论

          本文标题:项目中 进度条组件的封装

          本文链接:https://www.haomeiwen.com/subject/itlveltx.html