Maison  >  Article  >  interface Web  >  Principes sous-jacents de Vue et communication des composants

Principes sous-jacents de Vue et communication des composants

php中世界最好的语言
php中世界最好的语言original
2018-06-15 14:16:082312parcourir

Cette fois, je vais vous apporter la communication entre les principes sous-jacents de Vue et les composants. Quelles sont les précautions pour communiquer entre les principes sous-jacents de Vue et les composants. Voici un cas pratique, jetons un coup d'oeil.

Le principe sous-jacent de vue ?

La communication entre les composants de vue ?

Combien de méthodes existe-t-il pour déterminer le type de données en JS ?

La méthode la plus courante pour déterminer : typeof

La méthode pour déterminer le type d'un objet connu : instanceof

Juge basée sur le constructeur de l'objet : constructor

Méthode invincible et omnipotente : jquery.type()

Quelle est la différence entre vue et angulaire ?

1.vue n'est que la couche de vue dans mvvm. C'est juste une bibliothèque d'outils comme jquery, pas un framework, et angulaire est le framework mvvm.
2. La liaison bidirectionnelle de Vue est implémentée sur la base de 3. getter/setter dans ES5, tandis qu'angular implémente son propre ensemble de règles de compilation de modèles, qui nécessitent une vérification dite "sale", contrairement à vue. Par conséquent, Vue est plus efficace en termes de performances, mais au prix de ne pas être pris en charge par les navigateurs inférieurs à IE9.
4.vue doit fournir un objet el pour l'instanciation, et toutes les portées suivantes se trouvent également sous l'objet el, tandis qu'angular correspond à la page html entière. Une page peut avoir plusieurs instances Vue, mais Angular ne semble pas fonctionner de cette façon.
5.vue est vraiment facile à démarrer et le coût d'apprentissage est relativement faible. Cependant, il n'y a pas beaucoup de documents de référence. Les documents officiels sont relativement simples et manquent de cas d'utilisation complets. Pour une utilisation avancée, vous devez étudier le code source vous-même, du moins pour le moment.

Parlez-moi de votre compréhension de la vérification sale angulaire ?

En angulaire, vous ne pouvez pas savoir si vos données ont changé, donc il définit certaines conditions. Lorsque vous déclenchez ces conditions, il effectue une détection pour parcourir toutes les données, comparez les. les modifications que vous avez apportées, puis exécutez les modifications.
Ce test est très peu scientifique. Et l'efficacité n'est pas élevée, il y a beaucoup d'endroits redondants, c'est donc officiellement appelé sale chèque.

active-class est un attribut de quel composant ?

Le composant router-link du module vue-router.

Comment définir un routage imbriqué ?

Dans les projets réels, nous rencontrerons plusieurs couches de composants imbriqués, mais comment implémenter le routage imbriqué ? Par conséquent, nous devons utiliser la configuration des enfants dans les paramètres de VueRouter, afin que l'imbrication des routes puisse être correctement implémentée.

index.html n'a qu'une seule sortie de routage

<p id="app"> 
  <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> 
  <router-view></router-view> 
</p>

main.js La redirection du routage affichera le composant home dès le chargement de la page, car La redirection pointe vers. le composant home, le point de redirection et le point de chemin doivent être cohérents. Il y a des sous-routes à l'intérieur des enfants. Bien entendu, les sous-routes peuvent également être imbriquées à l'intérieur des sous-routes.

import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter) 
//引入两个组件 
import home from "./home.vue" 
import game from "./game.vue" 
//定义路由 
const routes = [ 
  { path: "/", redirect: "/home" },//重定向,指向了home组件 
  { 
    path: "/home", component: home, 
    children: [ 
      { path: "/home/game", component: game } 
    ] 
  } 
] 
//创建路由实例 
const router = new VueRouter({routes}) 
new Vue({ 
  el: '#app', 
  data: { 
  }, 
  methods: { 
  }, 
  router 
})

home.vue, cliquez sur Afficher pour afficher la sous-route. La sortie de la sous-route doit être dans la route parent, sinon la sous-route ne peut pas être affichée.

<template> 
  <p> 
    <h3>首页</h3> 
    <router-link to="/home/game"> 
      <button>显示<tton> 
    </router-link> 
    <router-view></router-view> 
  </p> 
</template>

game.vue

 <template> 
  <h3>游戏</h3> 
</template>

Comment définir le routage dynamique de vue-router ? Comment récupérer les paramètres dynamiques transmis ?

Dans le fichier index.js du répertoire du routeur, ajoutez /:id à l'attribut path.

Utilisez le params.id de l'objet routeur.

Quels types de crochets de navigation possède vue-router ?

Trois types,

Le premier : c'est le hook de navigation global : router.beforeEach(to,from,next), sa fonction est de juger et d'intercepter avant de sauter.
Le deuxième type : les hooks au sein des composants
Le troisième type : le routage des composants exclusifs séparément

Qu'est-ce que scss ? Quelles sont les étapes d'installation et d'utilisation dans vue.cli ? Quelles sont ses principales caractéristiques ?

Pré-compilation de CSS.

Étapes à utiliser :

Étape 1 : Utilisez npm pour télécharger trois chargeurs (sass-loader, css-loader, node-sass)

Étape 2 : Recherchez webpack.base.config.js dans le répertoire build, et ajoutez une extension.scss à l'attribut extends

Étape 3 : Toujours dans le même fichier, configurez un module attribut

Étape 4 : Ajoutez ensuite l'attribut lang à la balise de style du composant, par exemple : lang="scss"

Quelles sont les principales fonctionnalités :

1. Vous pouvez utiliser des variables, telles que ($variable name = value);
2. Vous pouvez utiliser des mélangeurs, tels que ()
3.

Qu'est-ce que mint-ui ? Comment utiliser ? Nommez au moins trois façons d’utiliser les composants ?

Bibliothèque de composants frontaux basée sur Vue. Installation de npm, puis importation de styles et js, vue.use (mintUi) est introduit globalement. Introduit localement dans un seul composant : importez {Toast} depuis 'mint-ui'.

Composant un : Toast (« connexion réussie ») ;
Composant deux : mint-header
Composant trois : mint-swiper

Qu'est-ce que le v-model ? Comment utiliser ? Comment lier des événements à des balises dans Vue ?

Peut réaliser une liaison bidirectionnelle, des instructions (v-class, v-for, v-if, v-show, v-on). L'attribut data de la couche modèle de vue. Événement de liaison :

Quels sont les avantages et les inconvénients de l'iframe ?

iframe est également appelé cadre intégré. Un cadre intégré est similaire à une page Web encadrée. Il peut intégrer le cadre et le contenu d'une page Web dans une page Web existante.

Avantages :

Résoudre les problèmes de chargement liés au chargement lent du contenu tiers tel que les icônes et les publicités

Bac à sable de sécurité

Scripts de chargement parallèle

Barre de navigation facile à créer

Inconvénients :

iframe bloquera l'événement Onload de la page principale

Même si le contenu est vide, le chargement prendra du temps

Pas de sémantique

Décrivez brièvement Sass et Less, et expliquez les différences ?

Ce sont des langages de style dynamique, des préprocesseurs CSS et une couche d'abstraction sur CSS. Ils sont compilés en CSS en utilisant une syntaxe/un langage spécial.

Les symboles de variables sont différents, less est @ et Sass est $;

Sass prend en charge les instructions conditionnelles, vous pouvez utiliser if{}else{}, for{} boucles, etc. Less ne le prend pas en charge ;

Sass est basé sur Ruby et est traité côté serveur, tandis que Less doit introduire less.js pour traiter le code Less et afficher le CSS vers le navigateur

Qu'est-ce qu'axios ? Comment utiliser ? Décrivez le processus d'utilisation pour implémenter la fonctionnalité de connexion ?

Module qui demande des ressources en arrière-plan. npm install axios -S est installé, puis envoyé entre les domaines, qui doivent être définis dans le fichier de configuration config/index.js. Si l'arrière-plan est Tp5, définissez un itinéraire de ressources. Utilisez import in js, puis .get ou .post. S'il réussit, il sera renvoyé dans la fonction .then, s'il échoue, il sera renvoyé dans la fonction .catch

Dans l'avancement axios+tp5, quelle est l'opération d'appel de axios.post(' API/utilisateur') ? Qu'en est-il de axios.put('api/user/8′) ?

Inter-domaine, ajout d'opérations utilisateur, opérations de mise à jour.

Qu'est-ce que vuex ? Comment utiliser ? Quel scénario fonctionnel l’utilise ?

Gestion de l'état dans le framework vue. Introduisez store dans main.js et injectez-le. Un nouveau magasin d'annuaire est créé,...export. Les scénarios incluent : l'état entre les composants dans une application d'une seule page. Lecture de musique, statut de connexion, ajout au panier

Qu'est-ce que le framework mvvm ? Quelle est la différence entre celui-ci et les autres frameworks (jquery) ? Quels scénarios sont adaptés ?

Un framework model+view+viewModel, un modèle de modèle de données, viewModel connecte deux

Différence : vue basée sur les données, affiche la couche de vue via les données au lieu des opérations de nœuds .

Scénario : Scénarios avec beaucoup d'opérations de données, plus pratiques

Quelles sont les méthodes de personnalisation des instructions (v-check, v-focus) ? Quelles fonctions de hook a-t-il ? Quels sont les autres paramètres de la fonction hook ?

Directive définie globalement : il y a deux paramètres dans la méthode directive de l'objet vue, l'un est le nom de la directive et l'autre est la fonction. Instructions définies dans le composant : directives

Fonction Hook : liaison (déclenchée par un événement de liaison), insérée (déclenchée lors de l'insertion du nœud), mise à jour (mises à jour associées au sein du composant)

Paramètres de la fonction Hook : el , contraignant

Nommez au moins 4 types d'instructions dans vue et leur utilisation ?

v-if : Déterminer s'il faut masquer ; v-for : Boucler les données ; v-bind:class : Lier un attribut ; v-model : Implémenter une liaison bidirectionnelle

Qu'est-ce que vue-router ? De quels composants dispose-t-il ?

vue est utilisée pour écrire un plug-in de routage. Quels sont les crochets de navigation pour router-link et router-view

 ? Quels paramètres ont-ils ?

Les crochets de navigation sont :

a/Crochets globaux et crochets exclusifs aux composants. b/beforeRouteEnter, afterEnter, beforeRouterUpdate, beforeRouteLeave

Paramètres :

Il y a to (l'itinéraire à parcourir), from (l'itinéraire à quitter), next (vous devez utiliser cette fonction pour aller au suivant) Une route, si elle n'est pas utilisée, interceptez-la) Les plus couramment utilisées sont celles-ci

Quel est le principe de la liaison de données bidirectionnelle de Vue ?

vue.js utilise le détournement de données combiné au modèle éditeur-abonné. Il utilise Object.defineProperty() pour détourner les setters et getters de chaque propriété et publier des messages lorsque les données changent. A l'abonné, déclenchez le rappel d'écoute correspondant.

Étapes spécifiques :

Étape 1 : Parcourir de manière récursive les objets de données qui doivent être observés, y compris les attributs des objets de sous-attributs , et ajoutez-les Setters et getters
Dans ce cas, attribuer une valeur à cet objet déclenchera le setter, et vous pourrez ensuite surveiller les modifications des données

La deuxième étape : compiler, analyser les instructions du modèle et les convertir les variables dans le modèle Remplacez-le par des données, puis initialisez la vue de la page de rendu, liez la fonction de mise à jour au nœud correspondant à chaque instruction et ajoutez des abonnés pour surveiller les données. Une fois les données modifiées, recevez une notification et mettez à jour la vue <.>

Étape 3 : Les abonnés Watcher sont le pont de communication entre Observer et Compile. Les principales choses qu'ils font sont :

1. S'ajoutent à l'attribut abonné (dep) lorsqu'ils sont instanciés. .Ils doivent avoir une méthode update.()
3. Lorsque dep.notice() vous avertit des changements d'attribut, vous pouvez appeler votre propre méthode update() et déclencher le rappel lié dans Compile, vous aurez alors terminé.

Étape 4 : Comme entrée dans la liaison de données, MVVM intègre Observer, Compile et Watcher, utilise Observer pour surveiller les modifications dans ses propres données de modèle, utilise Compile pour analyser et compiler les instructions du modèle, et enfin utilise Watcher pour définir up Le pont de communication entre Observer et Compile réalise l'effet de liaison bidirectionnelle des modifications de données -> afficher les mises à jour ; afficher les modifications interactives (entrée) -> modifications du modèle de données.

Veuillez expliquer en détail votre compréhension du cycle de vie des vues ? Un total de 8 étapes avant/après création, avant/après chargement, avant/après mise à jour, avant/après destruction

Avant/après création : dans Dans le À l'étape beforeCreated, l'élément de montage $el et les données de l'objet de données de l'instance de vue sont tous deux indéfinis et n'ont pas été initialisés. Dans la phase de création, les données de l'objet de données de l'instance vue sont disponibles, mais $el ne le sont pas.

Avant/après chargement : dans l'étape beforeMount, $el et les données de l'instance vue sont initialisés, mais le nœud dom virtuel avant est toujours monté et data.message n'a pas été remplacé. Dans la phase montée, l'instance vue est montée et data.message est rendu avec succès.

Avant/après mise à jour : lorsque les données changent, les méthodes beforeUpdate et mise à jour seront déclenchées.

Avant/après destruction : après l'exécution de la méthode destroy, les modifications apportées aux données ne déclencheront plus la fonction périodique, indiquant que l'instance Vue a libéré la surveillance des événements et la liaison au dom, mais que la structure dom existe toujours .

Veuillez me dire le processus d'encapsulation des composants vue ? Tout d'abord, les composants peuvent améliorer l'efficacité du développement de l'ensemble du projet. Il peut résumer la page en plusieurs modules relativement indépendants, ce qui résout les problèmes de notre développement de projet traditionnel : faible efficacité, maintenance difficile, réutilisabilité et autres problèmes.

Ensuite, utilisez la méthode Vue.extend pour créer un composant, puis utilisez la méthode Vue.component pour enregistrer le composant. Les composants enfants nécessitent des données et peuvent accepter des définitions dans les accessoires. Une fois que le composant enfant a modifié les données, il souhaite transmettre les données au composant parent. Vous pouvez utiliser la méthode d'émission.

Comment avez-vous connu vuex ? vuex peut être compris comme un modèle ou un cadre de développement. Par exemple, PHP a thinkphp, java a spring, etc.

Gérez de manière centralisée les modifications apportées aux composants du pilote via le statut (source de données) (comme le conteneur IOC de Spring gérant de manière centralisée les beans).


Le statut au niveau de l'application est concentré dans le magasin ; la façon de modifier le statut est de soumettre des mutations, ce qui est une chose synchrone ; la logique asynchrone doit être encapsulée dans des actions.

Qu'est-ce que vue-loader ? Quelles sont les utilisations de son utilisation ? Un chargeur qui analyse les fichiers .vue et convertit template/js/style en modules js.

Objectif : js peut être écrit en es6, le style peut être scss ou moins, le modèle peut être ajouté avec jade, etc.

Veuillez me dire l'utilisation de chaque dossier et fichier dans le src répertoire dans le projet vue.cli ?

Le dossier Assets est destiné aux ressources statiques ; les composants sont destinés aux composants ; le routeur est destiné à définir les configurations liées au routage ; app.vue est un composant principal de l'application ; main.js est le fichier d'entrée

vue. .Comment utiliser des composants personnalisés dans cli ? Avez-vous rencontré des problèmes ?

Étape 1 : Créez votre fichier de composant (smithButton.vue) dans le répertoire des composants. Le script doit exporter la valeur par défaut {

Étape 2 : Importez-le dans la page (composant) que vous devez utiliser. :import smithButton from '../components/smithButton.vue'

Étape 3 : Injectez-le dans l'attribut composants du sous-composant de vue, composants :{smithButton}

Étape 4 : Lorsque utilisé dans la vue modèle,
Le problème est : nommer smithButton, lors de son utilisation, il s'agit de smith-button.

Parlez de votre compréhension de la compilation de modèles Vue.js ?

En bref, il est d'abord converti en arbre AST, puis la fonction de rendu résultante renvoie VNode (le nœud DOM virtuel de Vue)

Étapes détaillées :

Tout d'abord, le modèle est compilé dans un arbre de syntaxe AST (arbre de syntaxe abstraite, qui est une représentation arborescente de la structure syntaxique abstraite du code source) via le compilateur compile est la valeur de retour. de createCompiler, qui est utilisé pour créer le compilateur. De plus, compile est également responsable de la fusion des options.

Ensuite, l'AST obtiendra la fonction de rendu via la génération (le processus de conversion de l'arbre de syntaxe AST en une chaîne de fonction de rendu). La valeur de retour de render est VNode est le nœud DOM virtuel de Vue. qui contient (nom de l'étiquette, sous-nœuds, texte, etc.)

enregistrement de l'historique de vue

historique Combien de pas en avant ou en arrière dans la notice

Quelle est la différence entre vuejs, angulairejs et réagir ?

1. Différences par rapport à AngularJS

Mêmes points :

les deux instructions de support : instructions intégrées et instructions personnalisées.

Les deux prennent en charge les filtres : filtres intégrés et filtres personnalisés.

les deux prennent en charge la liaison de données bidirectionnelle.

Ni l'un ni l'autre ne prend en charge les navigateurs bas de gamme.

Différences :

1. AngularJS a un coût d'apprentissage élevé, comme l'ajout de la fonctionnalité d'injection de dépendances, tandis que les API fournies par Vue.js lui-même sont relativement simples et intuitives.

2. En termes de performances, AngularJS s'appuie sur une vérification sale des données, donc plus il y a d'observateurs, plus cela devient lent.

Vue.js utilise l'observation basée sur le suivi des dépendances et utilise des mises à jour de file d'attente asynchrones. Toutes les données sont déclenchées indépendamment.

Pour les grandes applications, cette différence d'optimisation est assez évidente.

2. Différences avec React

Points similaires :

React utilise une syntaxe JSX spéciale et Vue.js recommande également d'écrire un format de fichier spécial .vue dans le développement de composants. certaines conventions sur le contenu des fichiers, et les deux doivent être compilées avant utilisation.

L'idée centrale est la même : tout est un composant, et les instances de composants peuvent être imbriquées.

fournissent tous des fonctions de hook raisonnables, permettant aux développeurs de personnaliser leurs besoins.

n'a pas de fonctions AJAX, Route et autres intégrées dans le package principal, mais est chargé en tant que plug-in.

Prend en charge les fonctionnalités mixins dans le développement de composants.

Différences :

React s'appuie sur Virtual DOM, tandis que Vue.js utilise des modèles DOM. Le DOM virtuel utilisé par React effectuera des vérifications approfondies sur les résultats rendus.

Vue.js fournit des instructions, des filtres, etc. dans le modèle, qui peuvent faire fonctionner le DOM très facilement et rapidement.

Questions d'entretien sur le cycle de vie de vue

Qu'est-ce que le cycle de vie de vue ?

Le processus allant de la création à la destruction d'une instance Vue est le cycle de vie. C'est-à-dire une série de processus depuis le début de la création, l'initialisation des données, la compilation de modèles, le montage de Dom → rendu, la mise à jour → le rendu, la désinstallation, etc. Nous appelons cela le cycle de vie de Vue.

Quel est le rôle du cycle de vie de vue ?

Il possède plusieurs hooks d'événements dans son cycle de vie, ce qui nous permet de former plus facilement une bonne logique lors du contrôle du processus de l'ensemble de l'instance Vue.

Combien d'étapes y a-t-il dans le cycle de vie d'une vue ?

Il peut être divisé en 8 étapes au total : avant/après création, avant/après chargement, avant/après mise à jour, avant/après destruction

Quels hooks seront déclenchés au premier chargement de la page ?

Les hooks beforeCreate, créés, beforeMount, montés seront déclenchés lorsque la page est chargée pour la première fois

Dans quel cycle le rendu DOM est-il terminé ?

Le rendu DOM a été terminé en monté

Décrivez brièvement à quels scénarios chaque cycle est adapté ?

Quelques façons d'utiliser les hooks de cycle de vie : beforecreate : Vous pouvez ajouter ici un événement de chargement, qui est déclenché lorsque l'instance est chargée. créée : L'événement lorsque l'initialisation est terminée est écrit ici , comme se terminer ici Pour le chargement d'événements, les requêtes asynchrones peuvent également être appelées monté ici : Monter les éléments et obtenir les nœuds DOM mis à jour : Si les données sont traitées uniformément, écrivez la fonction correspondante ici avantDestroy : Vous pouvez créer une boîte de confirmation pour confirmer le stop event nextTick : Après la mise à jour des données, faites fonctionner immédiatement dom

les arguments sont un pseudo-tableau, il n'y a pas d'interface de traversée et ne peuvent pas être parcourus

Que sont et les différences entre cancas et SVG

SVG

SVG est un langage qui utilise XML pour décrire les graphiques 2D.
SVG est basé sur XML, ce qui signifie que chaque élément du DOM SVG est disponible. Vous pouvez attacher un gestionnaire d'événements JavaScript à un élément.
En SVG, chaque forme dessinée est considérée comme un objet. Si les propriétés d'un objet SVG changent, le navigateur peut automatiquement reproduire le graphique.

Canvas

Canvas dessine des graphiques 2D via JavaScript.
Le canevas est rendu pixel par pixel.
Dans Canvas, une fois qu'un graphique est dessiné, il n'attire plus l'attention du navigateur. Si sa position change, la scène entière doit être redessinée, y compris tous les objets qui auraient pu être recouverts par des graphiques.

Comparaison de Canvas et SVG

Canvas

Dépend de la résolution
Ne prend pas en charge les gestionnaires d'événements
Faibles capacités de rendu de texte
Possibilité d'enregistrer l'image résultante au format .png ou .jpg
Idéal pour les jeux à forte intensité graphique où de nombreux objets seront fréquemment redessinés

SVG

Indépendant de résolution
Prend en charge les gestionnaires d'événements
Idéal pour les applications avec de grandes zones de rendu (telles que Google Maps)
Une complexité élevée ralentira le rendu (toute application qui utilise le DOM de manière excessive sera désagréable)
Ne convient pas au jeu applications

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 php chinois. site web!

Lecture recommandée :

Comment nodejs+mysql exploite la base de données

Comment utiliser l'environnement webpack+vue LAN

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:
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