Table des matières
1. Découplage des paramètres d'itinéraire " > 1. Découplage des paramètres d'itinéraire
2. Composant fonctionnel " > 2. Composant fonctionnel
3 Style Scope" >3 Style Scope
4. L'utilisation avancée de watch" >4. L'utilisation avancée de watch
5.watch surveille plusieurs variables" >5.watch surveille plusieurs variables
6. Paramètres d'événement $event" >6. Paramètres d'événement $event
7. Écouteur d'événements programmatique" >7. Écouteur d'événements programmatique
Maison interface Web Voir.js [Organisation et partage] 8 conseils pratiques pour le développement de Vue

[Organisation et partage] 8 conseils pratiques pour le développement de Vue

Feb 24, 2023 pm 07:29 PM
vue

Cet article compile et partage 8 grandes compétences de développement Vue, y compris le découplage des paramètres de routage, les composants fonctionnels, la portée du style, l'utilisation avancée de la montre, la surveillance de plusieurs variables par la montre, etc. J'espère qu'il sera utile à tout le monde !

[Organisation et partage] 8 conseils pratiques pour le développement de Vue

1. Découplage des paramètres d'itinéraire

Habituellement, lors de l'utilisation de paramètres d'itinéraire dans les composants, la plupart des gens feront ce qui suit.

export default {
    methods: {
        getParamsId() {
            return this.$route.params.id
        }
    }
}
Copier après la connexion

L'utilisation de $route dans un composant entraîne un couplage fort avec sa route correspondante, limitant la flexibilité du composant en le restreignant à certaines URL. La bonne approche consiste à le découpler via des accessoires.

const router = new VueRouter({
    routes: [{
        path:  /user/:id ,
        component: User,
        props: true
    }]
})
Copier après la connexion

Après avoir défini l'attribut props de la route sur true, le composant peut recevoir les paramètres params via les accessoires à l'intérieur du composant. [Recommandations associées : tutoriel vidéo vuejs, développement web front-end]

export default {
    props: [ id ],
    methods: {
        getParamsId() {
            return this.id
        }
    }
}
Copier après la connexion

Vous pouvez également renvoyer des accessoires via le mode fonctionnel.

const router = new VueRouter({
    routes: [{
        path:  /user/:id ,
        component: User,
        props: (route) => ({
            id: route.query.id
        })
    }]
})
Copier après la connexion

2. Composant fonctionnel

Le composant fonctionnel est apatride, il ne peut pas être instancié et n'a aucun cycle de vie ni méthode. Créer des composants fonctionnels est aussi simple que d’ajouter une déclaration fonctionnelle à votre modèle. Il convient généralement aux composants qui reposent uniquement sur des modifications de données externes et améliore les performances de rendu grâce à sa légèreté. Tout ce dont le composant a besoin est transmis via les paramètres de contexte. Il s'agit d'un objet contextuel, voir la documentation pour les propriétés spécifiques. props voici un objet contenant toutes les propriétés liées.

<template functional>
    <div class="list">
        <div class="item" v-for="item in props.list" :key="item.id" @click="props.itemClick(item)">
            <p>{{item.title}}</p>
            <p>{{item.content}}</p>
        </div>
    </div>
</template>
Copier après la connexion

Le composant parent utilise

<template>
    <div>
        <List :list="list" :itemClick="item => (currentItem = item)" />
    </div>
</template>
Copier après la connexion
import List from  @/components/List.vue
export default {
    components: {
        List
    },
    data() {
        return {
            list: [{
                title:  title ,
                content:  content
            }],
            currentItem:
        }
    }
}
Copier après la connexion

3 Style Scope

Il est courant de modifier le style des composants tiers pendant le développement, mais en raison de l'isolation du style de l'attribut scoped, vous devrez peut-être le faire. supprimer la portée ou créer un nouveau style. Ces pratiques ont des effets secondaires (pollution du style des composants, manque d'élégance) et sont implémentées en utilisant la pénétration du style dans le préprocesseur CSS. Nous pouvons utiliser>>> ou /deep/ pour résoudre ce problème :

<style scoped>
Outer layer >>> .el-checkbox {
  display: block;
  font-size: 26px;

  .el-checkbox__label {
    font-size: 16px;
  }
}
</style>
Copier après la connexion
<style scoped>
/deep/ .el-checkbox {
  display: block;
  font-size: 26px;

  .el-checkbox__label {
    font-size: 16px;
  }
}
</style>
Copier après la connexion

4. L'utilisation avancée de watch

watch est déclenchée lorsque la propriété de l'auditeur change. Le composant est créé et exécuté immédiatement. Une façon qui pourrait venir à l'esprit serait de l'appeler une fois au cours du cycle de vie de la création, mais ce n'est pas une manière élégante de l'écrire, alors peut-être pourrions-nous utiliser quelque chose comme ceci.

export default {
    data() {
        return {
            name:  Joe
        }
    },
    watch: {
        name: {
            handler:  sayName ,
            immediate: true
        }
    },
    methods: {
        sayName() {
            console.log(this.name)
        }
    }
}
Copier après la connexion

Écoute profonde

Lors de l'écoute d'un objet, lorsque les propriétés à l'intérieur de l'objet changent, la montre ne se déclenche pas, nous pouvons donc définir une écoute profonde pour celui-ci.

export default {
    data: {
        studen: {
            name:  Joe ,
            skill: {
                run: {
                    speed:  fast
                }
            }
        }
    },
    watch: {
        studen: {
            handler:  sayName ,
            deep: true
        }
    },
    methods: {
        sayName() {
            console.log(this.studen)
        }
    }
}
Copier après la connexion

Déclenchez l'écouteur pour exécuter plusieurs méthodes

À l'aide de tableaux, vous pouvez définir plusieurs formes, notamment des chaînes, des fonctions et des objets.

export default {
    data: {
        name:  Joe
    },
    watch: {
        name: [
             sayName1 ,
            function(newVal, oldVal) {
                this.sayName2()
            },
            {
                handler:  sayName3 ,
                immaediate: true
            }
        ]
    },
    methods: {
        sayName1() {
            console.log( sayName1==> , this.name)
        },
        sayName2() {
            console.log( sayName2==> , this.name)
        },
        sayName3() {
            console.log( sayName3==> , this.name)
        }
    }
}
Copier après la connexion

5.watch surveille plusieurs variables

watch elle-même ne peut pas surveiller plusieurs variables. Cependant, nous pouvons « écouter plusieurs variables » en renvoyant un objet avec une propriété calculée, puis en écoutant cet objet.

export default {
    data() {
        return {
            msg1:  apple ,
            msg2:  banana
        }
    },
    compouted: {
        msgObj() {
            const { msg1, msg2 } = this
            return {
                msg1,
                msg2
            }
        }
    },
    watch: {
        msgObj: {
            handler(newVal, oldVal) {
                if (newVal.msg1 != oldVal.msg1) {
                    console.log( msg1 is change )
                }
                if (newVal.msg2 != oldVal.msg2) {
                    console.log( msg2 is change )
                }
            },
            deep: true
        }
    }
}
Copier après la connexion

6. Paramètres d'événement $event

$event est une variable spéciale de l'objet événement, qui nous fournit plus de paramètres disponibles pour implémenter des fonctions complexes dans certains scénarios. Événements natifs : se comporte de la même manière que l'objet événement par défaut dans les événements natifs.

<template>
    <div>
        <input type="text" @input="inputHandler( hello , $event)" />
    </div>
</template>
Copier après la connexion
export default {
    methods: {
        inputHandler(msg, e) {
            console.log(e.target.value)
        }
    }
}
Copier après la connexion

Événement personnalisé : représenté dans un événement personnalisé pour capturer la valeur générée par le composant enfant.

export default {
    methods: {
        customEvent() {
            this.$emit( custom-event ,  some value )
        }
    }
}
Copier après la connexion
<template>
    <div>
        <my-item v-for="(item, index) in list" @custom-event="customEvent(index, $event)">
            </my-list>
    </div>
</template>
Copier après la connexion
export default {
    methods: {
        customEvent(index, e) {
            console.log(e) //  some value
        }
    }
}
Copier après la connexion

7. Écouteur d'événements programmatique

Par exemple, définissez une minuterie lorsque la page est montée, et la minuterie doit être effacée lorsque la page est détruite. Cela ne semble pas poser de problème. Mais en y regardant de plus près, le seul but de this.timer est de pouvoir obtenir le numéro du timer avant Destroy, sinon cela ne sert à rien.

export default {
    mounted() {
        this.timer = setInterval(() => {
            console.log(Date.now())
        }, 1000)
    },
    beforeDestroy() {
        clearInterval(this.timer)
    }
}
Copier après la connexion

Il est préférable de n'accéder aux hooks de cycle de vie que si possible. Ce n’est pas un problème grave mais peut prêter à confusion. Nous pouvons résoudre ce problème en utilisant ou une fois pour écouter la destruction du cycle de vie des pages :

export default {
    mounted() {
        this.creatInterval( hello )
        this.creatInterval( world )
    },
    creatInterval(msg) {
        let timer = setInterval(() => {
            console.log(msg)
        }, 1000)
        this.$once( hook:beforeDestroy , function() {
            clearInterval(timer)
        })
    }
}
Copier après la connexion

使用这种方法,即使我们同时创建多个定时器,也不影响效果。这是因为它们将在页面被销毁后以编程方式自动清除。8.监听组件生命周期通常我们使用 $emit 监听组件生命周期,父组件接收事件进行通知。

子组件

export default {
    mounted() {
        this.$emit( listenMounted )
    }
}
Copier après la connexion

父组件

<template>
    <div>
        <List @listenMounted="listenMounted" />
    </div>
</template>
Copier après la connexion

其实有一种简单的方法就是使用@hook 来监听组件的生命周期,而不需要在组件内部做任何改动。同样,创建、更新等也可以使用这个方法。

<template>
    <List @hook:mounted="listenMounted" />
</template>
Copier après la connexion

(学习视频分享:vuejs入门教程编程基础视频

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment utiliser Watch in Vue Comment utiliser Watch in Vue Apr 07, 2025 pm 11:36 PM

L'option Watch dans Vue.js permet aux développeurs d'écouter des modifications de données spécifiques. Lorsque les données changent, regardez déclenche une fonction de rappel pour effectuer des vues de mise à jour ou d'autres tâches. Ses options de configuration incluent immédiatement, qui spécifie s'il faut exécuter un rappel immédiatement, et profond, ce qui spécifie s'il faut écouter récursivement les modifications des objets ou des tableaux.

Comment référencer le fichier JS avec Vue.js Comment référencer le fichier JS avec Vue.js Apr 07, 2025 pm 11:27 PM

Il existe trois façons de se référer aux fichiers JS dans Vue.js: spécifiez directement le chemin à l'aide du & lt; script & gt; étiqueter;; importation dynamique à l'aide du crochet de cycle de vie monté (); et l'importation via la bibliothèque de gestion de l'État Vuex.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Comment ajouter des fonctions aux boutons pour Vue Comment ajouter des fonctions aux boutons pour Vue Apr 08, 2025 am 08:51 AM

Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.

Vue réalise l'effet de défilement de chapiteau / texte Vue réalise l'effet de défilement de chapiteau / texte Apr 07, 2025 pm 10:51 PM

Implémentez les effets de défilement marquee / texte dans VUE, en utilisant des animations CSS ou des bibliothèques tierces. Cet article présente comment utiliser l'animation CSS: créer du texte de défilement et envelopper du texte avec & lt; div & gt;. Définissez les animations CSS et défini: caché, largeur et animation. Définissez les images clés, Set Transforment: Translatex () au début et à la fin de l'animation. Ajustez les propriétés d'animation telles que la durée, la vitesse de défilement et la direction.

Que signifie la charge paresseuse? Que signifie la charge paresseuse? Apr 07, 2025 pm 11:54 PM

Dans vue.js, le chargement paresseux permet de charger dynamiquement les composants ou les ressources, en réduisant le temps de chargement des pages initiales et en améliorant les performances. La méthode de mise en œuvre spécifique comprend l'utilisation de & lt; keep-alive & gt; et & lt; composant est & gt; composants. Il convient de noter que le chargement paresseux peut provoquer des problèmes de FOUC (écran d'éclat) et ne doit être utilisé que pour les composants qui nécessitent un chargement paresseux pour éviter les frais généraux de performances inutiles.

Comment revenir à la page précédente par Vue Comment revenir à la page précédente par Vue Apr 07, 2025 pm 11:30 PM

Vue.js dispose de quatre méthodes pour revenir à la page précédente: $ router.go (-1) $ router.back () utilise & lt; router-link to = & quot; / & quot; Composant Window.History.back (), et la sélection de la méthode dépend de la scène.

Comment interroger la version de Vue Comment interroger la version de Vue Apr 07, 2025 pm 11:24 PM

Vous pouvez interroger la version Vue en utilisant Vue Devtools pour afficher l'onglet Vue dans la console du navigateur. Utilisez NPM pour exécuter la commande "NPM List -g Vue". Recherchez l'élément VUE dans l'objet "dépendances" du fichier package.json. Pour les projets Vue CLI, exécutez la commande "Vue --version". Vérifiez les informations de la version dans le & lt; script & gt; Tag dans le fichier html qui fait référence au fichier VUE.

See all articles