


Comment encapsuler le hook de navigation d'itinéraire Vue2 et l'intercepteur axios
Cette fois, je vais vous montrer comment encapsuler les hooks de routage et de navigation Vue2 et les intercepteurs axios, et quelles sont les précautions pour encapsuler les hooks de routage et de navigation Vue2 et les intercepteurs axios. Voici des cas pratiques, prenons. un regard ensemble Jetez un oeil.
1. Écrit devant
J'apprends Vue2 récemment et j'ai rencontré certaines pages qui nécessitent des données demandant des autorisations de connexion utilisateur et la réponse du serveur est pas comme prévu. Problème, mais nous ne pouvons pas gérer chaque page séparément, alors j'ai pensé qu'axios fournissait une bonne chose comme les intercepteurs, puis cet article est apparu.
2. Exigences spécifiques
Authentification et redirection des utilisateurs : utilisez le hook de navigation de routage fourni par Vue
-
Demande de sérialisation des données : utilisez l'intercepteur de requête fourni par axios
Traitement des informations d'erreur d'interface : utilisez l'intercepteur de réponse fourni par axios
3. Implémentation simple
3.1 Encapsulation de l'authentification et de la redirection au niveau des hooks de routage et de navigation
Toutes les configurations des hooks de routage et de navigation sont dans router/index.js, ici Cela fait partie du code
import Vue from 'vue' import Router from 'vue-router' import { getUserData } from '@/script/localUserData' const MyAddress = r => require.ensure([], () => r(require('@/views/MyAddress/MyAddress')), 'MyAddress') Vue.use(Router) const routes = [ { path: '/profile/address', name: 'MyAddress', component: MyAddress, meta: { title: '我的地址', requireAuth: true } }, // 更多... ] const router = new Router({ mode: 'history', routes })
Regardons principalement le code de traitement logique suivant
let indexScrollTop = 0 router.beforeEach((to, from, next) => { // 路由进入下一个路由对象前,判断是否需要登陆 // 在路由meta对象中由个requireAuth字段,只要此字段为true,必须做鉴权处理 if (to.matched.some(res => res.meta.requireAuth)) { // userData为存储在本地的一些用户信息 let userData = getUserData() // 未登录和已经登录的处理 // getUserData方法处理后如果userData.token没有值就是undefined,下面直接判断 if (userData.token === undefined) { // 执行到此处说明没有登录,君可按需处理之后再执行如下方法去登录页面 // 我这里没有其他处理,直接去了登录页面 next({ path: '/login', query: { redirect: to.path } }) } else { // 执行到说明本地存储有用户信息 // 但是用户信息是否过期还是需要验证一下滴 let overdueTime = userData.overdueTime let nowTime = +new Date // 登陆过期和未过期 if (nowTime > overdueTime) { // 登录过期的处理,君可按需处理之后再执行如下方法去登录页面 // 我这里没有其他处理,直接去了登录页面 next({ path: '/login', query: { redirect: to.path } }) } else { next() } } } else { next() } if (to.path !== '/') { indexScrollTop = document.body.scrollTop } document.title = to.meta.title || document.title }) router.afterEach(route => { if (route.path !== '/') { document.body.scrollTop = 0 } else { Vue.nextTick(() => { document.body.scrollTop = indexScrollTop }) } }) export default router
À ce stade, le traitement d'authentification au niveau du hook de routage est terminé, mais si Si vous faites attention, vous remarquerez peut-être : il y a un objet de requête dans la méthode suivante appelée lors de la navigation vers la page de connexion, qui porte l'adresse de la route cible. En effet, nous devons rediriger vers la page cible après une connexion réussie.
3.2 Encapsulation de l'intercepteur axios
Toutes les configurations axios sont dans le fichier script/getData.js Voici la partie code public de ce fichier
" import qs from 'qs' import { getUserData } from '@/script/localUserData ' import router from '@/router ' import axios from 'axios' import { AJAX_URL } from '@/config/index ' axios.defaults.baseURL = AJAX_URL > axios请求拦截器代码 " /** * 请求拦截器,请求发送之前做些事情 */ axios.interceptors.request.use( config => { // POST || PUT || DELETE请求时先格式化data数据 // 这里需要引入第三方模块qs if ( config.method.toLocaleUpperCase() === 'POST' || config.method.toLocaleUpperCase() === 'PUT' || config.method.toLocaleUpperCase() === 'DELETE' ) { config.data = qs.stringify(config.data) } // 配置Authorization参数携带用户token let userData = getUserData() if (userData.token) { config.headers.Authorization = userData.token } return config }, error => { // 此处应为弹窗显示具体错误信息,因为是练手项目,劣者省略此处 // 君可自行写 || 引入第三方UI框架 console.error(error) return Promise.reject(error) } )
réponse axios. interception Code de l'appareil
/** * 响应拦截器,请求返回异常统一处理 */ axios.interceptors.response.use( response => { // 这段代码很多场景下没用 if (response.data && response.data.success === false) { // 根据实际情况的一些处理逻辑... return Promise.reject(response) } return response }, error => { // 此处报错可能因素比较多 // 1.需要授权处用户还未登录,因为路由段有验证是否登陆,此处理论上不会出现 // 2.需要授权处用户登登录过期 // 3.请求错误 4xx // 5.服务器错误 5xx // 关于鉴权失败,与后端约定状态码为500 switch (error.response.status) { case 403: // 一些处理... break case 404: // 一些处理... break case 500: let userData = getUserData() if (userData.token === undefined) { // 此处为未登录处理 // 一些处理之后...再去登录页面... // router.push({ // path: '/login' // }) } else { let overdueTime = userData.overdueTime let nowTime = +new Date if (overdueTime && nowTime > overdueTime) { // 此处登录过期的处理 // 一些处理之后...再去登录页面... // router.push({ // path: '/login' // }) } else { // 极端情况,登录未过期,但是不知道哪儿错了 // 按需处理吧...我暴力回到了首页 router.push({ path: '/' }) } } break case 501: // 一些处理... break default: // 状态码辣么多,按需配置... break } return Promise.reject(error) } )
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de PHP !
Lecture recommandée :
vExplication détaillée des étapes pour utiliser le composant intégré select de ue
Comment faire fonctionner le composant vue select Utilisation et désactivation
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Différences dans l'ordre d'exécution du cycle de vie entre vue2 et vue3 Comparaison du cycle de vie L'ordre d'exécution dans vue2 beforeCreate=>created=>beforeMount=>Mounted=>beforeUpdate=>updated=>beforeDestroy=>destroyed L'ordre d'exécution dans vue3 setup=>onBeforeMount= >onMounted=> onBeforeUpdate=>onUpdated=>onBeforeUnmount=&g

L'algorithme diff est un algorithme efficace qui compare les nœuds de l'arbre au même niveau, évitant ainsi d'avoir à rechercher et à parcourir l'arbre couche par couche. Alors, que savez-vous de l’algorithme de comparaison ? L'article suivant vous donnera une analyse approfondie de l'algorithme diff de vue2. J'espère qu'il vous sera utile !

Le chiffre 8 horizontal sur la carte de navigation signifie brume, modéré est un signal d'avertissement jaune 8 et grave est un signal d'avertissement orange 8.

Les versions Android et iOS de Baidu Map App ont publié la version 18.8.0, qui introduit pour la première fois la fonction radar des feux de circulation, leader du secteur. Selon l'introduction officielle, après avoir allumé le radar des feux de circulation, il prend en charge la détection automatique. des feux de circulation pendant la conduite sans avoir à saisir une destination. Beidou High-Precision peut positionner en temps réel, plus d'un million de feux de circulation à travers le pays déclenchent automatiquement des rappels de vagues vertes. De plus, la nouvelle fonction offre également une navigation entièrement silencieuse, rendant la zone de la carte plus concise, les informations clés claires en un coup d'œil et aucune diffusion vocale, permettant au conducteur de se concentrer davantage sur la conduite. Baidu Maps lancera une fonction de compte à rebours des feux de circulation. Octobre 2020, prenant en charge la prévision du compte à rebours en temps réel, la navigation affichera automatiquement les secondes restantes du compte à rebours à l'approche d'un carrefour de feux de circulation, permettant aux utilisateurs de toujours comprendre les conditions routières à venir. Compte à rebours aux feux tricolores jusqu'au 31 décembre 2022

Le package vocal de navigation de football du logiciel « Amap Navigation » est l'un des packages vocaux de navigation pour la version automobile de la carte Amap. Le contenu est la voix de navigation de la version de commentaire de football de Huang Jianxiang. Méthode de paramétrage : 1. Ouvrez le logiciel Amap ; 2. Cliquez pour accéder à l'option « Plus d'outils » – « Navigation Voice » ; 3. Recherchez « Huang Jianxiang Passionate Voice » et cliquez sur « Télécharger » 4. Sur la page contextuelle ; , cliquez sur " Utilisez simplement la voix".

Selon les informations de ce site le 29 avril, Amap a officiellement annoncé le lancement d'une version améliorée de la conduite ETA (Remarque de ce site : ETA est l'heure d'arrivée estimée, qui fait référence au temps estimé qu'il faudra à l'utilisateur pour partir. à partir du moment présent et suivre un itinéraire donné jusqu'à la destination), qui vise à aider les utilisateurs à établir des estimations plus précises de la durée de la planification d'itinéraire et des conditions de circulation, et à les aider à prendre des décisions de voyage. Cette application cartographique est la dernière mise à niveau de l'application Amap. Elle introduit le « modèle de réseau neuronal convolutionnel à graphique à très grande échelle », qui peut mieux capturer et apprendre les modèles de flux de trafic, prendre en charge les réseaux routiers urbains et les systèmes autoroutiers, et peut décrire avec précision l'évolution spatio-temporelle. changements dynamiques des conditions de circulation. De plus, la nouvelle version de la carte intègre davantage le modèle de prédiction de séries chronologiques iTransformer pour prendre en charge l'analyse en temps réel.

Comment implémenter la navigation dans les images et la navigation par vignettes via Vue ? Avec le développement des applications web, les images jouent un rôle de plus en plus important dans notre vie quotidienne. Dans de nombreux cas, nous devons implémenter des fonctions de navigation dans les images et par vignettes. Cet article expliquera comment utiliser le framework Vue pour réaliser cette fonction et fournira des exemples de code. Dans Vue, nous pouvons utiliser le plug-in Vue pour implémenter des fonctions de navigation dans les images et par vignettes. Un plugin populaire est vue-gallery, qui fournit une interface simple et facile à utiliser

Comment implémenter les sauts de page et la navigation dans Uniapp. Uniapp est un framework frontal qui prend en charge le codage unique et la publication multi-end. Les développeurs peuvent utiliser Uniapp pour développer rapidement des applications mobiles. Dans Uniapp, la mise en œuvre de sauts de page et de navigation est une exigence très courante. Cet article expliquera comment implémenter le saut de page et la navigation dans uniapp, et fournira des exemples de code spécifiques. 1. Saut de page Utilisez les méthodes fournies par uniapp pour sauter la page. Uniapp fournit un ensemble de méthodes d'implémentation.
