Heim >Web-Frontend >js-Tutorial >Erste Schritte mit Unscore.js
Dieser Artikel wurde von Agbonghama Collins und Ryan Chenkie geprüft. Vielen Dank an alle Peer -Rezensenten von SitePoint, die SitePoint -Inhalte so gut wie möglich gemacht haben!
Unscore.js ist eine JavaScript -Bibliothek, die von Jeremy Ashkenas verfasst wurde und die eine Vielzahl von Anwendungsfällen für funktionale Dienstprogramme bietet, auf die wir als Entwickler bei einem Webprojekt stoßen können.
_.isEmpty({}); // trueEs ist Code, das leichter zu lesen ist:
_.flatten([[0, 1], [2, 3], [4, 5]]); // [0, 1, 2, 3, 4, 5]es macht Code, das einfacher zu schreiben ist:
_.range(5); // [0, 1, 2, 3, 4]Es bietet Funktionen, für die es keine 1: 1 -native Methode gibt:
_.template('<p><%= text %></p>', {text: 'SitePoint Rocks!'}); // <p>SitePoint Rocks!</p>Es kann sogar als Vorlagenmotor für sich genommen verwendet werden:
Die guten Teile
Ich werde erklären, wie sie einzeln verwendet werden, und binden Sie sie dann zusammen, um eine Demo -Anwendung zu erstellen, die Sie am Ende des Tutorials finden können. Wie immer ist der Code für diese Demo auf Github verfügbar.
<span><span><span><script</span> src<span>="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"</span>></span><span><span></script</span>></span> </span>Wenn Sie den Beispielen folgen möchten, müssen Sie eine Kopie der Bibliothek abrufen, z. B. von Ihrem Lieblings -CDN:
_. Jeweils: Schreiben Sie lesbare Schleifen
var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones']; for(var i = 0; i < artists.length; i++) { console.log('artist: ' + artists[i]); }Es gibt kein einzelnes Projekt, das diesem Snippet irgendwann im Code nichts ähnelt:
Unterstrich ermöglicht es Ihnen, gleichwertige Code mit einer Syntax zu schreiben, die lesbarer ist:
_.isEmpty({}); // true
ordentlich, was? _.each () nimmt zwei Parameter:
für jedes Element in unserem Array _.each () wird die Rückruffunktion aufgerufen (in der Dokumentation als iTeratee bezeichnet). Innerhalb des Rückrufs erhalten wir Zugriff auf weitere drei Parameter:
Wie Sie sehen können, ist der Code lesbarer und wir können auf die einzelnen Elemente im Array zugreifen, ohne dass Künstler [i] erforderlich sind, wie wir in dem Beispiel gesehen haben, dass eine für Schleife verwendet wurde.
Siehe den Stift _.each von sitepoint (@sitepoint) auf CodePen.
Als nächstes werden wir sehen, wie sich der Vorlagenmotor verhält.
Seit dem Anstieg der einzelnen Seitenanwendung ist eine zuverlässige Frontend -Templating -Engine zu einem grundlegenden Bedarf an unserem Arbeitsstapel geworden.
Unterstrich liefert einen Vorlagenmotor, der für diejenigen, die mit Sprachen wie PHP oder Ruby on Rails vertraut sind, ziemlich vertraut erscheinen.
Aus unserem vorherigen Snippet werden wir demonstrieren, wie _.template () funktioniert. Wir werden dies tun, indem wir unserem Code ein paar Zeilen hinzufügen, wie unten gezeigt:
_.flatten([[0, 1], [2, 3], [4, 5]]); // [0, 1, 2, 3, 4, 5]
Hier rufen wir die Funktion _.Template () mit einem String -Argument auf, das einige Daten in Grenzwerten enthält (). Wenn _.template () auf diese Weise aufgerufen wird, gibt wir eine Funktion zurück, die wir immer wieder verwenden können.
Wir können unsere neue Funktion mit ArtistTemplate () aufrufen und sie als Argument ein Objektliteral übergeben. Dadurch wird die Zeichenfolge zurückgegeben, die wir ursprünglich an _.template () übergeben haben, um alle Objekteigenschaften zu ersetzen, die den freien Variablen der Vorlage entsprechen. In unserem Fall wird durch den Wert im Künstlerattribut des Objekts ersetzt.
Die Templating -Engine vonUnderscore erlaubt nicht nur, dass einzelne Werte ersetzt werden, sondern auch die Ausführung von Skripten in der Vorlage selbst. Mit einer einzigen Modifikation können wir unseren Snippet noch leistungsfähiger machen.
_.range(5); // [0, 1, 2, 3, 4]
Wir haben unseren Anruf zu _.each () in die Zeichenfolge aufgenommen, die unsere Vorlage darstellt, die uns dazu bringt, die Art und Weise zu ändern, wie die Vorlage aufgerufen wird. Da wir jetzt in der Funktion _.template () iterieren, können wir das vollständige Künstler -Array an ArtistTemplate () übergeben (zuvor haben wir die einzelnen Künstler übergeben). Die Ausgabe dieses Codes ist der gleiche wie im vorherigen Beispiel.
Wenn wir JavaScript -Code bewerten möchten, müssen wir unseren Code nur zwischen statt .
umgeben.Da das von _.Template generierte Vorlage aufgerufen wird, können wir unseren Snippet noch einen Schritt weiter gehen und eine Vorlage von innen aufrufen, indem wir die -Tags verwenden. Auf diese Weise können wir wiederverwendbare Vorlagen vornehmen, da wir eine andere Wrapper -Vorlage für unsere Künstlerliste haben und einfach die Vorlage für jedes der enthält Elemente aufrufen können.
Siehe den Stift _.template () von sitepoint (@sinepoint) auf CodePen.
Schauen wir uns schließlich die Funktion _.Filter () an.
_. Filter () empfängt ein Array und eine Rückruffunktion als Argumente. Anschließend wird die Funktion für jedes der Elemente im Array aufgerufen und ein neues Array zurückgegeben, das die Elemente enthält, für die die Funktion auf etwas Wahres bewertet wurde.
Unsere Rückruffunktion erhält auch drei Argumente, wie im Fall _.each (): das Element im Array, das dem aktuellen Iterationsindex, dem Index der Iteration und dem Array selbst entspricht.
Um dies zu klären, nehmen wir ein paar Änderungen an unserem Snippet vor.
_.isEmpty({}); // true
Wie Sie vielleicht vermutet haben, erhalten wir in unserer Vorlage ['ACDC'] als Array -Argument. Hier ist eine Demo von dem, was wir bisher haben.
Siehe den Stift _.Filter () von sitepoint (@sinepoint) auf CodePen.
genug gesagt. Lassen Sie uns die Dinge für etwas zum Laufen bringen, das etwas mehr Sinn macht.
Vergessen Sie nicht, der Code für diese Demo ist auf GitHub verfügbar.
Wir erstellen eine kleine Anwendung, die eine API verbraucht, die erhaltenen Informationen anzeigt und es dem Benutzer ermöglicht, das zu filtern, was gezeigt wird. Zu diesem Zweck werden wir:
verwendenInsbesondere wird die Anwendung einige Künstlerinformationen von Spotify und unter Verwendung von Unterscore _.Template, _.each und _.Filter abgerufen.
Um dies zu tun, werden wir unseren Code in drei verschiedene Module teilen:
Alle von ihnen folgen dem Modulmuster.
Das Konfigurationsmodul enthält die IDs der zu verwendenden Vorlagen zusammen mit der URL der API, die wir abfragen werden, sowie die IDs der Künstler, die wir von Spotify erhalten möchten. Auf diese Weise können wir mehr Künstler hinzufügen, indem wir dem Array nur weitere Elemente hinzufügen.
Dieses Modul ist das für das Kompilieren der Vorlagen verantwortlich, indem GetTemplates () im Konfigurationsmodul aufgerufen wird.
Dieses Modul ist für das Senden der AJAX -Anforderung an die URL verantwortlich, die wir aus dem Konfigurationsmodul erhalten, und den Inhalt mit den Vorlagen aus dem Vorlagenmodul zu rendern.
Abgesehen davon kümmert sich dieses Modul auch um das Filtern der Elemente basierend auf dem vom Benutzer geklickten Filter.
Beide Filter und unsere Vorlagen sind Teil des HTML.
Um die Filterung zu implementieren, werden wir uns auf HTML 5 -Datenattribute und die Datenschnittstelle von JQuery verlassen. Dies ist eher eine Frage der Bequemlichkeit, aber wenn Sie dies nativ tun möchten, ist die Browserunterstützung sehr gut.
Dies ist das Markup der Schaltflächen, mit denen wir die Filterung durchführen:
_.isEmpty({}); // true
Dies ist ein Beispiel für ein Objekt, das wir an unsere Filterfunktion weitergeben:
_.flatten([[0, 1], [2, 3], [4, 5]]); // [0, 1, 2, 3, 4, 5]
wir haben die HTML für unsere Vorlagen als Teil unseres Index.html in einem
Wir haben zwei Vorlagen. Die erste enthält die Liste der Künstler, während der zweite die einzelnen Künstler enthalten, die angezeigt werden sollen. Wie wir oben gesehen haben, werden wir das verwenden, was wir eingebettete Vorlagen nennen. Wir rufen eine Vorlage ('item-tPl') von einem anderen ('Item-List') an.
.Am Ende der Datei werden wir unsere Bibliotheken und unsere drei Skripte einbeziehen. Um es visuell ansprechender zu machen, haben wir einige grundlegende Stile im Kopf.
Und das war's.
Siehe den Stift unterstreicht die Großartigkeit von SitePoint (@sinepoint) auf CodePen.
Undercore ist eine Freude, mit der Sie arbeiten können, und wie ich gezeigt habe, können Sie saubere, lesbare und leicht zu machende Code schreiben.
Es gibt ein paar weitere Dinge, die wir unserer Anwendung hätten hinzufügen können (z. B. unsere Filter dynamisch mit _.pluck () generiert haben), aber ich denke, wir haben genug, um loszulegen.
wie wäre es mit dir? Haben Sie mit Underscore gearbeitet? Würdest du bereit sein, einen Versuch zu probieren? Haben Sie eine Alternative (d. H. Lodash) ausprobiert, die ähnliche Fähigkeiten bietet? Lassen Sie mich in den Kommentaren unten wissen.
1. _.Filter: Diese Funktion gibt ein neues Array mit allen Elementen zurück, die einen Wahrheitstest bestehen.
Kann ich zur Entwicklung von unterstrichen.js? Jeder kann zu seiner Entwicklung beitragen. Sie können Fehlerberichte einreichen, neue Funktionen vorschlagen oder sogar Code beisteuern. Die offizielle Website bietet umfassende Dokumentation, und es gibt zahlreiche Tutorials und Artikel online. Darüber hinaus gibt es mehrere Bücher und Online -Kurse, die unterstreichen.
Das obige ist der detaillierte Inhalt vonErste Schritte mit Unscore.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!