当前位置: 首页 > news >正文

网站建设福州百度推广培训

网站建设福州,百度推广培训,中国著名设计师的推荐,企业主题wordpress 含演示数据为什么要动态路由绑定 因为,如果我们的导航栏没有这个权限,输入对应网址,一样可以获取对应的页面,为了解决这个问题,有两种解决方案,一种是动态路由绑定(导航有多少个,就有多少个路由,在路由修改之前,先进行一个导航路由的加载和路由的动态绑定,然后看是否有这个路由,有就跳转…

为什么要动态路由绑定

因为,如果我们的导航栏没有这个权限,输入对应网址,一样可以获取对应的页面,为了解决这个问题,有两种解决方案,一种是动态路由绑定(导航有多少个,就有多少个路由,在路由修改之前,先进行一个导航路由的加载和路由的动态绑定,然后看是否有这个路由,有就跳转),一种是权限的校验(路由修改之前,进行一个拦截,对用户的权限进行一个校验),这两种方法都可以在路由页面里,使用beforeEach来进行操作,这里是动态路由绑定

思路

将这个用户的能显示显示的导航栏对应的路由,和我们的路由配置进行一个绑定和校验,这样的话,如果说没有这个用户对应的路由,那么就无法跳转到对应的页面

步骤(1-3步是准备步骤)

1.使用mock.js返回对应的菜单栏和用户权限

因为还没写后端,所以使用mock.js来模拟一下

Mock.mock('/sys/menu/nav', 'get', () => {let nav = [{name: 'SysManga',title: '系统管理',icon: 'el-icon-s-operation',component: "",path: '',children: [{name: 'SysUser',title: '用户管理',icon: 'el-icon-s-custom',component: "sys/User",path: '/sys/user',children: []}]},{name: 'SysTools',title: '系统工具',icon: 'el-icon-s-tools',path: '',component: "",children: [{name: 'SysDict',title: '数字字典',icon: 'el-icon-s-order',path: '/sys/dicts',component: "sys/Dict",children: []},]},]let authoritys = [];Result.data = {nav: nav,authoritys: authoritys}return Result;
});

2.在store里面写一个menu.js的页

将我们需要再其他页面使用的变量和方法写入

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default {state: {menuList: [],authoritys: [],validation: false,},getters: {},mutations: {// 菜单列表setMenuList(state, menu) {state.menuList = menu},// 权限列表setPermList(state, perms) {state.authoritys = perms},setValidation(state, validation) {state.validation = validation;}},modules: {},actions: {},
}

3.给对应的页面插入对应的元素

<template><el-menuclass="el-menu-vertical-demo"background-color="#545c64"text-color="#fff"active-text-color="#ffd04b"@select="handleSelect"><!-- 首页菜单项 --><el-menu-item index="Index"><template #title><i class="el-icon-s-home"></i>首页</template></el-menu-item><!-- 系统管理子菜单 --><el-submenu :index="menu.name" v-for="menu in menuList" :key="menu.name"><template #title><i :class="menu.icon"></i><span>{{ menu.title }}</span></template><!-- 用户管理子菜单 --><el-menu-itemv-for="item in menu.children":key="item.name":index="item.path"><template #title><i :class="item.icon"></i><span>{{ item.title }}</span></template></el-menu-item></el-submenu></el-menu>
</template><script>
export default {name: "SideMenu",data() {return {}},computed: {menuList: {get() {return this.$store.state.menu.menuList},}},methods: {handleSelect(index) {this.$router.push(index);},}
}
</script><style scoped>
.el-menu-vertical-demo {flex: 1; /* 菜单项占据 el-aside 的剩余空间 */overflow-y: auto; /* 如果内容过多,显示滚动条 */width: 200px;
}
</style>

4.在路由页面写入beforeEach方法(有注释的)

思路:

1.在路由改变时发一个请求,拿到对应的菜单栏和权限

2.动态绑定路由

2.1 因为这里是子路由,所以先遍历,排除没有子路由的路由
2.2 再遍历子路由,看有没有component(具体的页面),排除没有的
2.3 将有component的对象里的元素封装为一个主路由(我这里主路由名为Home)的子路由
2.4 但是现在有个问题,每次路由修改之后我都要发请求,浪费,所以,在store中的页面里定义一个布尔类型的validation,给个默认值false,当请求完成,修改为true,下次就不会发请求,节约性能
router.beforeEach((to, from, next) => {const validation = store.state.menu.validation;if (!validation) {axios.get("/sys/menu/nav", {headers: {Authorization: localStorage.getItem("token"),}}).then(res => {// 拿到 menuListstore.commit("setMenuList", res.data.data.nav);// 拿到用户权限store.commit("setPermList", res.data.data.permList);// 动态绑定路由store.state.menu.menuList.forEach(item => {if (item.children) {item.children.forEach(e => {if (e.component) {router.addRoute("Home", {path: e.path,name: e.name,component: () => import(`@/views/${e.component}`),});}});}});// 更新 validation 状态console.log(123456)store.commit('setValidation', true);// 确保在异步操作完成后继续导航next({path: to.fullPath});}).catch(error => {console.error('Error fetching menu:', error);// 处理请求失败的情况,例如重定向到登录页面next('/login');});} else {// 如果已经验证过,直接继续导航next();}
});

http://www.qdjiajiao.com/news/12451.html

相关文章:

  • ps做游戏网站win10优化大师是官方的吗
  • 公司手机网站制作腾讯云建站
  • 做网站设计图用什么软件nba最新消息新闻报道
  • 建设网站专业公司哪家好seo新方法
  • 做网站基本费用大概需要多少2023年8月份新冠
  • 春节html网页设计与制作代码海淀seo搜索优化多少钱
  • java做的网站怎么转app海淀区seo搜索优化
  • 余姚做网站设计的公司计算机培训班有用吗
  • 安徽做网站找谁网站软文推广网站
  • 可靠的镇江网站建设南宁网络推广平台
  • 长寿网站制作成都百度推广电话
  • 用hadoop做网站日志分析大数据培训包就业靠谱吗
  • 网站设计制作哪些百度推广怎么做最好
  • 手机如何做微商城网站实体店铺引流推广方法
  • 如何免费建立网站网页设计软件有哪些
  • 网站后台显示不全网络营销一个月能挣多少钱
  • 重庆高端网站制作优就业seo
  • 甘肃省省经合局网站建设的通知徐州seo推广优化
  • 阿里巴巴有几个网站是做外贸的网站建设方案优化
  • 柳州网站建设22火蝠电商代运营公司
  • 企业网站建设进什么科目核算外贸网站建设
  • 有什么网站图片可以做图片合成北京seo优化哪家好
  • 中国核工业二三建设有限公司招聘优化关键词排名seo软件
  • 商丘网站建设流程品牌传播方案
  • 长沙电子商务网站建设seo的形式有哪些
  • 商务网站策划 网站目标与经营模式定位免费网站推广2023
  • 做毕业设计网站需要的工具网络营销七个步骤
  • 中国最好的公司排名seo分析网站
  • 建设自己的网站怎么做网站建设与网站设计
  • 连云港做网站建设网络营销策划推广方案