Vue ne fournit aucun moyen formel d'implémenter AJAX, et il existe de nombreux modèles de conception différents qui peuvent être utilisés efficacement. Chaque méthode a ses avantages et ses inconvénients et doit être jugée en fonction de vos besoins. Vous pouvez même en utiliser plusieurs en même temps !
Dans cet article, je vais vous montrer quatre endroits pour implémenter AJAX dans votre application Vue :
Instance racine
Composants
Actions Vuex
Garde de navigation d'itinéraire
Je vais expliquer chaque méthode, donner un exemple et discuter de ses avantages et inconvénients.
1. Instance racine
En utilisant cette architecture, vous pouvez effectuer toutes les requêtes AJAX à partir de l'instance racine, et stocke tous les états dans l’instance racine. Il agira comme une aide si un composant enfant a besoin de données. Si un composant enfant doit actualiser les données, l'instance racine sera invitée à le demander à l'aide d'un événement personnalisé.
Exemple :
new Vue({ data: { message: '' }, methods: { refreshMessage(resource) { this.$http.get('/message').then((response) { this.message = response.data.message; }); } } }) Vue.component('sub-component', { template: '<div>{{ message }}</div>', props: [ 'message' ] methods: { refreshMessage() { this.$emit('refreshMessage'); } } });
Avantages :
Conservez toute la logique et les données AJAX au même endroit.
Gardez les composants "stupides" afin qu'ils puissent se concentrer sur la présentation.
Inconvénients :
À mesure que l'application se développe, un grand nombre d'accessoires et d'événements personnalisés sont nécessaires .
2. Composants
Grâce à cette architecture, les composants sont responsables d'une gestion indépendante Leur propres requêtes et statuts AJAX. En pratique, vous souhaiterez peut-être créer plusieurs composants « conteneurs » qui gèrent les données pour leurs propres groupes de composants « présentation » locaux.
Par exemple, filter-list peut être un composant de conteneur enveloppant l'entrée du filtre et la réinitialisation du filtre, qui agissent comme composants de présentation . La liste de filtres contiendra la logique AJAX et gérera les données de tous les composants du groupe, en communiquant via des accessoires et des événements.
Pour faciliter la mise en œuvre de cette architecture, vous pouvez extraire n'importe quelle logique AJAX dans un mixin, puis utiliser le mixin dans le composant pour le rendre compatible AJAX.
let mixin = { methods: { callAJAX(resource) { ... } } } Vue.component('container-comp', { // No meaningful template, I just manage data for my children template: '<div><presentation-comp :mydata="mydata"></presentation-comp></div>', mixins: [ myMixin ], data() { return { ... } }, }) Vue.component('presentation-comp', { template: <div>I just show stuff like {{ mydata }}</div>, props: [ 'mydata' ] })
Avantages :
Conserver les composants Découplé et réutilisable.
Obtenez les données dont vous avez besoin quand et où.
Inconvénients :
Pas facile de communiquer des données avec d'autres composants ou groupes de composants.
Les composants peuvent avoir trop de responsabilités et des fonctionnalités en double.
3. Vuex en action
En utilisant cette architecture, vous pouvez utiliser Vuex Manage logique d'état et logique AJAX dans le stockage. Les composants peuvent demander de nouvelles données via des opérations de répartition.
Si vous implémentez ce modèle, c'est une bonne idée de renvoyer une promesse dans l'action afin de pouvoir analyser et répondre aux requêtes AJAX, telles que le masquage des spinners de chargement, la réactivation des boutons, etc.
store = new Vuex.Store({ state: { message: '' }, mutations: { updateMessage(state, payload) { state.message = payload } }, actions: { refreshMessage(context) { return new Promise((resolve) => { this.$http.get('...').then((response) => { context.commit('updateMessage', response.data.message); resolve(); }); }); } } }); Vue.component('my-component', { template: '<div>{{ message }}</div>', methods: { refreshMessage() { this.$store.dispatch('refeshMessage').then(() => { // do stuff }); } }, computed: { message: { return this.$store.state.message; } } });
J'aime cette architecture car elle découple bien la logique d'état et de présentation. Si vous utilisez Vuex, voici une façon de procéder. Si vous n'utilisez pas Vuex, c'est probablement une raison suffisante.
Avantages :
Toute l'architecture des composants racine Avantages, aucun accessoire ou événement personnalisé requis.
Inconvénients :
Augmentation des frais généraux de Vuex
4. Route Navigation Guard
En utilisant cette architecture, votre application sera divisée en plusieurs pages et, lorsque l'itinéraire change, obtiendra toutes les données. nécessaire pour la page et ses sous-composants.
Le principal avantage de cette approche est qu'elle simplifie vraiment l'interface utilisateur. Si les composants obtiennent leurs propres données indépendamment, la page sera restituée de manière imprévisible lorsque les données des composants sont renseignées dans un ordre arbitraire.
实现此功能的一个简单方法是在服务器上为每个页面创建端点,例如/about、/contact等,这些端点与应用程序中的路由名匹配。然后,可以实现一个通用的beforeRouteEnter钩子,将所有数据属性合并到页面组件的数据中:
import axios from 'axios'; router.beforeRouteEnter((to, from, next) => { axios.get(`/api${to.path}`).then(({ data }) => { next(vm => Object.assign(vm.$data, data)) }); })
优点:
使UI更加可预测。
缺点:
整体上比较慢,因为页面在所有数据都准备好之前无法呈现。
如果您不使用路由,也没有多大帮助。
附加模式:服务器—在页面中呈现第一个AJAX调用
不建议在初始页面加载时使用AJAX检索应用程序状态,因为它需要额外的到服务器的往返,这会延迟应用程序的呈现。
相反,将初始应用程序状态注入HTML页面头部的内联脚本中,以便在需要时将其作为全局变量提供给应用程序。
<html> ... <head> ... <script type="text/javascript"> window.__INITIAL_STATE__ = '{ "data": [ ... ] }'; </script> </head> <body> <div id="app"></div> </body> </html>
然后,AJAX可以更恰当地用于后续数据获取。
相关推荐:
更多编程相关知识,请访问:编程入门!!
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!

Netflix utilise principalement React comme cadre frontal, complété par Vue pour des fonctions spécifiques. 1) La composante de React et le DOM virtuel améliorent l'efficacité des performances et du développement des applications Netflix. 2) Vue est utilisée dans les outils internes et les petits projets de Netflix, et sa flexibilité et sa facilité d'utilisation sont essentielles.

Vue.js est un cadre JavaScript progressif adapté à la création d'interfaces utilisateur complexes. 1) Ses concepts principaux incluent des données réactives, une composontisation et un DOM virtuel. 2) Dans les applications pratiques, il peut être démontré en créant des applications TODO et en intégrant Vuerouter. 3) Lors du débogage, il est recommandé d'utiliser Vuedevtools et Console.log. 4) L'optimisation des performances peut être obtenue via V-IF / V-show, l'optimisation de rendu de liste, la charge asynchrone des composants, etc.

Vue.js convient aux projets de petite et moyenne taille, tandis que React convient plus aux applications grandes et complexes. 1. Le système réactif de Vue.js met automatiquement à jour le DOM par le suivi de la dépendance, ce qui facilite la gestion des changements de données. 2.Reacte adopte un flux de données unidirectionnel et les données circulent du composant parent au composant enfant, fournissant un flux de données clair et une structure facile à déborder.

Vue.js convient aux projets de petite et moyenne taille et aux itérations rapides, tandis que React convient aux applications grandes et complexes. 1) Vue.js est facile à utiliser et convient aux situations où l'équipe est insuffisante ou l'échelle du projet est petite. 2) React a un écosystème plus riche et convient aux projets avec des performances élevées et des besoins fonctionnels complexes.

Les méthodes pour implémenter le saut d'une balise dans Vue incluent: l'utilisation de la balise A dans le modèle HTML pour spécifier l'attribut HREF. Utilisez le composant routeur-link du routage Vue. Utilisez cette méthode. $ Router.push () dans JavaScript. Les paramètres peuvent être passés à travers le paramètre de requête et les itinéraires sont configurés dans les options de routeur pour les sauts dynamiques.

Il existe les méthodes suivantes pour implémenter le saut de composants dans Vue: Utilisez Router-Link et & lt; Router-View & gt; Composants pour effectuer un saut hyperlien et spécifiez: pour attribuer comme chemin cible. Utilisez le & lt; Router-View & gt; Composant directement pour afficher les composants rendus actuellement routés. Utilisez le router.push () et le router.replace () pour la navigation programmatique. Le premier sauve l'histoire et le second remplace l'itinéraire actuel sans quitter les enregistrements.

Il existe deux façons de sauter des éléments div dans Vue: Utilisez le routeur Vue et ajoutez le composant routeur-link. Ajoutez l'écouteur de l'événement @Click et appelez ceci. $ Router.push () pour sauter.

Il existe deux façons principales de transmettre des données dans Vue: accessoires: liaison de données unidirectionnelle, transmettant les données du composant parent au composant enfant. Événements: transmettez les données entre les composants à l'aide d'événements et d'événements personnalisés.


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

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft