Wenn ich meine Erfahrungen mit Vue in einem Satz zusammenfassen müsste, würde ich wahrscheinlich so etwas sagen wie: „Es ist einfach so vernünftig“ oder „Es gibt mir die Werkzeuge, die ich brauche, wenn ich sie brauche, und hindert mich nie daran“. Immer wieder habe ich beim Erlernen von Vue innerlich gelächelt. Es war einfach schlüssig, elegant.
Dies ist *mein eigener* Einführungsansatz zu Vue. Es ist der Artikel, den ich mir gewünscht hätte, als ich Vue zum ersten Mal lernte. Wenn Sie einen neutraleren Ansatz bevorzugen, besuchen Sie bitte die sehr gut durchdachte und leicht verständliche Anleitung von Vue.

Artikelserie
- Rendering, Direktiven und Events (Sie sind hier!)
- Komponenten, Props und Slots
- Vue-cli
- Vuex
- Animationen
Eines meiner Lieblingsteile an Vue ist, dass es all die erfolgreichen Dinge aus anderen Frameworks aufgreift und sie integriert, ohne unübersichtlich zu werden. Einige Beispiele, die mir besonders auffallen:
- Ein virtuelles DOM mit reaktiven Komponenten, die nur die View-Schicht bieten, Props und ein Redux-ähnlicher Store ähnlich wie bei React.
- Bedingtes Rendering und Services, ähnlich wie bei Angular.
- Inspiriert unter anderem von Polymer in Bezug auf Einfachheit und Leistung bietet Vue einen ähnlichen Entwicklungsstil, da HTML, Styles und JavaScript tandemmäßig komponiert werden.
Einige Vorteile, die ich gegenüber Vues Konkurrenten genossen habe: sauberere, semantischere API-Angebote, etwas bessere Leistung als React, keine Verwendung von Polyfills wie bei Polymer und eine isolierte, weniger meinungsbildende Ansicht als Angular, das ein MVC ist.
Ich könnte weitermachen, aber es ist wahrscheinlich besser, wenn Sie sich den umfassenden und Community-gesteuerten Vergleich mit anderen Frameworks ansehen. Es ist lesenswert, aber Sie können ihn später überspringen, wenn Sie sich in den Code vertiefen möchten.
Lassen Sie uns anfangen!
Wir können nicht ohne das obligatorische "Hallo, Welt!"-Beispiel beginnen. Machen wir das, damit Sie loslegen können
<div id="app">
{{ text }} Nice to meet Vue.
</div>
new Vue({
el: '#app',
data: {
text: 'Hello World!'
}
});
Siehe den Stift Vue Hello World von Sarah Drasner (@sdras) auf CodePen.
Wenn Sie mit React vertraut sind, wird es einige Ähnlichkeiten geben. Wir sind mitten im Inhalt mit der Schnabelvorlage in JavaScript eingetaucht und haben eine Variable verwendet, aber ein Unterschied ist, dass wir mit reinem HTML und nicht mit JSX arbeiten. JSX ist ziemlich einfach zu handhaben, aber ich finde es schön, dass ich keine Zeit damit verbringen muss, `class` in `className` usw. zu ändern. Sie werden auch feststellen, dass dies ziemlich leichtgewichtig ist, um damit loszulegen.
Versuchen wir nun Vue mit etwas, das ich wirklich liebe: Schleifen und bedingtes Rendering.
Bedingtes Rendering
Nehmen wir an, ich habe eine Liste von Elementen, wie z. B. Navigation, von denen ich weiß, dass ich sie wiederverwenden werde. Es könnte sinnvoll sein, sie in ein Array zu packen, um sie dynamisch und konsistent an mehreren Stellen zu aktualisieren. In reinem JavaScript (mit Babel) würden wir vielleicht so etwas tun: das Array erstellen, dann einen leeren String erstellen, in dem wir jedes Element, verpackt in ein `
- ` packen und es mit innerHTML zum DOM hinzufügen.
<div id="container"></div>
const items = [
'thingie',
'another thingie',
'lots of stuff',
'yadda yadda'
];
function listOfStuff() {
let full_list = '';
for (let i = 0; i < items.length; i++) {
full_list = full_list + `<li> ${items[i]} </li>`
}
const contain = document.querySelector('#container');
contain.innerHTML = `<ul> ${full_list} </ul>`;
}
listOfStuff();
Siehe den Stift e699f60b79b90a35401cc2bcbc588159 von Sarah Drasner (@sdras) auf CodePen.
Das funktioniert gut, ist aber für etwas so Standardmäßiges etwas unübersichtlich. Nun implementieren wir dasselbe mit Vues Schleife mit `v-for`.
<div id="app">
<ul>
<li v-for="item in items">
{{ item }}
</li>
</ul>
</div>
const app4 = new Vue({
el: '#app',
data: {
items: [
'thingie',
'another thingie',
'lots of stuff',
'yadda yadda'
]
}
});
Siehe den Stift Bedingtes Rendering in Vue von Sarah Drasner (@sdras) auf CodePen.
Ziemlich sauber und deklarativ. Wenn Sie mit Angular vertraut sind, wird Ihnen das wahrscheinlich bekannt vorkommen. Ich finde dies eine sehr saubere und lesbare Art, bedingt zu rendern. Wenn Sie in den Code springen und ihn aktualisieren müssten, könnten Sie das sehr einfach tun.
Ein weiteres wirklich schönes Angebot ist die dynamische Bindung mit v-model. Schauen Sie sich das an
<div id="app">
<h3>Type here:</h3>
<textarea v-model="message" class="message" rows="5" maxlength="72"></textarea><br>
<p class="booktext">{{ message }} </p>
</div>
new Vue({
el: '#app',
data() {
return {
message: 'This is a good place to type things.'
}
}
});
Siehe den Stift Vue Book v-model basic von Sarah Drasner (@sdras) auf CodePen.
Sie werden wahrscheinlich zwei Dinge an dieser Demo bemerken. Erstens, dass es absolut nichts gekostet hat, direkt in das Buch zu schreiben und den Text dynamisch zu aktualisieren. Vue ermöglicht uns, sehr einfach eine Zwei-Wege-Bindung zwischen dem `
Heutzutage... viele Frameworks veröffentlicht... es ist wirklich schwer zu entscheiden, welches besser zu lernen ist? Welches ist einfach zu lernen? Angular/React oder Vue? Jede Empfehlung wäre großartig..
Hallo!
Sie haben gerade die ewige Frage gestellt! Ich denke, es hängt wirklich von Ihren Bedürfnissen ab, und der erste Abschnitt des Artikels versucht, das ein wenig zu beantworten. Aber dennoch würde ich sagen, wenn Sie nach einem vollständigen MVC suchen, ist Angular 2 eine wirklich gute Wahl (Vue und React sind nur die View-Schicht). Wenn Sie etwas mit einer herausragenden Community suchen, ist React fantastisch. Und wenn Sie etwas mit viel Leistung suchen, das aber in seiner Lesbarkeit und Einfachheit elegant ist, ist Vue ziemlich unglaublich. Dennoch wird Ihnen jeder eine andere Antwort auf diese Frage geben, daher ist es gut, Todo.mvc zu überprüfen, das jedes einzeln im Code vergleicht, oder jedes ein wenig auszuprobieren, bevor Sie die Produktionsinvestition tätigen. Hoffe, das hilft!
Wow, cool
Tolle Vorstellung des geliebten Vue.js, weitermachen, bitte...
Danke! Mehr morgen! Und jeden Tag diese Woche :)
Großartig! Besonders freue ich mich auf den Artikel über Animationen. Cool!
Hallo Sarah, welche Projekte hast du mit Vue gebaut? Könntest du ein paar Links angeben? Danke!
Ich freue mich auf deinen nächsten Beitrag.
Hey Lars!
Ich habe ein paar Beispiel-Repos auf meinem GitHub-Profil, die wir für Beispiele in nachfolgenden Beiträgen verwenden werden und die mehr Details zu realen Build-Prozessen liefern werden.
https://github.com/sdras/vue-wine-label
https://github.com/sdras/vue-weather-notifier
Alle meine anderen Arbeiten mit Vue sind proprietär und können nicht veröffentlicht werden, daher hoffe ich, dass diese Beispiele und andere Beiträge hilfreich sind.
Ich mag den pragmatischen Ansatz von Vue sehr – sehr einfach zu starten und mit anderen Bibliotheken und Werkzeugen zu verbinden, und das alles, ohne übermäßig vorschreibend zu sein. Das macht es einfach, Vue zu bestehenden Projekten hinzuzufügen, ohne dass größere Code-Überarbeitungen erforderlich sind.
Ich stimme zu!
Tolle Einführung! Sie war sehr hilfreich. In Ihrem Hue-Saturation-Beispiel konnten Sie auf Ihr 'x' zugreifen, indem Sie es einfach in ein Template-Literal ${x} statt in das Schnabel-Muster {{ }} einfügen. Liegt das daran, dass die :bind-Methode automatisch Zugriff auf alle Elemente innerhalb der data-Funktion erhält?
Bei Ihrem Codebeispiel für die Ereignisbehandlung fehlt eine '}' zum Schließen des Methodenobjekts.
Danke
Hallo Alex!
Ich freue mich, dass Sie es hilfreich fanden. Ja, genau, das :style-Attribut, das ich verwendet habe, war die Kurzform für v-bind, daher konnte ich auf den Status zugreifen. Sie können dies überprüfen, indem Sie einfach :style in style ändern, und der hsla-Hintergrund funktioniert nicht mehr. Danke, dass Sie meinen Tippfehler entdeckt haben! Behoben.
Wirklich exzellente Einführung! Für Leute, die Spanisch lieben und sprechen, habe ich einen ähnlichen Beitrag auf https://www.jaimeolmo.com/2016/02/primeros-pasos-usando-vue-js/ geschrieben.
Prost!
Sehr schön. Danke!
Ist Vue für Multi-Page-Apps (sagen wir 10 Seiten/Tabs) mit 5-15 Komponenten pro Seite geeignet? Wächst die Komplexität exponentiell?
Ja, das tut es! Wir fangen hier klein an, um die Klarheit zu wahren. In zukünftigen Artikeln werden wir tatsächliche Builds mit einigen Beispielen sowie Vuex für komplexeres State-Management besprechen.
Das ist mein erstes Framework und Vue sieht viel einfacher zu lernen aus als React und Angular.
Eine Frage zu eventhandler @mousemove? Warum erwähnt die Vue-Dokumentation nichts darüber? :( Ich suche schon seit einer Weile danach...
Gute Arbeit übrigens, ich warte auf den Rest ^^
Hallo Can – zu @mousemove, grundsätzlich können Sie mit Vue-Events jeden Vanilla-JavaScript-DOM-Ereignisnamen verwenden, sodass alle üblichen funktionieren, solange Sie 'on' durch '@' ersetzen.
z.B. onmousemove -> @mousemove
onkeydown -> @keydown
onblur -> @blur
und so weiter...
Heiliger Bimbam, sagen Sie nicht, dass wir jede JS-Ereignisbehandlung mit @ verwenden können? xD Bin verwirrt QQ
Danke, genau wie Sie es geschrieben haben
toller Artikel :)
Ich bin beim Migrieren einer Anwendung von Angular 1 wirklich auf den Vue-Zug aufgesprungen – aber Angular 2 passte nicht wirklich zu meinem [bestehenden] Workflow. Es gab etwas Attraktives an der einfachen Lernbarkeit von Vue sowie an seinem „Best-of-both-worlds“-Ansatz. Ich drücke ihm die Daumen, daher bin ich begeistert, zu sehen, wie Sie das Auge Saurons von CSS-Tricks in diese Richtung lenken.
Das klingt super bedrohlich, aber tun wir so, als wäre das Licht von Saurons Auge warm und tröstend.
Danke für den tollen Artikel. Und es scheint auch ein Tippfehler in der Zeichenkette `@mousemove.prevent this is like e.preventDelegation()` zu geben.
Muss wahrscheinlich `preventDefault` heißen?
haha oh, Entschuldigung für den Tippfehler, er ist jetzt behoben, danke!
Beste Einführung in Vue.js, die ich bisher gelesen habe. Sehr, sehr gut. Danke!
Hallo Sarah,
Sie haben etwas zu demonstrieren im Teil über Ereignisse vergessen.
Wie man benutzerdefinierte Events auf eigenständigen Custom Components erstellt
Die
1. this.$emit(‘custom-name-of-event’, data)
2. this.$dispatch(‘custom-name-of-event’, data)
3. this.$broadcast(‘custom-name-of-event’, data)
Schöner Artikel!
Ausgezeichneter Punkt! Das würde wahrscheinlich in den Abschnitt gehören, wenn wir zu echten Komponenten in Abschnitt 3 wechseln, aber Sie haben absolut Recht, ich habe es versäumt, das zu behandeln. Nachdem ich die Reihe abgeschlossen habe, werde ich eine Überarbeitung vornehmen und es einbeziehen. Danke, dass Sie mich daran erinnert haben.
Hallo Sarah, es scheint, dass Sie mit Vue und Angular ein wenig gearbeitet haben. Ich würde gerne Ihre Meinung dazu hören, ob Vue.js für große Anwendungen ideal ist (Kontext: eine Anwendung mit Java im Backend und der Anforderung von Aufrufen/Anfragen an RESTful API-Dienste)
Ich denke, es ist großartig für große Anwendungen, insbesondere weil es „auf den Schultern“ anderer Alternativen wie Angular und React stand, wie die Einbeziehung von Vuex, das eine Redux-ähnliche State-Management-Bibliothek bietet, die meiner Meinung nach für die Verwaltung einer Anwendung mit viel Zustand ziemlich wichtig ist.
Bezüglich $broadcast, $dispatch – ich glaube, sie wurden in Vue2 als veraltet erklärt.
https://github.com/vuejs/vue/issues/2873
Dies ist eine großartige Einführung in Vue.js. Es ist seltsam, dass Vue nicht so viel Aufmerksamkeit erhält wie React oder Angular, wahrscheinlich weil es nicht von den beiden Internetriesen unterstützt wird. Ich würde argumentieren, dass Vue eine viel bessere Alternative zu React bietet, wenn man von Backbone-Apps migriert.