Maison interface Web Voir.js Introduction à plusieurs méthodes de définition de modèles de composants dans Vue.js

Introduction à plusieurs méthodes de définition de modèles de composants dans Vue.js

Sep 25, 2020 pm 03:46 PM
vue.js

Introduction à plusieurs méthodes de définition de modèles de composants dans Vue.js

Vue.js utilise une syntaxe de modèle basée sur HTML qui permet aux développeurs de lier de manière déclarative le DOM aux données de l'instance Vue sous-jacente. Tous les modèles Vue.js sont du HTML légal et peuvent être analysés par les navigateurs et les analyseurs HTML qui suivent la spécification.

Il existe de nombreuses options pour définir des modèles de composants dans Vue. Il me semble qu'il existe au moins sept manières différentes :

  • String

  • Modèle littéral

  • Composant d'une seule page

  • Dans cet article, nous passerons en revue des exemples de chaque approche et discuterons de leurs avantages et inconvénients afin que vous sachiez quoi faire. faire en particulier Quelle méthode est la meilleure à utiliser dans les circonstances.

  • 1. Chaîne

  • Par défaut, le modèle sera défini comme une chaîne dans le fichier JS. Je pense que nous pouvons tous convenir que les modèles en chaînes sont très difficiles à comprendre. Il n'y a rien de spécial dans cette méthode autre que la large prise en charge du navigateur.

    Vue.component('my-checkbox', {
    	template: `<div class="checkbox-wrapper" @click="check">
    	<div :class="{ checkbox: true, checked: checked }">
    	</div><div class="title">{{ title }}</div></div>`,
    	data() {
    		return { checked: false, title: &#39;Check me&#39; }
    	},
    	methods: {
    		check() { this.checked = !this.checked; }
    	}
    });
    Copier après la connexion

2. Littéraux de modèles

Les littéraux de modèles ES6 ("backticks") vous permettent de définir des modèles sur plusieurs lignes, ce qui Cela ne peut pas être fait avec des chaînes Javascript classiques. Bien que vous devriez probablement toujours convertir vers ES5 par mesure de sécurité, de nombreux nouveaux navigateurs prennent désormais en charge ces commandes et sont plus faciles à lire.
Cette approche n'est cependant pas parfaite ; j'ai constaté que la plupart des IDE vous rendent toujours malheureux avec la coloration syntaxique, les tabulations, les sauts de ligne, etc.

Vue.component(&#39;my-checkbox&#39;, {
    template: ` < div class = "checkbox-wrapper"@click = "check" > 
    <div: class = "{ checkbox: true, checked: checked }" ></div>
							<div class="title">{{ title }}</div ></div>`,
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});/
Copier après la connexion

3. Les balises de script sont marquées par le texte /x-template et référencées par id dans la définition du composant. J'aime cette approche, elle permet d'écrire du HTML avec le balisage HTML correct, mais l'inconvénient est qu'elle sépare le modèle du reste de la définition du composant.

Vue.component(&#39;my-checkbox&#39;, {
	template: &#39;#checkbox-template&#39;,
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});
Copier après la connexion
rrree

4. Modèle en ligne

En ajoutant l'attribut inline-template au composant, vous pouvez indiquer à Vue que le contenu interne est son modèle, plutôt que de le considérer comme un contenu distribué.

Il présente les mêmes inconvénients que les modèles X, mais un avantage est le positionnement correct du contenu dans le HTML. modèle, donc peut être rendu lorsque la page se charge au lieu d'attendre que Javascript soit exécuté.

<script type="text/x-template" id="checkbox-template">
	<div class="checkbox-wrapper" @click="check">
		<div :class="{ checkbox: true, checked: checked }"></div>
		<div class="title">{{ title }}</div>
	</div>
</script>
Copier après la connexion
Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});
Copier après la connexion

5. Fonction de rendu

Exigences de la fonction de rendu Vous définissez des modèles en tant qu'objets Javascript. Ce sont clairement les options de modèle les plus verbeuses et les plus abstraites.

Cependant, l'avantage est que le modèle est plus proche du compilateur et vous permet d'accéder à l'intégralité des fonctionnalités Javascript plutôt qu'au sous-ensemble fourni par la directive.

<my-checkbox inline-template>
	<div class="checkbox-wrapper" @click="check">
		<div :class="{ checkbox: true, checked: checked }"></div>
		<div class="title">{{ title }}</div>
	</div>
</my-checkbox>
Copier après la connexion

6. JSX

L'option de modèle la plus controversée dans Vue est JSX. Certains développeurs considèrent JSX laid, peu intuitif et une trahison de l'esprit de Vue.

JSX vous oblige à le convertir d'abord car les navigateurs ne peuvent pas le lire. Cependant, si vous devez utiliser des fonctions de rendu, JSX est certainement une manière moins abstraite de définir des modèles. 7. Composants de fichier unique

Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	},
	render(createElement) {
		return createElement(
			&#39;div&#39;,
		  	{
					attrs: {
						&#39;class&#39;: &#39;checkbox-wrapper&#39;
					},
					on: {
						click: this.check
					}
		  	},
		  	[
		    	createElement(
	      		&#39;div&#39;,
	      		{
	        		&#39;class&#39;: {
	        			checkbox: true,
	        			checked: this.checked
        			}
	      		}
		    	),
		    	createElement(
	      		&#39;div&#39;,
	      		{
	        		attrs: {
	          		&#39;class&#39;: &#39;title&#39;
	        		}
	      		},
	      		[ this.title ]
		    	)
		  	]
		);
	}
});
Copier après la connexion
. Ils apportent le meilleur des deux mondes : vous permettant d'écrire du balisage tout en conservant toutes les définitions de composants dans un seul fichier. Ils nécessitent une transposition et certains IDE ne prennent pas en charge la coloration syntaxique pour ce type de fichier, mais sinon, il est difficile de les battre.
Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	},
	render() {
		return <div class="checkbox-wrapper" onClick={ this.check }>
		         <div class={{ checkbox: true, checked: this.checked }}></div>
		         <div class="title">{ this.title }</div>
		       </div>
	}
});
Copier après la connexion
Vous pourriez affirmer qu'il existe plus de possibilités de définition de modèles puisque vous pouvez utiliser des préprocesseurs de modèles comme Pug vs. SFC

Lequel est le meilleur ?

Bien sûr, il n'y a pas de méthode parfaite et chacune doit être jugée en fonction de votre cas d'utilisation. Je pense que les meilleurs développeurs réalisent toutes les possibilités et font de chaque développeur un outil dans leur ceinture d'outils Vue.js !

Adresse originale en anglais : https://vuejsdevelopers.com/2017/03/24/vue-js-component-templates/

Recommandations associées :

Un résumé des questions d'entretien Front-end Vue en 2020 (avec réponses)

Recommandation du tutoriel Vue : la dernière vidéo 5 vue.js tutoriels sélectionnés en 2020

Pour plus de connaissances liées à la programmation, veuillez visiter :

Introduction à la programmation ! !

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)

Discussion approfondie sur la façon dont vite analyse les fichiers .env Discussion approfondie sur la façon dont vite analyse les fichiers .env Jan 24, 2023 am 05:30 AM

Lorsque nous utilisons le framework Vue pour développer des projets front-end, nous déploierons plusieurs environnements lors du déploiement. Souvent, les noms de domaine d'interface appelés par les environnements de développement, de test et en ligne sont différents. Comment peut-on faire la distinction ? Cela utilise des variables et des modèles d'environnement.

Quelle est la différence entre la composantisation et la modularisation dans Vue Quelle est la différence entre la composantisation et la modularisation dans Vue Dec 15, 2022 pm 12:54 PM

La différence entre la modularisation et la modularisation : la modularisation est divisée du point de vue de la logique du code ; elle facilite le développement en couches de code et garantit la cohérence des fonctions de chaque module fonctionnel. La composantisation est planifiée du point de vue de l'interface utilisateur ; la composantisation du frontal facilite la réutilisation des composants de l'interface utilisateur.

Explication graphique détaillée de la façon d'intégrer l'éditeur de code Ace dans un projet Vue Explication graphique détaillée de la façon d'intégrer l'éditeur de code Ace dans un projet Vue Apr 24, 2023 am 10:52 AM

Ace est un éditeur de code intégrable écrit en JavaScript. Il correspond aux fonctionnalités et aux performances des éditeurs natifs comme Sublime, Vim et TextMate. Il peut être facilement intégré à n’importe quelle page Web et application JavaScript. Ace est maintenu en tant qu'éditeur principal de l'IDE Cloud9 et est le successeur du projet Mozilla Skywriter (Bespin).

Combat pratique : développer un plug-in dans vscode qui prend en charge les fichiers vue pour accéder aux définitions Combat pratique : développer un plug-in dans vscode qui prend en charge les fichiers vue pour accéder aux définitions Nov 16, 2022 pm 08:43 PM

vscode lui-même prend en charge les composants de fichiers Vue pour accéder aux définitions, mais la prise en charge est très faible. Sous la configuration de vue-cli, nous pouvons écrire de nombreuses utilisations flexibles, ce qui peut améliorer notre efficacité de production. Mais ce sont ces méthodes d'écriture flexibles qui empêchent les fonctions fournies par vscode lui-même de prendre en charge le passage aux définitions de fichiers. Afin d'être compatible avec ces méthodes d'écriture flexibles et d'améliorer l'efficacité du travail, j'ai écrit un plug-in vscode qui prend en charge les fichiers Vue pour accéder aux définitions.

Découvrez comment écrire des tests unitaires dans Vue3 Découvrez comment écrire des tests unitaires dans Vue3 Apr 25, 2023 pm 07:41 PM

Vue.js est devenu aujourd'hui un framework très populaire dans le développement front-end. À mesure que Vue.js continue d'évoluer, les tests unitaires deviennent de plus en plus importants. Aujourd'hui, nous allons explorer comment écrire des tests unitaires dans Vue.js 3 et fournir quelques bonnes pratiques ainsi que des problèmes et solutions courants.

Parlons en profondeur de reactive() dans vue3 Parlons en profondeur de reactive() dans vue3 Jan 06, 2023 pm 09:21 PM

Avant-propos : Dans le développement de vue3, réactif fournit une méthode pour implémenter des données réactives. Il s'agit d'une API fréquemment utilisée dans le développement quotidien. Dans cet article, l’auteur explorera son mécanisme de fonctionnement interne.

Une comparaison simple de la syntaxe JSX et de la syntaxe des modèles dans Vue (analyse des avantages et des inconvénients) Une comparaison simple de la syntaxe JSX et de la syntaxe des modèles dans Vue (analyse des avantages et des inconvénients) Mar 23, 2023 pm 07:53 PM

Dans Vue.js, les développeurs peuvent utiliser deux syntaxes différentes pour créer des interfaces utilisateur : la syntaxe JSX et la syntaxe des modèles. Les deux syntaxes ont leurs propres avantages et inconvénients. Discutons de leurs différences, avantages et inconvénients.

Une brève analyse de la façon de gérer les exceptions dans les composants dynamiques Vue3 Une brève analyse de la façon de gérer les exceptions dans les composants dynamiques Vue3 Dec 02, 2022 pm 09:11 PM

Comment gérer les exceptions dans les composants dynamiques Vue3 ? L'article suivant parlera des méthodes de gestion des exceptions des composants dynamiques Vue3. J'espère qu'il sera utile à tout le monde !

See all articles