Der Umstieg von jQuery auf Vue

Avatar of Raymond Camden
Raymond Camden am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Als jemand, der jQuery seit *vielen* Jahren verwendet hat und kürzlich zu Vue konvertiert ist, dachte ich, es wäre ein interessantes Thema, den Migrationsprozess von der Arbeit mit dem einen zum anderen zu diskutieren.

Bevor ich beginne, möchte ich eines ganz klarstellen: Ich sage niemandem, er solle aufhören, jQuery zu verwenden. Das ist in letzter Zeit ziemlich angesagt, und ehrlich gesagt, habe ich vor ein paar Jahren selbst etwas Ähnliches geschrieben („Wie ich jQuery (nicht) benutze“). Wenn Sie mit jQuery Dinge erledigen und Ihre Endbenutzer Ihre Website erfolgreich nutzen, dann umso besser für Sie. Verwenden Sie weiter, was für Sie funktioniert.

Diese Anleitung richtet sich eher an Leute, die jahrelange Erfahrung mit jQuery haben und sehen möchten, wie Dinge mit Vue erledigt werden können. In diesem Sinne werde ich mich auf das konzentrieren, was ich als „Kernanwendungsfälle“ von jQuery betrachte. Ich werde nicht jede einzelne mögliche Funktion abdecken, sondern stattdessen einen Ansatz verfolgen: „Ich habe [X] oft mit jQuery gemacht“, der für Leute, die erwägen, Vue zu lernen, nachvollziehbarer sein könnte. (Nebenbei bemerkt: Wie ich meine Beispiele schreibe, ist nur *eine* Methode, eine Aufgabe auszuführen. Sowohl jQuery als auch Vue bieten mehrere Möglichkeiten, dasselbe Ziel zu erreichen, und das ist großartig!)

In diesem Sinne betrachten wir einige übergeordnete Dinge, zu denen wir uns möglicherweise an jQuery wenden würden

  • Etwas im DOM finden (mit der Idee, später etwas damit zu tun)
  • Etwas im DOM ändern (z. B. den Text eines Absatzes oder die Klasse eines Buttons)
  • Formularwerte lesen und setzen
  • Formularvalidierung (was im Grunde eine Kombination der obigen Punkte ist)
  • Ajax-Aufrufe und Verarbeitung der Ergebnisse
  • Ereignisbehandlung (z. B. bei Button-Klick etwas tun)
  • Stile eines Elements messen oder ändern

jQuery kann natürlich noch mehr, aber diese Anwendungen decken (zumindest meiner Meinung nach) die häufigsten Anwendungsfälle ab. Beachten Sie auch, dass es in der obigen Liste viele Überschneidungen gibt. Sollen wir also mit einem einfachen Eins-zu-eins-Vergleich beginnen? Nein, nicht so schnell. Beginnen wir mit den Hauptunterschieden in Vue-Anwendungen.

Definieren, wo Vue „funktioniert“

Wenn wir jQuery auf eine Seite einbinden, fügen wir im Grunde ein Schweizer Taschenmesser zu unserem JavaScript-Code hinzu, um gängige Webentwicklungsaufgaben zu bewältigen. Wir können jede der Anwendungsfälle, die wir behandeln werden, in jeder Reihenfolge ausführen, wie wir es für richtig halten. Zum Beispiel kann ein Kunde heute eine Formularvalidierung verlangen und in einem Monat eine Ajax-basierte Suchformular im Header der Website.

Vue hat in dieser Hinsicht einen signifikanten Unterschied. Wenn wir mit einem Vue-Projekt beginnen, definieren wir zunächst einen „Bereich“ im DOM, auf den es sich konzentrieren soll. Betrachten wir also eine einfache Prototyp-Webseite

<body>

  <header>
    Fancy header stuff here
  </header>

  <div id="sidebar">
    Some sidebar doohicky here
  </div>

  <main>
    <p>
      Main site content here, super important stuff...
    </p>
    <div id="loginForm">
      A login form of course
    </div>
  </main>

</body>

In einer typischen jQuery-Anwendung schreiben wir vielleicht Code, der mit dem Header, der Seitenleiste und dem Anmeldeformular oder Ähnlichem arbeitet. Kein großer Aufwand

$(document).ready(function() {

  $('header') // something...

  $('#sidebar') // something...

  $('#loginForm') // something... 

});

In einer Vue-Anwendung geben wir zuerst an, mit welchem Bereich wir arbeiten. Stellen Sie sich vor, der Kunde hätte zuerst verlangt, dem loginForm-Element eine Validierung hinzuzufügen. Unser Vue-Code würde dies angeben

new Vue({
  el: '#loginForm',
  // Code here...
});

Das bedeutet, dass wir typischerweise eine *zweite* Vue-Anwendung hinzufügen würden, wenn der Kunde später entscheidet, etwas zur Seitenleiste hinzuzufügen

new Vue({
  el:'#loginForm',
  // Code here...
});

new Vue({
  el:'#sideBar',
  // Code here...
});

Ist das schlimm? Überhaupt nicht. Sofort erhalten wir den Vorteil der Kapselung. Wenn wir versehentlich eine Variable mit einem generischen Namen verwenden (das haben wir alle schon getan), müssen wir uns keine Sorgen über Konflikte mit anderen Teilen Ihres Codes machen. Später, wenn der Kunde eine weitere Anfrage hinzufügt, gibt uns die Trennung unserer eindeutigen, logischen Vue-Code-Sätze ein gutes Gefühl, dass sich die Dinge nicht gegenseitig behindern werden.

Also ja, eine gute Sache. Aber es hat mich absolut innehalten lassen, als ich Vue zum ersten Mal benutzte. Nun zu unseren Anwendungsfällen.

Dinge im DOM finden

Ein weiterer Aspekt, den Sie interessant oder beängstigend finden werden, ist, wie man „Dinge im DOM findet“. Das ist etwas vage, aber betrachten wir ein konkretes Beispiel. Wir haben einen Button, und wenn er geklickt wird, tun wir etwas. Hier ist ein verkürztes Beispiel, wie das aussehen könnte

<button id="myButton">Click Me!</button>
<!-- More stuff... -->
<script>
$(document).ready(function() {

  $('#myButton').click(function() {
    alert(1);
  });

});
</script>

Vergleichen wir das nun damit, wie es mit Vue gemacht werden kann

<div id="app">
  <button v-on:click="doSomething">Click Me!</button>
</div>

<script>
const app = new Vue({
  el:'#app',
  methods: {
    doSomething: function() {
      alert(1);
    }
  }
});
</script>

Die Vue-Anwendung ist etwas ausführlicher, aber beachten Sie, wie die Markup einen direkten Zusammenhang zwischen der Aktion („click“) und der Funktion, die aufgerufen wird, hat. Der Vue-Code hat keine Bindung zurück zum DOM (außer dem el-Teil, wo wir definieren, wo er funktionieren soll). Dies war leicht eines der Dinge, die mich am meisten von Vue überzeugt haben – **es fühlt sich einfacher an zu verstehen, was passiert.** Außerdem musste ich mich nicht so sehr um die ID-Werte und Selektoren kümmern. Wenn ich die Klasse oder ID des Buttons ändere, muss ich nicht zurück in meinen Code gehen und mich darum kümmern, Selektoren zu aktualisieren.

Betrachten wir ein weiteres Beispiel: Text im DOM finden und ändern. Stellen Sie sich vor, der Button ändert nach dem Klicken den Text eines anderen Teils des DOM.

<button id="myButton">Click Me!</button>
<span id="result"></span>

<!-- More stuff... -->

<script>
$(document).ready(function() {

  $('#myButton').click(function() {
    $('#result').text('You clicked me, thanks!');
  });

});
</script>

Ich habe einen neuen Span hinzugefügt und jetzt verwenden wir beim Klicken auf den Button einen weiteren Selektor, um ihn zu finden, und eine jQuery-Hilfsmethode, um den Text darin zu ändern. Betrachten wir nun die Vue-Version

<div id="app">
  <button v-on:click="doSomething">Click Me!</button>
  <!-- On click, change text in this span -->
  <span>{{resultText}}</span>
</div>

<script>
const app = new Vue({
  el: '#app',
  data: {
    resultText: ''
  },
  methods: {
    doSomething: function() {
      this.resultText = 'You clicked me, thanks!';
    }
  }
});
</script>

In diesem Beispiel verwenden wir die Vorlagensprache von Vue (die hervorgehobene Zeile), um anzugeben, dass wir eine Variable innerhalb des Spans rendern möchten, in diesem Fall resultText. Wenn nun der Button geklickt wird, ändern wir diesen Wert, und der innere Text des Spans wird automatisch geändert.

Nebenbei bemerkt: Vue unterstützt eine Kurzform für das Attribut v-on, sodass der Button im Beispiel auch mit @click="doSomething" geschrieben werden könnte.

Formularvariablen lesen und schreiben

Die Arbeit mit Formularen ist wahrscheinlich eines der häufigsten – und nützlichsten – Dinge, die wir mit JavaScript tun können. Schon vor JavaScript war der Großteil meiner frühen „Webentwicklung“ das Schreiben von Perl-Skripten zur Verarbeitung von Formularübermittlungen. Als primärer Weg zur Annahme von Benutzereingaben waren Formulare schon immer entscheidend für das Web, und das wird wahrscheinlich noch eine Weile so bleiben. Betrachten wir ein einfaches jQuery-Beispiel zum Lesen einiger Formularfelder und zum Setzen eines anderen

<form>
  <input type="number" id="first"> + 
  <input type="number" id="second"> =
  <input type="number" id="sum"> 
  <button id="sumButton">Sum</button>
</form>

<script>
$(document).ready(function() {
  let $first = $('#first');
  let $second = $('#second');
  let $sum = $('#sum');
  let $button = $('#sumButton');
  
  $button.on('click', function(e) {
    e.preventDefault();
    let total = parseInt($first.val(),10) + parseInt($second.val(),10);
    $sum.val(total);
  });
});
</script>

Dieser Code demonstriert, wie jQuery sowohl lesen als auch schreiben kann, über die val()-Methode. Wir holen uns vier Elemente aus dem DOM (alle drei Formularfelder und den Button) und verwenden einfache Mathematik, um ein Ergebnis zu generieren. Betrachten wir nun die Vue-Version

<form id="myForm">
  <input type="number" v-model.number="first"> + 
  <input type="number" v-model.number="second"> =
  <input type="number" v-model="sum"> 
  <button @click.prevent="doSum">Sum</button>
</form>

<script>
new Vue({
  el: '#myForm',
  data: {
    first: 0,
    second: 0,
    sum: 0
  },
  methods: {
    doSum: function() {
      this.sum = this.first + this.second;
    }
  }
})
</script>

Dies führt einige interessante Vue-Abkürzungen ein. Erstens ist v-model die Art und Weise, wie Vue eine bidirektionale Datenbindung zwischen Werten im DOM und in JavaScript erstellt. Die Variablen im data-Block werden automatisch mit den Formularfeldern synchronisiert. Ändern Sie die Daten, und das Formular aktualisiert sich. Ändern Sie das Formular, und die Daten aktualisieren sich. .number ist ein Flag für Vue, um die standardmäßigen Zeichenfolgenwerte von Formularfeldern als Zahlen zu behandeln. Wenn wir dies weglassen und Additionen wie hier durchführen, sehen wir Zeichenfolgenadditionen und keine Arithmetik. Ich arbeite seit fast einem Jahrhundert mit JavaScript und mache das immer noch falsch.

Ein weiterer netter „Trick“ ist @click.prevent. Zuerst definiert @click einen Click-Handler für den Button, dann verhindert der Teil .prevent das Standardverhalten des Browsers beim Absenden des Formulars (entspricht event.preventDefault()).

Der letzte Teil ist die Hinzufügung der Methode doSum, die an diesen Button gebunden ist. Beachten Sie, dass sie einfach mit den Datenvariablen arbeitet (die Vue im this-Scope verfügbar macht).

Auch wenn dies größtenteils mein persönliches Gefühl ist, liebe ich die fehlenden Query-Selektoren im Skript, wenn ich in Vue schreibe, und wie der HTML viel klarer darüber ist, was er tut.

Schließlich könnten wir den Button sogar ganz weglassen

<form id="myForm">
  <input type="number" v-model.number="first"> + 
  <input type="number" v-model.number="second"> =
  <input type="number" v-model="sum"> 
</form>

<script>
new Vue({
  el: '#myForm',
  data: {
    first: 0,
    second: 0
  },
  computed: {
    sum: function() {
      return this.first + this.second;
    }
  }
})
</script>

Eine der cooleren Funktionen von Vue sind berechnete Eigenschaften (computed properties). Das sind virtuelle Werte, die erkennen, wenn ihre abgeleiteten Werte aktualisiert werden. Im obigen Code wird die Summe aktualisiert, sobald sich eines der beiden Formularfelder ändert. Dies funktioniert auch außerhalb von Formularfeldern. Wir könnten die Summe wie folgt rendern

The total is {{sum}}.

Arbeiten mit Ajax

Es ist lobenswert, wie einfach jQuery die Verwendung von Ajax gemacht hat. Tatsächlich kann ich sagen, dass ich Ajax „auf die reine“ Art wahrscheinlich nur ein einziges Mal gemacht habe. (Wenn Sie neugierig sind, können Sie sich die Spezifikation für XMLHttpRequest ansehen und wahrscheinlich froh sein, dass Sie es vermieden haben.) jQuerys einfache $.get(...)-Methode funktionierte in einer großen Anzahl von Fällen, und wenn etwas Komplexeres benötigt wurde, machte $.ajax() es ebenfalls einfach. Eine weitere Sache, die jQuery gut konnte, war die Art und Weise, wie es JSONP-Anfragen verarbeitet. Obwohl heute meist unnötig mit CORS, war JSONP ein Weg, Anfragen an APIs auf verschiedenen Domains zu stellen.

Was macht Vue also, um Ajax einfacher zu machen? Nichts!

Okay, das klingt beängstigend, ist es aber eigentlich nicht. Es gibt viele Optionen für die Arbeit mit HTTP-Anfragen, und Vue.js hat einen agnostischeren Weg gewählt, indem es uns Entwicklern überlässt, wie wir damit umgehen wollen. Ja, das bedeutet etwas mehr Arbeit, aber wir haben einige großartige Optionen.

Die erste, die man in Betracht ziehen sollte, ist Axios. Dies ist eine Promise-basierte Bibliothek, die in der Vue-Community sehr beliebt ist. Hier ist ein einfaches Beispiel in Aktion (aus ihrer README-Datei entnommen)

axios.get('/user?ID=12345')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

Axios unterstützt natürlich POST-Anfragen und ermöglicht uns die Angabe von Headern unter vielen anderen Optionen.

Obwohl Axios bei Vue-Entwicklern sehr beliebt ist, hat es mich nicht wirklich angesprochen. (Zumindest noch nicht.) Stattdessen war ich viel mehr ein Fan von Fetch. Fetch ist *keine* externe Bibliothek, sondern eine standardmäßige Web-Methode zur Durchführung von HTTP-Anfragen. Fetch hat eine sehr gute Unterstützung in etwa 90% der Browser, was jedoch bedeutet, dass es nicht *vollständig* sicher zu verwenden ist, aber wir können bei Bedarf immer ein Polyfill verwenden.

Obwohl dies vollständig außerhalb des Rahmens dessen liegt, was wir hier besprechen, hat Kingsley Silas einen ausgezeichneten Leitfaden zur Verwendung von Axios und Fetch mit React geschrieben.

Wie Axios ist Fetch Promise-basiert und hat eine benutzerfreundliche API

fetch('http://example.com/movies.json')
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(JSON.stringify(myJson));
  });

Sowohl Axios als auch Fetch decken alle Arten von HTTP-Anfragen ab, sodass beide für eine beliebige Anzahl von Anforderungen geeignet sind. Betrachten wir einen einfachen Vergleich. Hier ist eine einfache jQuery-Demo, die die Star Wars API verwendet.

<h1>Star Wars Films</h1>
<ul id="films">
</ul>

<script>
$(document).ready(function() {
  $.get('https://swapi.com/api/films', function(res) {
    let list = '';
    res.results.forEach(function(r) {
      list += `<li>${r.title}</li>`;
    });
    $('#films').html(list);
  });
});
</script>

Im obigen Beispiel verwende ich $.get, um die API abzurufen und eine Liste von Filmen zurückzugeben. Dann generiere ich eine Liste von Titeln als li-Tag-Elemente mit diesen Daten und füge alles in einen ul-Block ein.

Betrachten wir nun ein Beispiel dafür mit Vue

<div id="app">
  <h1>Star Wars Films</h1>
  <ul>
    <li v-for="film in films">{{film.title}}</li>
  </ul>  
</div>

<script>
const app = new Vue({
  el: '#app',
  data: {
    films: []
  }, 
  created() { 
    fetch('https://swapi.com/api/films')
    .then(res => res.json())
    .then(res => {
      this.films = res.results;  
    });
  }
})
</script>

Wahrscheinlich ist der beste Teil davon die Verwendung der v-for-Vorlage. Beachten Sie, wie Vue sich nicht um das Layout kümmert (naja, zumindest das JavaScript). Die Daten werden von der API abgerufen. Sie werden einer Variablen zugewiesen. Das Layout kümmert sich um die Anzeige. Ich habe es immer gehasst, HTML in meinem JavaScript zu haben, und obwohl es dafür Lösungen mit jQuery gibt, macht es die in Vue integrierte Natur zu einer natürlichen Passform.

Ein vollständiges (wenn auch etwas triviales) Beispiel

Um es auf den Punkt zu bringen, betrachten wir ein praxisnäheres Beispiel. Unser Kunde hat uns gebeten, eine ausgefallene Ajax-fähige Frontend-Suchoberfläche für eine Produkt-API zu erstellen. Die Feature-Liste umfasst

  • Unterstützung der Filterung nach Name und Produktkategorie
  • Formularvalidierung, so dass wir einen Suchbegriff oder eine Kategorie angeben müssen
  • Während die API abgefragt wird, zeigen Sie dem Benutzer eine Meldung an und deaktivieren Sie den Submit-Button
  • Behandeln Sie nach Abschluss die Meldung, dass keine Produkte angezeigt wurden, oder listen Sie die Treffer auf

Beginnen wir mit der jQuery-Version. Zuerst das HTML

<form>
  <p>
    <label for="search">Search</label>
    <input type="search" id="search">
  </p>
  <p>
    <label for="category">Category</label>
    <select id="category">
      <option></option>
      <option>Food</option>
      <option>Games</option>
    </select>
  </p> 
  <button id="searchBtn">Search</button>
</form>

<div id="status"></div>
<div id="results"></div>

Es gibt ein Formular mit unseren beiden Filtern und zwei Divs. Einer dient als temporärer Status beim Suchen oder Melden von Fehlern, und einer dient zum Rendern von Ergebnissen. Nun schauen wir uns den Code an.

const productAPI = 'https://wt-c2bde7d7dfc8623f121b0eb5a7102930-0.sandbox.auth0-extend.com/productSearch';

$(document).ready(() => {
  let $search = $('#search');
  let $category = $('#category');
  let $searchBtn = $('#searchBtn');
  let $status = $('#status');
  let $results = $('#results');
  
  $searchBtn.on('click', e => {
    e.preventDefault();
    
    // First clear previous stuff
    $status.html('');
    $results.html('');

    // OK, now validate form
    let term = $search.val();
    let category = $category.val();
    if(term === '' && category === '') {
      $status.html('You must enter a term or select a category.');
      return false;
    }

    $searchBtn.attr('disabled','disabled');
    $status.html('Searching - please stand by...');
    
    $.post(productAPI, { name:term, category:category }, body => {
      $searchBtn.removeAttr('disabled');
      $status.html('');

      if(body.results.length === 0) {
        $results.html('<p>Sorry, no results!</p>');
        return;
      }
      
      let result = '<ul>';
      body.results.forEach(r => {
        result += `<li>${r.name}</li>`
      });
      result += '</ul>';
      $results.html(result);
    });
    
  });
});

Der Code beginnt mit der Erstellung einer Reihe von Variablen für jedes der DOM-Elemente, mit denen wir arbeiten möchten – die Formularfelder, den Button und die Divs. Der Kern der Logik liegt im Klick-Handler für den Button. Wir führen die Validierung durch und, wenn alles in Ordnung ist, eine POST-Anfrage an die API. Wenn diese zurückkehrt, rendern wir entweder die Ergebnisse oder zeigen eine Meldung an, wenn nichts übereinstimmt.

Sie können eine vollständige Version dieser Demo über das untenstehende CodePen verwenden.

Siehe den Pen
jQuery Full
von Raymond Camden (@cfjedimaster)
auf CodePen.

Betrachten wir nun die Vue-Version. Beginnen wir wieder mit dem Layout

<div id="app">
  <form>
    <p>
      <label for="search">Search</label>
      <input type="search" v-model="search">
    </p>
    <p>
      <label for="category">Category</label>
      <select v-model="category">
        <option></option>
        <option>Food</option>
        <option>Games</option>
      </select>
    </p>
    <button @click.prevent="searchProducts" :disabled="searchBtnDisabled">Search</button>
  </form>

    <div v-html="status"></div>
    <ul v-if="results">
      <li v-for="result in results">{{result.name}}</li>
    </ul>
</div>

Von oben sind die Änderungen:

  • Umschließen des Layouts in einem Div, das verwendet werden kann, damit Vue weiß, wo es arbeiten soll.
  • Verwendung von v-model für die Formularfelder, um die Arbeit mit den Daten zu erleichtern.
  • Verwendung von @click.prevent zur Handhabung der Hauptsuchoperation.
  • Verwendung von :disabled, um zu binden, ob der Button deaktiviert ist oder nicht, an einen Wert in der Vue-Anwendung (das sehen wir gleich in Aktion).
  • Der Statuswert ist etwas anders als in früheren Beispielen. Während jQuery eine spezielle Methode zum Setzen von Text in einem DOM-Element und eine weitere für HTML hat, erfordert Vue die Verwendung von v-html, wenn HTML einem Wert zugewiesen wird, der gerendert werden soll. Wenn wir versuchen würden, {{status}} mit HTML zu verwenden, würden die Tags maskiert werden.
  • Schließlich die Verwendung von v-if zum bedingten Rendern einer Ergebnisliste zusammen mit v-for zur Handhabung der Iteration.

Schauen wir uns nun den Code an.

const productAPI = 'https://wt-c2bde7d7dfc8623f121b0eb5a7102930-0.sandbox.auth0-extend.com/productSearch';

const app = new Vue({
  el: '#app',
  data: {
    search: '',
    category: '',
    status: '',
    results: null,
    searchBtnDisabled: false
  },
  methods: {
    searchProducts:function() {
      this.results = null;
      this.status = '';
      
      if(this.search === '' && this.category === '') {
        this.status = 'You must enter a term or select a category.';
        return;
      }

      this.searchBtnDisabled = true;
      this.status = 'Searching - please stand by...';
      
      fetch(productAPI, {
        method: 'POST',
        headers: {
          'Content-Type':'application/json'
        },
        body: JSON.stringify({name:this.search,category:this.category})
      }).then(res => res.json())
      .then(res => {
        this.status = '';
        this.searchBtnDisabled = false;
        this.results = res.results;
        if(this.results.length === 0) this.status = '<p>Sorry, no results!</p>';
      });
      
    }
  }
});

Der erste Block, der hervorzuheben ist, ist die Menge der data-Felder. Einige entsprechen Formularfeldern, andere Ergebnissen, Statusmeldungen und Ähnlichem. Die Methode searchProducts erledigt vieles, was auch die jQuery-Version macht, aber im Allgemeinen gibt es viel weniger Code, der direkt an das DOM gebunden ist. Zum Beispiel macht sich der Code keine Gedanken über das Layout, obwohl wir wissen, dass die Ergebnisse in einer ungeordneten Liste aufgeführt sind. Er weist einfach den Wert zu und das Markup kümmert sich um das Rendern. Insgesamt ist der JavaScript-Code stärker auf die Logik ausgerichtet, im Vergleich zum jQuery-Code, der sich nach einer viel schöneren Trennung der Belange anfühlt.

Wie zuvor habe ich ein CodePen für Sie, um dies selbst auszuprobieren

Siehe den Pen
Vue Full
von Raymond Camden (@cfjedimaster)
auf CodePen.

Tod für jQuery! Lang lebe Vue!

Okay, das ist ein bisschen übertrieben. Wie ich anfangs sagte, bin ich absolut der Meinung, dass Sie nichts ändern sollten, wenn Sie gerne mit jQuery arbeiten und es für Sie funktioniert.

Ich kann jedoch sagen, dass sich Vue wie ein großartiger „nächster Schritt“ für Leute anfühlt, die an die Arbeit mit jQuery gewöhnt sind. Vue unterstützt komplexe Anwendungen und verfügt über ein großartiges Kommandozeilentool zum Erstellen und Bauen von Projekten. Aber für einfachere Aufgaben funktioniert Vue als großartiger „moderner jQuery“-Ersatz, der zu meinem Werkzeug der Wahl für die Entwicklung geworden ist!

Für eine andere Perspektive zur Verwendung von Vue anstelle von jQuery, lesen Sie Sarah Drasners „jQuery mit Vue.js ersetzen: Kein Build-Schritt notwendig“, da sie eine Reihe weiterer äußerst hilfreicher Beispiele enthält.