Home  >  Article  >  Web Front-end  >  Several methods of vue routing interception

Several methods of vue routing interception

WBOY
WBOYOriginal
2023-05-23 18:33:384828browse

With the continuous development of front-end technology, the vue framework is increasingly favored by developers. When developing a Vue project, routing is a very important component. Through routing, page switching and component reuse of single-page applications (SPA) can be achieved, which can improve project performance and user experience. In order to ensure the security and reliability of the project, we need to add interceptors to routing to block or redirect illegal requests. This article will introduce several methods of Vue routing interception to help you quickly understand the principles and implementation methods of Vue routing interception.

  1. Global front guard

Vue Router provides a global front guard, which can intercept requests before routing switching. Global pre-guards can be used to check whether the user is logged in, or to check whether the user has permission to access the page. Add the following code to router/index.js:

router.beforeEach((to, from, next) => {
  const isLogin = localStorage.getItem('token') ? true : false;
  if (to.path == "/login") {
    next();
  } else {
    isLogin ? next() : next('/login');
  }
})

This code snippet will be executed before each route switch to determine whether the user is logged in. If not, it will jump to the login page. This is a very common global route interception method, which can effectively ensure user security and system stability.

  1. Route-exclusive guards

In Vue Router, you can set separate guards for each route. This type of guard is called a route-exclusive guard. Route-exclusive guards can be used to check route parameters, call asynchronous interfaces, process data, etc. Add the following code to router/index.js:

const router = new VueRouter({
  routes: [
    {
      path: '/example/:id',
      component: Example,
      beforeEnter: (to, from, next) => {
        const id = to.params.id;
        if (id > 0 && id < 100) {
          next();
        } else {
          next('/error');
        }
      }
    }
  ]
})

This code snippet will be executed before the switch of route /example/:id. It checks whether the passed parameter id meets the conditions and jumps if it does not. Go to the "/error" page, otherwise continue with routing switching. The route-exclusive guard is a very flexible route interception method that allows us to control route switching more flexibly.

  1. Global post hook

Similar to the global front guard, Vue Router also provides a global post hook, which can intercept the response after routing switching. Global post hooks can be used to handle some logical issues after routing switching, such as page statistics, error handling, etc. Add the following code to router/index.js:

router.afterEach(( to, from ) => {
  const currentPath = to.path;
  const params = to.params;
  console.log(`切换到${currentPath}页面,路由参数为${JSON.stringify(params)}`)
})

This code snippet will be executed after each routing switch and output the path and parameters of the current routing page. Through global post hooks, we can better understand the routing status and corresponding results for the next step of development and testing of the project.

Summary:

In Vue Router, route interception is a very important component that can be used to enhance the reliability, security and stability of the system. Through global front guards, route-exclusive guards, and global post hooks, we can better control the status and behavior of routes. In the actual development process, we should choose the appropriate route interception method based on the actual situation of the project to ensure the overall quality of the project and the user experience.

The above is the detailed content of Several methods of vue routing interception. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn