Heim Web-Frontend View.js Einführung in verschiedene Methoden zum Definieren von Komponentenvorlagen in Vue.js

Einführung in verschiedene Methoden zum Definieren von Komponentenvorlagen in Vue.js

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

Einführung in verschiedene Methoden zum Definieren von Komponentenvorlagen in Vue.js

Vue.js verwendet eine HTML-basierte Vorlagensyntax, die es Entwicklern ermöglicht, das DOM deklarativ an die Daten der zugrunde liegenden Vue-Instanz zu binden. Alle Vue.js-Vorlagen sind legales HTML und können von Browsern und HTML-Parsern analysiert werden, die der Spezifikation folgen.

Es gibt viele Optionen zum Definieren von Komponentenvorlagen in Vue. Meiner Meinung nach gibt es mindestens sieben verschiedene Möglichkeiten:

  • Strings

  • Template-Literale

  • Machen Sie sich mit jeder Methode vertraut und besprechen Sie deren Vor- und Nachteile, damit Sie wissen, welche Methode in der jeweiligen Situation am besten geeignet ist.

  • 1. String

  • Standardmäßig wird die Vorlage als String in der JS-Datei definiert. Ich denke, wir sind uns alle einig, dass Vorlagen in Strings sehr schwer zu verstehen sind. Abgesehen von der breiten Browserunterstützung gibt es an dieser Methode nichts Besonderes.
  • 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; }
    	}
    });
    Nach dem Login kopieren
  • 2. Vorlagenliterale
  • ES6-Vorlagenliterale („Backticks“) ermöglichen die Definition von Vorlagen über mehrere Zeilen, was in regulären Javascript-Strings nicht möglich ist. Während Sie aus Sicherheitsgründen wahrscheinlich immer noch auf ES5 umsteigen sollten, unterstützen viele neue Browser diese Befehle mittlerweile und sind einfacher zu lesen.

Dieser Ansatz ist jedoch nicht perfekt; ich habe festgestellt, dass die meisten IDEs Sie immer noch mit Syntaxhervorhebung, Tabulatoren, Zeilenumbrüchen usw. belasten.

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; }
	}
});/
Nach dem Login kopieren

3, X-Templates

Mit dieser Methode wird Ihre Vorlage in einem Skript-Tag in der Datei index.html definiert. Skript-Tags werden mit dem Text /x-template getaggt und durch die ID in der Komponentendefinition referenziert.

Dieser Ansatz gefällt mir, er ermöglicht es Ihnen, HTML mit korrektem HTML-Markup zu schreiben, aber der Nachteil ist, dass er die Vorlage vom Rest der Komponentendefinition trennt.

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; }
	}
});
Nach dem Login kopieren
<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>
Nach dem Login kopieren
4. Inline-Vorlagen

Durch Hinzufügen des Inline-Template-Attributs zu einer Komponente können Sie Vue angeben, dass der interne Inhalt ihre Vorlage ist, anstatt ihn als verteilten Inhalt zu behandeln.

Es hat die gleichen Nachteile wie x-templates, aber ein Vorteil besteht darin, dass der Inhalt in der HTML-Vorlage an der richtigen Position ist, sodass er beim Laden der Seite gerendert werden kann, anstatt zu warten, bis Javascript verfügbar ist laufen.

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


Die Rendering-Funktion erfordert, dass Sie die Vorlage als Javascript-Objekt definieren. Sie sind eindeutig die ausführlichsten und abstraktesten Vorlagenoptionen.
Dies hat jedoch den Vorteil, dass die Vorlage näher am Compiler liegt und Ihnen den Zugriff auf die gesamte Javascript-Funktionalität statt auf die von der Direktive bereitgestellte Teilmenge ermöglicht.

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 ]
		    	)
		  	]
		);
	}
});
Nach dem Login kopieren

6. JSX

Die umstrittenste Vorlagenoption in Vue ist JSX. Einige Entwickler halten JSX für hässlich, unintuitiv und einen Verrat am Geist von Vue. JSX erfordert, dass Sie es zuerst konvertieren, da Browser es nicht lesen können. Wenn Sie jedoch Rendering-Funktionen verwenden müssen, ist JSX sicherlich eine weniger abstrakte Möglichkeit, Vorlagen zu definieren.

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>
	}
});
Nach dem Login kopieren

7. Einzeldateikomponenten Solange Sie mit den Build-Tools in Ihrem Setup vertraut sind, sind Einzeldateikomponenten die Königin der Vorlagenoptionen. Sie bieten das Beste aus beiden Welten: Sie ermöglichen das Schreiben von Markups und behalten gleichzeitig alle Komponentendefinitionen in einer einzigen Datei bei.

Sie erfordern eine Transposition und einige IDEs unterstützen keine Syntaxhervorhebung für diesen Dateityp, aber ansonsten sind sie kaum zu übertreffen.

<template>
  <div class="checkbox-wrapper" @click="check">
    <div :class="{ checkbox: true, checked: checked }"></div>
    <div class="title">{{ title }}</div>
  </div>
</template>
<script>
  export default {
    data() {
      return { checked: false, title: &#39;Check me&#39; }
    },
    methods: {
      check() { this.checked = !this.checked; }
    }
  }
</script>
Nach dem Login kopieren

Sie könnten argumentieren, dass es mehr Möglichkeiten zur Vorlagendefinition gibt, da Sie Vorlagenpräprozessoren wie Pug vs. SFCs verwenden können. Welcher ist der Beste?

Natürlich gibt es keinen perfekten Weg und jeder sollte anhand Ihres Anwendungsfalls beurteilt werden. Ich denke, die besten Entwickler erkennen alle Möglichkeiten und machen jedem Entwickler ein Werkzeug in seinem Vue.js-Werkzeuggürtel!

Englische Originaladresse: https://vuejsdevelopers.com/2017/03/24/vue-js-component-templates/

Verwandte Empfehlungen:

Zusammenfassung der Fragen zum Front-End-Vue-Interview 2020 (im Anhang). ) Antwort)

vue-Tutorial-Empfehlung: Die neuesten 5 vue.js-Video-Tutorial-Auswahlen im Jahr 2020

Weitere Programmierkenntnisse finden Sie unter:

Einführung in die Programmierung

! !

Das obige ist der detaillierte Inhalt vonEinführung in verschiedene Methoden zum Definieren von Komponentenvorlagen in Vue.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ausführliche Diskussion darüber, wie Vite .env-Dateien analysiert Ausführliche Diskussion darüber, wie Vite .env-Dateien analysiert Jan 24, 2023 am 05:30 AM

Wenn wir das Vue-Framework zum Entwickeln von Front-End-Projekten verwenden, stellen wir bei der Bereitstellung mehrere Umgebungen bereit. Oft sind die von Entwicklungs-, Test- und Online-Umgebungen aufgerufenen Schnittstellendomänen unterschiedlich. Wie können wir die Unterscheidung treffen? Dabei werden Umgebungsvariablen und Muster verwendet.

Was ist der Unterschied zwischen Komponentisierung und Modularisierung in Vue? Was ist der Unterschied zwischen Komponentisierung und Modularisierung in Vue? Dec 15, 2022 pm 12:54 PM

Der Unterschied zwischen Komponentisierung und Modularisierung: Die Modularisierung ist aus Sicht der Codelogik unterteilt. Sie erleichtert die Entwicklung auf Codeebene und stellt sicher, dass die Funktionen jedes Funktionsmoduls konsistent sind. Die Komponentisierung ist die Planung aus der Perspektive der UI-Schnittstelle; die Komponentisierung des Frontends erleichtert die Wiederverwendung von UI-Komponenten.

Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt Apr 24, 2023 am 10:52 AM

Ace ist ein in JavaScript geschriebener einbettbarer Code-Editor. Es entspricht der Funktionalität und Leistung nativer Editoren wie Sublime, Vim und TextMate. Es kann problemlos in jede Webseite und JavaScript-Anwendung eingebettet werden. Ace wird als Haupteditor für die Cloud9-IDE gepflegt und ist der Nachfolger des Mozilla Skywriter (Bespin)-Projekts.

Praktischer Kampf: Entwickeln Sie ein Plug-In in vscode, das Vue-Dateien unterstützt, um zu Definitionen zu springen Praktischer Kampf: Entwickeln Sie ein Plug-In in vscode, das Vue-Dateien unterstützt, um zu Definitionen zu springen Nov 16, 2022 pm 08:43 PM

vscode selbst unterstützt Vue-Dateikomponenten, um zu Definitionen zu springen, aber die Unterstützung ist sehr schwach. Unter der Konfiguration von vue-cli können wir viele flexible Verwendungen schreiben, die unsere Produktionseffizienz verbessern können. Es sind jedoch diese flexiblen Schreibmethoden, die verhindern, dass die von vscode selbst bereitgestellten Funktionen das Springen zu Dateidefinitionen unterstützen. Um mit diesen flexiblen Schreibmethoden kompatibel zu sein und die Arbeitseffizienz zu verbessern, habe ich ein vscode-Plug-in geschrieben, das Vue-Dateien unterstützt, um zu Definitionen zu springen.

Lassen Sie uns ausführlich über reactive() in vue3 sprechen Lassen Sie uns ausführlich über reactive() in vue3 sprechen Jan 06, 2023 pm 09:21 PM

Vorwort: Bei der Entwicklung von vue3 bietet reactive eine Methode zur Implementierung reaktionsfähiger Daten. Dies ist eine häufig verwendete API in der täglichen Entwicklung. In diesem Artikel wird der Autor seinen internen Betriebsmechanismus untersuchen.

Erfahren Sie, wie Sie Unit-Tests in Vue3 schreiben Erfahren Sie, wie Sie Unit-Tests in Vue3 schreiben Apr 25, 2023 pm 07:41 PM

Vue.js ist heute ein sehr beliebtes Framework in der Front-End-Entwicklung. Da sich Vue.js ständig weiterentwickelt, werden Unit-Tests immer wichtiger. Heute untersuchen wir, wie man Unit-Tests in Vue.js 3 schreibt, und stellen einige Best Practices sowie häufige Probleme und Lösungen vor.

Ein einfacher Vergleich der JSX-Syntax und der Template-Syntax in Vue (Analyse der Vor- und Nachteile) Ein einfacher Vergleich der JSX-Syntax und der Template-Syntax in Vue (Analyse der Vor- und Nachteile) Mar 23, 2023 pm 07:53 PM

In Vue.js können Entwickler zwei verschiedene Syntaxen zum Erstellen von Benutzeroberflächen verwenden: JSX-Syntax und Vorlagensyntax. Beide Syntaxen haben ihre eigenen Vor- und Nachteile. Lassen Sie uns ihre Unterschiede, Vor- und Nachteile besprechen.

Eine kurze Analyse zum Umgang mit Ausnahmen in dynamischen Vue3-Komponenten Eine kurze Analyse zum Umgang mit Ausnahmen in dynamischen Vue3-Komponenten Dec 02, 2022 pm 09:11 PM

Wie gehe ich mit Ausnahmen in dynamischen Vue3-Komponenten um? Im folgenden Artikel geht es um die Ausnahmebehandlungsmethoden für dynamische Vue3-Komponenten. Ich hoffe, dass er für alle hilfreich ist.

See all articles