zoukankan      html  css  js  c++  java
  • 项目边做边总结

    1.定义路由时,分

    应用路由,需权限控制

    使用前要验证权限 : router.beforeEach

       dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('mutations方法名',值)

       commit:同步操作,写法:this.$store.commit('mutations方法名',值)

      vuex store的知识

    const mutations = {
      /**
       * 更新登录用户信息
       * @param state
       * @param payload
       */
     //state是默认参数吧。。。。。后面action里面调用的时候传的就只有payload
      setCurrentUser (state, payload) {
        state.currentUser = Object.assign(state.currentUser, payload)
      },
      setAuthorities (state, payload) {
        state.authorities = payload
      },
      setRoutes: (state, routes) => {
        state.addRoutes = routes
        state.routes = cloneDeep(constantRoutes).concat(routes)
      }
    }

      this.$store.commit("mutations名字",参数)

      this.$store.dispatch("actions名字",参数)

      actions里面 contentc.commit参数 = {commit} =  这叫变量解构赋值

      commit("mutations名字",参数)

     这两种写法的不同在于 action里面可以做异步操作

    router.beforeEach(async (to, from, next) => {
      if (to.path === '/error') {
        next()  //进入下一个钩子函数
      } else {
        if (getToken() && getToken() !== null) { // 已经登录存在有token
          // 如果已经生成过路由,不需要再次生成动态路由
          if (addRouteFlag) {
            next() //进入下一个钩子函数
          } else {
            // 同步获取用户信息,动态添加权限路由
            await store.dispatch('syncCurrentUser')
            let accessRoutes = await store.dispatch('generateRoutes')
            let newRouteTmp = []
            newRouteTmp.push(accessRoutes)
            router.addRoutes(newRouteTmp)
            addRouteFlag = accessRoutes
            next({ ...to, replace: true })
          }
        } else { // 还没有登录
          jquery.getScript('http://172.16.13.64:9995/cloudiip-cas/open-login-api.jsp?_=1556259574232',
            async () => {
              let loginCode = auth.code
              if (loginCode === 1001) {
                // 其他地方没有登录
                let location = window.location.href
                let locTemp = encodeURIComponent(location)
                window.location.href = 'http://172.16.13.64:9995/cloudiip-cas/login?service=' + locTemp
                next()
              } else if (loginCode === 1) {
                // 其他地方已经登录
                if (auth.message) {
                  setToken(auth.message)
                  if (addRouteFlag) {
                    next()
                  } else {
                    // 同步获取用户信息,动态添加权限路由
                    let authorities = await store.dispatch('syncCurrentUser')
                    let accessRoutes = await store.dispatch('generateRoutes', authorities, { root: true })
                    let newRouteTmp = []
                    newRouteTmp.push(accessRoutes)
                    router.addRoutes(newRouteTmp)
                    addRouteFlag = accessRoutes
                    next({ ...to, replace: true })
                  }
                } else {
                  next({
                    path: '/error'
                  })
                }
              } else {
                // 其他情况
                next({
                  path: '/error'
                })
              }
            })
        }
      }
    })
    常用无权限控制路由

    常用路由就直接使用
    const router = new Router({
    scrollBehavior: () => ({ y: 0 }),//跳转到一个新的页面的时候,显示最顶端
    routes: constantRoutes
    })

      



  • 相关阅读:
    Learning NFS/NIS 2nd 读书笔记-Chapter3 NIS Operation
    Linux Enterprise Cluster Notes Ch11 LVS Introduction Theory
    Linux Enterprise Cluster NOtes Ch7 A Sample HA config
    Linux Enterprise Cluster Notes Ch10 build a Linux cluster
    Linux Enterprise Cluster NOtes Ch8 Heartbeat配置和维护
    当被监控的应用发生问题时,heartbeat会failover么?
    Linux Enterprise Cluster NOtes Ch9 Stonith and IPFail
    Linux Enterprise Cluster NOtes Ch6 Heartbeat介绍和原理
    客户端不支持javascript怎么办
    js 返回对象|js返回多个值的方法|js如何返回多个值
  • 原文地址:https://www.cnblogs.com/joer717/p/10830944.html
Copyright © 2011-2022 走看看