recherche
Maisoninterface WebVoir.jsIntroduction à 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

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; }
    	}
    });

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; }
	}
});/

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; }
	}
});
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>
Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});

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>

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 ]
		    	)
		  	]
		);
	}
});
. 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>
	}
});
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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Vue.js: définir son rôle dans le développement WebVue.js: définir son rôle dans le développement WebApr 18, 2025 am 12:07 AM

Le rôle de Vue.js dans le développement Web est d'agir comme un cadre JavaScript progressif qui simplifie le processus de développement et améliore l'efficacité. 1) Il permet aux développeurs de se concentrer sur la logique métier grâce à la liaison réactive des données et au développement des composants. 2) Le principe de travail de Vue.js s'appuie sur des systèmes réactifs et un Dom virtuel pour optimiser les performances. 3) Dans les projets réels, il est courant d'utiliser Vuex pour gérer l'état mondial et optimiser la réactivité des données.

Comprendre Vue.js: principalement un cadre frontalComprendre Vue.js: principalement un cadre frontalApr 17, 2025 am 12:20 AM

Vue.js est un framework JavaScript progressif publié par You Yuxi en 2014 pour créer une interface utilisateur. Ses principaux avantages incluent: 1. Ligneurs de données réactives, vue de mise à jour automatique des modifications de données; 2. Développement des composants, l'interface utilisateur peut être divisée en composants indépendants et réutilisables.

Frontend de Netflix: Exemples et applications de React (ou Vue)Frontend de Netflix: Exemples et applications de React (ou Vue)Apr 16, 2025 am 12:08 AM

Netflix utilise React comme cadre frontal. 1) Le modèle de développement composant de React et un écosystème fort sont les principales raisons pour lesquelles Netflix l'a choisi. 2) Grâce à la composante, Netflix divise les interfaces complexes en morceaux gérables tels que les lecteurs vidéo, les listes de recommandations et les commentaires des utilisateurs. 3) Le cycle de vie virtuel et composant virtuel de React optimise l'efficacité du rendu et la gestion de l'interaction des utilisateurs.

Le paysage frontal: comment Netflix a abordé ses choixLe paysage frontal: comment Netflix a abordé ses choixApr 15, 2025 am 12:13 AM

Le choix de Netflix dans la technologie frontale se concentre principalement sur trois aspects: l'optimisation des performances, l'évolutivité et l'expérience utilisateur. 1. Optimisation des performances: Netflix a choisi React comme cadre principal et outils développés tels que SpeedCurve et Boomerang pour surveiller et optimiser l'expérience utilisateur. 2. Évolutivité: ils adoptent une micro architecture frontale, divisant les applications en modules indépendants, améliorant l'efficacité de développement et l'évolutivité du système. 3. Expérience utilisateur: Netflix utilise la bibliothèque de composants Material-UI pour optimiser en continu l'interface via les tests A / B et les commentaires des utilisateurs pour assurer la cohérence et l'esthétique.

React vs. Vue: Quel framework utilise Netflix?React vs. Vue: Quel framework utilise Netflix?Apr 14, 2025 am 12:19 AM

NetflixUSESACustomFrameworkCalled "gibbon" builtonReact, notreactorVueDirectly.1) teamExperience: ChoOsBasedOnFamiliarity.

Le choix des cadres: qu'est-ce qui motive les décisions de Netflix?Le choix des cadres: qu'est-ce qui motive les décisions de Netflix?Apr 13, 2025 am 12:05 AM

Netflix considère principalement les performances, l'évolutivité, l'efficacité de développement, l'écosystème, la dette technique et les coûts de maintenance dans la sélection du cadre. 1. Performances et évolutivité: Java et Springboot sont sélectionnés pour traiter efficacement des données massives et des demandes simultanées élevées. 2. Efficacité de développement et écosystème: utiliser réagir pour améliorer l'efficacité du développement frontal et utiliser son riche écosystème. 3. Debt technique et coûts de maintenance: choisissez Node.js pour créer des microservices pour réduire les coûts de maintenance et la dette technique.

React, Vue et l'avenir du frontend de NetflixReact, Vue et l'avenir du frontend de NetflixApr 12, 2025 am 12:12 AM

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 dans le frontend: applications et exemples du monde réelVue.js dans le frontend: applications et exemples du monde réelApr 11, 2025 am 12:12 AM

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.

See all articles

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)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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