[Vue] vue-Router pour Family Bucket

aperçu

routage back-end

1. Selon les différentes requêtes URL des utilisateurs, différents contenus sont renvoyés, qui correspondent essentiellement à la correspondance entre les adresses de requête URL et les ressources du serveur.

2. Cependant, il existe des problèmes de performances dans le rendu back-end.

routage frontal

3. Il existe donc un rendu de pré-édition Ajax. Le rendu frontal peut améliorer les performances, mais il ne prend pas en charge les opérations avant et arrière du navigateur.

4. À cette époque, le programme d'application monopage SPA (Single Page Application) est réapparu. L'ensemble du site Web n'a qu'une seule page. Le changement de contenu est réalisé via une mise à jour partielle Ajax et prend en charge les opérations avant et arrière du navigateur. barre d'adresse.

5. L'un des principes de mise en œuvre du SPA est basé sur le hachage de l'adresse URL (le changement du hachage amènera le navigateur à enregistrer la modification de l'historique des accès, mais le changement du hachage ne déclenchera pas une nouvelle demande d'URL) . Dans le processus de mise en œuvre de SPA, le point technique principal est le routage frontal.

6. Le routage frontal consiste à afficher différents contenus de page en fonction de différents événements utilisateur. L'essence est la correspondance entre les événements utilisateur et les fonctions de traitement des événements.

Vue Router

Voici le lien de la documentation officielle

Vue Router est le gestionnaire de routage officiel de Vue.js. Il est profondément intégré au cœur de Vue.js et peut être très facilement utilisé pour le développement d'applications SPA.

Il fonctionne comme suit :

1. Prend en charge le mode historique HTML5 ou le mode hachage.
2. Prise en charge du routage imbriqué.
3. Prise en charge des paramètres de routage.
4. Prise en charge du routage programmatique.
5. Prise en charge du routage nommé.

Installer

npm install vue-router --save

Utilisation courante de vue-router

Chargement paresseux de routage

La méthode de chargement paresseux des itinéraires

Méthode 1 : combiner les composants asynchrones de Vue et l'analyse de code de Webpack

const Home = resolve => {
    
     require. ensure(['../ components/Home.vue'], () => {
    
     resolve(require('../ components/Home.vue')) })};

Méthode 2 : méthode d'écriture AMD

const About = resolve => require([' ../ components/ About.vue'], resolve);

Méthode 3 : Dans ES6, nous pouvons avoir un moyen plus simple d'organiser le fractionnement du code des composants asynchrones Vue et Webpack

const Home = () => import(' . ./ components/Home.vue ' )

L'effet du chargement paresseux des itinéraires :
insérer la description de l'image ici

redirection d'itinéraire

La redirection de routage fait référence à : lorsqu'un utilisateur accède à l'adresse A, l'utilisateur est obligé de passer à l'adresse C pour afficher une page de composant spécifique.

En spécifiant une nouvelle adresse de routage via l'attribut redirect de la règle de routage, vous pouvez facilement définir la redirection de routage :
insérer la description de l'image ici
lorsque le hachage est /, il passera au composant home par défaut, empêchant que rien ne s'affiche lorsque le hachage est /, et la scène vient d'entrer en page, la page d'accueil est affichée par défaut

{path: '*', composant: NotFound } peut être ajouté à la fin, indiquant que ce composant sera affiché lorsqu'aucune des routes ci-dessus ne correspond

itinéraires imbriqués

L'affichage imbriqué des composants via le routage est appelé routage imbriqué.

Par exemple, deux sous-composants doivent être affichés dans le composant à propos

insérer la description de l'image ici

Déclarer les liens de sous-route et les espaces réservés de sous-route

Dans le composant About.vue, déclarez les liens de route enfant pour tab1 et tab2 ainsi que les espaces réservés de route enfant. L'exemple de code est le suivant :

insérer la description de l'image ici
Déclarez les règles de sous-routage via l'attribut children
Dans le module de routage src/router/index.js, importez les composants requis et utilisez l'attribut children pour déclarer les règles de sous-routage :
insérer la description de l'image ici
Remarque : le chemin du sous-routage n'a pas besoin ajouter /

correspondance d'itinéraire dynamique

Réflexion : Il existe trois liens de routage comme suit :
insérer la description de l'image ici

Après le film se trouve le paramètre, et les données correspondantes seront rendues au composant Film en fonction du paramètre

Est-il possible de définir les trois règles de routage suivantes ?
insérer la description de l'image ici
 Inconvénient : La réutilisabilité des règles de routage est faible.

Le concept de routage dynamique

Le routage dynamique fait référence à la définition de la partie variable de l'adresse de hachage en tant qu'élément de paramètre, améliorant ainsi la réutilisabilité des règles de routage.

Utilisez les deux points anglais (:) dans vue-router pour définir les éléments de paramètre de la route. L'exemple de code est le suivant :

insérer la description de l'image ici

Dans ce cas, /movie/:id doit transmettre des paramètres, et /movie/:id? signifie qu'aucun paramètre ne peut être transmis

Objet paramètre $route.params

Dans le composant rendu par la route dynamique, vous pouvez utiliser l'objet this.$route.params pour accéder à la valeur du paramètre correspondant dynamiquement, et vous n'avez pas besoin de l'ajouter dans le modèle.
insérer la description de l'image ici
Utiliser des accessoires pour recevoir les paramètres d'itinéraire

Afin de simplifier le formulaire d'acquisition des paramètres de routage, vue-router permet d'activer le passage des paramètres props dans les règles de routage. L'exemple de code est le suivant :
insérer la description de l'image ici

Navigation déclarative et navigation programmatique

Navigation déclarative

Dans le navigateur, cliquer sur le lien pour réaliser la navigation est appelé navigation déclarative . Par exemple:

  • Cliquer sur <a>des liens dans des pages Web ordinaires et cliquer dans des projets Vue <router-link>sont tous des navigations déclaratives

Dans le navigateur, la méthode d'appel des méthodes API pour réaliser la navigation est appelée navigation programmatique . Par exemple:

  • La méthode d'appel de location.href pour accéder à une nouvelle page dans une page Web normale appartient à la navigation programmatique

navigation programmatique

router.push
accède à l'adresse de hachage spécifiée et ajoute un enregistrement d'historique

Appelez la méthode this.$router.push() pour accéder à l'adresse de hachage spécifiée et afficher la page du composant correspondante. L'exemple de code est le suivant :
insérer la description de l'image ici
router.replace
passe à l'adresse de hachage spécifiée et remplace l'enregistrement d'historique actuel.

Semblable à push, la différence :

  • push ajoutera un enregistrement d'historique
  • remplacer n'ajoute rien à l'historique, mais remplace l'historique actuel

router.go
implémente l'historique de navigation en avant et en arrière

Appelez la méthode this.$router.go() pour avancer et reculer dans l’historique de navigation. L'exemple de code est le suivant :

insérer la description de l'image ici
Simplification : dans le développement réel, une seule couche de pages sera généralement avancée et reculée. Par conséquent, vue-router fournit les deux méthodes pratiques suivantes :

$routeur.back()

Dans l'historique, retournez à la page précédente

$router.forward()

Dans l'historique, passez à la page suivante

garde de navigation

Les gardes de navigation peuvent contrôler l’accès aux itinéraires. Le diagramme schématique est le suivant :
insérer la description de l'image ici

Garde avant mondiale

Chaque fois qu'un saut de navigation de routage se produit, la pré-garde globale sera déclenchée. Ainsi, dans la pré-garde globale, les programmeurs peuvent contrôler les droits d'accès de chaque route :
insérer la description de l'image ici

Les 3 paramètres formels de la méthode de garde

La fonction de rappel de la pré-garde globale reçoit 3 paramètres formels au format :
insérer la description de l'image ici

3 façons d'appeler la fonction suivante

En vous référant au diagramme schématique, analysez les résultats finaux des trois méthodes d'appel de la fonction suivante :
insérer la description de l'image ici

L'utilisateur actuel a le droit d'accéder à la page d'accueil en arrière-plan, et peut être libéré directement : next()

L'utilisateur actuel n'a pas accès à la page d'accueil en arrière-plan, ce qui l'oblige à accéder à la page de connexion : next('/login')

L'utilisateur actuel n'a pas accès à la page d'accueil en arrière-plan et accéder à la page d'accueil en arrière-plan n'est pas autorisé : next(false)

Contrôler l'accès à la page d'accueil en arrière-plan

insérer la description de l'image ici
Lorsque de nombreux gardes-navigateurs sont nécessaires, l’approche suivante peut être utilisée :

// 全局前置守卫
router.beforeEach((to, from, next) => {
    
    
	// 要进行导航守卫的路径值
    const pathArr = ['/home','/home/users', '/home/rights']
    if (pathArr.indexOf(to.path) !== -1) {
    
    
        const token = localStorage.getItem('token')
        if (token) {
    
    
            next()
        } else {
    
    
            next('/login')
        }
    } else {
    
    
        next()
    }
})

Une autre façon d'écrire consiste à ajouter un élément de méta-configuration à chaque route et à juger s'il doit être jugé par les valeurs vraies et fausses de la méta.

     {
    
     
        path: 'users',
        component: Users,
        meta: {
    
     isAuth: true },
      },
      ...
      
// 全局前置守卫
router.beforeEach((to, from, next) => {
    
    
    if (to.meta.isAuth) {
    
     // 判断是否需要进行导航守卫
        const token = localStorage.getItem('token')
        if (token) {
    
    
            next()
        } else {
    
    
            next('/login')
        }
    } else {
    
    
        next()
    }
})

Deux modes de travail de routage

mode de hachage

insérer la description de l'image ici

  • Par défaut, le mode de fonctionnement du hachage est activé.
  • #Cela signifie hachage, suivi de la valeur de hachage
  • Remarque : les valeurs après # ne sont pas envoyées au serveur

mode historique

Pour activer le mode historique, vous devez ajouter un élément de configuration du mode. La valeur par défaut est
insérer la description de l'image ici
l'historique de hachage sans #
insérer la description de l'image ici

La différence entre le hachage et l'historique

mode hsah

  • Il y a toujours un signe # dans l'adresse, ce qui n'est pas beau
  • Si l'adresse est partagée via une application mobile tierce à l'avenir, si l'application a une validation stricte, l'adresse sera marquée comme illégale.
  • bonne compatibilité

mode historique

  • L'adresse est propre et belle
  • La compatibilité est légèrement pire que le mode hachage
  • Lorsque l'application est déployée en ligne, elle a besoin du soutien du personnel back-end pour résoudre le problème de rafraîchissement du serveur de pages 404
    (par exemple, http://localhost:8080/home/message, à l'origine http://localhost:8080 , lorsque vous cliquez pour accéder à la page de message, le chemin Il a changé, le chemin est toujours http://localhost:8080/home/message lors de l'actualisation, et /home/message sera également envoyé au serveur, mais les gens je ne connais que http://localhost:8080, le hachage ne sera pas comme ça, http://localhost:8080/#/home/message, car rien après # ne sera envoyé au serveur)

source

Tutoriel ultra-détaillé sur le routage Vue-
router Article d'explication détaillée de Vue-router
pour une compréhension rapide du routage Vue-Router

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44231544/article/details/132333539
conseillé
Classement