Maison interface Web js tutoriel vue router sépare toutes les sous-routes en composants indépendants

vue router sépare toutes les sous-routes en composants indépendants

Apr 27, 2018 am 09:26 AM
router 分离 indépendant

Cette fois, je vous propose vue router pour séparer toutes les sous-routes en composants indépendants. Quelles sont les précautions pour que vue router sépare toutes les sous-routes en composants indépendants. Jetons un coup d'oeil une fois.

Routage dynamique de vue-router

vue-router官网上面是这样说的
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
然后,我就这样写了:
this.$router.push({path:'manage', query: {id: 'tasklist'}})1
结果很明显,失败了。然后我就默默的再次看了一下官网,结果发现了这句话
// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', params: { plan: 'private' }})
注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path:
const userId = 123
router.push({ name: 'user', params: { userId }}) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// 这里的 params 不生效
router.push({ path: '/user', params: { userId }}) // -> /user
谨记啊,动态实现二级路由,需要先用变量保存二级路由名称(let router = 'tasklist'),然后调用this.$router.push({path: `/user/${router}`}).
Copier après la connexion

Jetons un coup d'œil à la solution consistant à faire de chaque sous-route un composant indépendant sous le routage dynamique de vue router

Étant donné que vue-router adopte une stratégie de réutilisation de composants pour le routage imbriqué, il s'agit en effet d'une approche efficace dans la plupart des scénarios, mais si vous rencontrez cette situation :

La coexistence de plusieurs sous-routes est nécessaire, et s'il y a un besoin de commutations fréquentes, il est très souhaitable de faire de chaque sous-route un composant indépendant, bien qu'il puisse être commuté par surveillance. l'itinéraire

watch: {
   '$route'(to) {
    if (to.meta.path === '/page/buy-details') {
     this.id = to.params.id;
     this.state()
    }
   }
  },
Copier après la connexion

Pour traiter les données mises à jour en temps réel, j'ai toujours fait cela auparavant, y compris la page d'animation ci-dessus, mais cela est vraiment gênant. Cela oblige l'utilisateur à revenir avec précision à l'état d'affichage de. la page avant de changer pendant le changement, il y avait trop de choses à considérer, j'ai donc trouvé une solution :

Le composant de sous-routage n'implique pas de code métier réel, il maintient uniquement une liste d'identifiants ouverts. . Lorsque le routage est commuté ici, l'identifiant est jugé. Ajoutez ceux qui n'ont pas été ouverts, bouclez les composants de sous-routage réels à travers cette liste, affichez l'identifiant actuel, de sorte que chaque instance soit indépendante
I. a écrit un mixins basé sur cette idée

details-page.js

export default {
 watch: {
  '$route'(to, from) {
   this.detailsLeave(from);
   this.detailsOpen(to);
  }
 },
 data() {
  return {
   pagePath: '',
   pageId: 0,
   pages: {}
  }
 },
 methods: {
  /**
   * 子页面打开触发
   * @param route
   */
  detailsOpen(route) {
   if (this.detailsPathGet(route.path) === this.pagePath) {
    if (!this.pages[route.params.id]) {
     this.$set(this.pages, route.params.id, {
      id: route.params.id,
      scrollTop: 0
     })
    }
    //路由打开 跳转滚动条
    this.pageId = route.params.id;
    this.$nextTick(()=>{
     this.$parent.$el.firstChild.scrollTop = this.pages[route.params.id].scrollTop;
    });
   }
  },
  /**
   * 路由切换触发
   * 判断离开的路由是否是当前页面,如果是则记录滚动条高度
   * @param route
   */
  detailsLeave(route) {
   if (this.detailsPathGet(route.path) === this.pagePath) {
    if (this.pages[route.params.id]) {
     //记录滚动条高度 此处针对ea-admin后台 不同的框架要记录的滚动条el不同
     this.pages[route.params.id].scrollTop = this.$parent.$el.firstChild.scrollTop ;
    }
   }
  },
  /**
   * 子页面关闭函数
   * @param id
   */
  detailsClose(id) {
   delete this.pages[id]
  },
  /**
   * 取路由不含最后一项参数的地址
   * @param path
   * @returns {string}
   */
  detailsPathGet(path) {
   const i = path.lastIndexOf('/');
   return path.substr(0, i);
  }
 },
 mounted() {
  //通过当前路由地址创建页面识别地址 注:只对path: '/user/:id' 有效 当 path: /user/:id/profile 失效
  this.pagePath = this.detailsPathGet(this.$route.path);
  //执行第一次子页面打开
  this.detailsOpen(this.$route);
  //监听标签关闭消息 此处针对ea-admin后台 不同框架监听关闭方式不同
  this.$tabs.onRemove((page, next) => {
   //收到标签关闭回调,判断关闭的是否是当前页面
   if (page._path === this.pagePath) {
    //触发子页面删除
    this.detailsClose(page.id)
   }
   next()
  })
 }
}
Copier après la connexion

Details.vue

<template>
 <p>
  <your-component
    v-for="item in pages"
    :id="item.id"
    :key="item.id"
    v-show="item.id === pageId">
  </your-component>
 </p>
</template>
<script>
 import YourComponent from '';
 import detailsPage from '../mixins/details-page'
 export default {
  name: 'DetailsPage',
  components: {YourComponent},
  mixins: [detailsPage],
 }
</script>
Copier après la connexion

De cette façon, le sous-composant ne peut se concentrer que sur le traitement de ses propres données fixes Le composant étant unique, il n'y a pas lieu de s'en soucier. L'état d'affichage est stocké pour chaque identifiant.

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 :

Comment adapter les images dans l'applet WeChat à la hauteur du modèle

vue.js front-end et données back-end Explication détaillée des étapes d'interaction

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Sep 29, 2023 pm 05:45 PM

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin

Comment utiliser le système de modules dans Java 9 pour séparer et isoler le code Comment utiliser le système de modules dans Java 9 pour séparer et isoler le code Jul 30, 2023 pm 07:46 PM

Comment utiliser le système de modules dans Java 9 pour séparer et isoler le code À mesure que l'échelle des logiciels continue de croître, la complexité du code continue d'augmenter. Afin de mieux organiser et gérer le code, Java9 a introduit le système de modules. L'émergence du système de modules résout le problème des dépendances traditionnelles des packages, rendant la séparation et l'isolation du code plus faciles et plus flexibles. Cet article explique comment utiliser le système de modules dans Java 9 pour réaliser la séparation et l'isolation du code. 1. Définition du module En Java9, nous pouvons utiliser le mot-clé module pour définir

Suggestions sur la sélection de la technologie frontale dans le développement de la séparation frontale et back-end Golang. Suggestions sur la sélection de la technologie frontale dans le développement de la séparation frontale et back-end Golang. Mar 05, 2024 pm 12:12 PM

Titre : Suggestions sur la sélection de la technologie frontale dans le développement de séparation front-end et back-end Golang À mesure que la complexité et les exigences des applications Web continuent d'augmenter, le modèle de développement de séparation front-end et back-end devient de plus en plus populaire. Dans ce modèle de développement, le backend est responsable du traitement de la logique métier et le frontend est responsable de l'affichage des pages et de l'interaction avec les utilisateurs. Les deux communiquent via des API. Pour les équipes de développement utilisant Golang comme langage back-end, le choix de la bonne technologie front-end est crucial. Cet article discutera des technologies frontales recommandées à choisir dans le développement séparé du front-end et du back-end dans Golang, et

Les avantages uniques du routage Lazy-Loading de Vue Router, comment optimiser les performances des pages ? Les avantages uniques du routage Lazy-Loading de Vue Router, comment optimiser les performances des pages ? Sep 15, 2023 am 10:36 AM

VueRouter est un plug-in de gestion d'itinéraire officiellement fourni par Vue.js. Il peut nous aider à implémenter la navigation de page et le changement d'itinéraire dans les applications Vue. La fonctionnalité Lazy-Loading est un avantage unique de VueRouter, qui peut considérablement optimiser les performances des pages. Dans cet article, nous présenterons la fonctionnalité de routage Lazy-Loading de VueRouter et fournirons quelques exemples de code pratiques pour optimiser les performances des pages. Lazy-Loading signifie en cas de besoin

Que dois-je faire si le routeur React ne s'affiche pas ? Que dois-je faire si le routeur React ne s'affiche pas ? Dec 30, 2022 am 09:30 AM

Solution pour réagir au routeur qui ne s'affiche pas : 1. Ajoutez browserRouter au composant de routage parent pour envelopper le routeur ; 2. Utilisez "this.props.history.go()" pour actualiser le composant 3. Ajoutez "forcerefresh" au paramètre browserrouter ; ={true}"; 4. Écrivez une fonction hook dans "<Route>" et appelez-la lorsque vous quittez ou entrez dans cette route.

Routage Lazy-Loading de Vue Router : une tendance pour contribuer à améliorer les performances des pages Routage Lazy-Loading de Vue Router : une tendance pour contribuer à améliorer les performances des pages Sep 15, 2023 am 08:03 AM

VueRouter est le gestionnaire de routage officiel du framework Vue.js. Il permet aux développeurs de changer de contenu de page via le mappage de routage, rendant les applications monopage plus contrôlables et plus faciles à maintenir. Cependant, à mesure que les applications deviennent plus complexes, le chargement et l’analyse des routes peuvent devenir un goulot d’étranglement en termes de performances. Afin de résoudre ce problème, VueRouter fournit une fonction de chargement paresseux des routes, qui diffère le chargement des routes jusqu'à ce qu'elles soient réellement nécessaires. Le chargement paresseux est une technologie de chargement qui

Essentiel pour les développeurs PHP : explication détaillée de la méthode d'implémentation de la séparation en lecture et en écriture MySQL Essentiel pour les développeurs PHP : explication détaillée de la méthode d'implémentation de la séparation en lecture et en écriture MySQL Mar 04, 2024 pm 04:36 PM

Les développeurs PHP sont souvent confrontés à des opérations de base de données pendant le processus de développement de sites Web. En tant que système de gestion de bases de données très populaire, la séparation lecture-écriture de MySQL est l'un des moyens importants pour améliorer les performances des sites Web. Dans le développement PHP, la mise en œuvre de la séparation lecture-écriture MySQL peut considérablement améliorer les capacités d'accès simultané du site Web et l'expérience utilisateur. Cet article présentera en détail la méthode d'implémentation de la séparation lecture-écriture MySQL et fournira des exemples de code PHP spécifiques pour aider les développeurs PHP à mieux comprendre et appliquer la fonction de séparation lecture-écriture. Qu'est-ce que MySQL lit

Comment utiliser le routage du routeur pour implémenter les paramètres de saut dans vue3 Comment utiliser le routage du routeur pour implémenter les paramètres de saut dans vue3 May 16, 2023 am 10:49 AM

1. Saut d'itinéraire 1. Introduisez d'abord l'API — useRouterimport{useRouter}from'vue-router'2 Définissez la variable du routeur sur la page de saut // Définissez d'abord constrouter=useRouter() dans la configuration 3. Utilisez router.push pour. accéder à la page //String router.push('home')//Object router.push({path:'home'})//

See all articles