vuerouter定义动态路由,vue-router怎么定义动态路由

  vuerouter定义动态路由,vue-router怎么定义动态路由

  摘要:本文主要介绍了vueRouter - matcher的动态增减路由方式,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  

目录

   matcher的动态路线增减解决方案。vueRouter动态添加路由。具体的路由拦截都是在router.beforeEach. curPath中处理,用于辅助处理。

  

matcher之动态增减路由

  优化项目时,主路线下有一个环节。根据后端返回的不同内容,需要修改动态路由。如果直接删除原路由,给Router添加新路由,会发现原路由依然存在。Vue动态添加路线,但是没有删除功能(貌似vue官方文档没有提供)。

  

解决办法

  使用匹配器:

  const createRouter=()=新路由器({

  路线:[{

  路径:“/”,

  名称:登录,

  组件:登录

  }]

  const router=createRouter()

  导出函数resetRouter () {

  const newRouter=createRouter()

  router . matcher=new router . matcher

  }

  导出默认路由器

  本地介绍,在添加路由器之前只需调用一次resetRouter:

  从“@/路由器”导入{resetRouter}

  reset router();

  这个。$ router . add routes(route menu);

  

番外

  如果需要删除添加的一级路由下的单个子路由,可以通过这个得到路由数组。$router.options.routes,直接以循环方式推送或拼接,然后用上述方法全局替换。

  

vueRouter动态追加路由

  路由分为静态路由,如预写路由和公共路由,如404、登录等。

  另一部分是根据权限接口返回动态添加的一些页面模块路由,比如user。

  处理权限时,可以先允许一些不需要权限认证的路由,如下所示:

  //打开路由,可以直接访问

  const ALLOW_ROUTES=[

  /登录,

  /购买,

  //.

  ];

  

具体路由拦截全在router.beforeEach里处理

  如果您没有首先登录,请直接跳转到登录页面。

  如果(!ALLOW_ROUTES.includes(to.path)!islin){//未登录

  下一个({

  路径:“/login”,

  替换:真

  });

  返回;

  }

  如果您已登录,请使用router.addRoutes添加路由。

  if(is login(session storage . getitem( curPath ) to . matched[0])。path=== * ){

  session storage . remove item( curPath );

  //恢复路由(防止重复路由)

  router.matcher=new VueRouter({

  //模式:历史,

  路线

  }).matcher

  router . add routes(routes:ArrayRouteConfig);//追加路线

  //util . generate menu();//生成菜单,视具体情况而定

  下一个({

  路径:to.path

  });

  返回;

  }

  动态添加更多路由规则。该参数必须是满足routes选项要求的数组。

  

curPath用于辅助处理

  router.afterEach(to={

  //保存路径

  if (to.path!==/login) {

  session storage . setitem( curPath ,JSON.stringify({

  路径:to.path

  }));

  }

  })

  动态路由主要基于业务,很难写出通用的处理方式。什么时候添加路线由你自己决定,比如刷新,注销,重新登录,不匹配。

  如果还是遇到重复走线的问题,可能是在当前页面推送相同的走线造成的。在这里,你可以先做个判断。

  if(router . current out . name!==登录){

  router.push({

  名称:“登录”

  })

  }

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: