Compartir tecnología

Hablemos en detalle sobre el papel del interceptor de ruta en vue.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

En Vue, los interceptores de ruta se utilizan principalmente para interceptar y procesar antes de navegar a una ruta determinada o al abandonar una ruta determinada. Este mecanismo permite a los desarrolladores realizar una lógica específica antes o después de que se produzca la navegación en la ruta, como verificación de permisos, carga de datos, saltos de página, etc.

En Vue Router, los interceptores de ruta se pueden implementar de las siguientes maneras:

  1. Global ante guardias:

    • router.beforeEach(to, from, next): Registre una preguardia global Cuando se activa la navegación de ruta, se llamará a la guardia antes de que cambie la ruta.
    • Propósito: Adecuado para verificación de permisos globales, control de la barra de progreso de carga de páginas, etc.
      1. router.beforeEach((to, from, next) => {
      2. // 检查用户权限
      3. if (!userAuthenticated) {
      4. next('/login'); // 未认证跳转到登录页
      5. } else {
      6. next(); // 已认证则放行
      7. }
      8. });

2.Guardias de resolución global:

  • router.beforeResolve(to, from, next): Registre una guardia de análisis global, que se llama después de la guardia frontal global y antes de que se confirme la navegación.
    1. router.beforeResolve((to, from, next) => {
    2. // 在导航被确认之前,进行数据加载等操作
    3. fetchData().then(() => {
    4. next();
    5. });
    6. });

3. Guardia por ruta:

  • Agréguelo directamente al objeto de configuración de enrutamientobeforeEnterCampo para agregar lógica de guardia a una sola ruta.
  1. const route = {
  2. path: '/profile',
  3. component: Profile,
  4. beforeEnter: (to, from, next) => {
  5. // 检查用户是否有权限访问该路由
  6. if (userHasAccess) {
  7. next();
  8. } else {
  9. next('/403'); // 没有权限跳转到403页面
  10. }
  11. }
  12. };

 

4.Protectores en componentes:

  • Componentes interiores usadosbeforeRouteEnterbeforeRouteUpdate, ybeforeRouteLeaveFunciones de enlace, estas funciones se llamarán cuando la ruta navegue hasta el componente actual, cuando el componente actual se reutilice y cuando abandone el componente actual.
  1. export default {
  2. beforeRouteEnter (to, from, next) {
  3. // 在路由导航进入该组件前执行逻辑
  4. next(vm => {
  5. // 可以访问实例 `vm`
  6. });
  7. },
  8. beforeRouteUpdate (to, from, next) {
  9. // 在当前路由改变,但是该组件被复用时调用
  10. // 可以访问组件实例 `this`
  11. // 通常用于更新组件的数据
  12. next();
  13. },
  14. beforeRouteLeave (to, from, next) {
  15. // 在导航离开该组件的对应路由时调用
  16. // 可以访问组件实例 `this`
  17. next();
  18. }
  19. }

Los mecanismos de estos interceptores de rutas pueden ayudar a los desarrolladores a controlar el proceso de navegación de las aplicaciones en diferentes niveles y escenarios, e implementar funciones como control de permisos, precarga de datos y saltos de página, administrando y optimizando mejor la experiencia interactiva de las aplicaciones front-end.