Überblick
Unscore.js ist eine sehr schlanke Bibliothek mit nur 4 KB -Komprimierung. Es bietet Dutzende funktioneller Programmiermethoden, die die JavaScript -Programmierung stark erleichtern. Das MVC Framework Backbone.js basiert auf dieser Bibliothek.
Es definiert ein Unterstrich (_) Objekt, und alle Methoden der Funktionsbibliothek gehören zu diesem Objekt. Diese Methoden können grob in fünf Kategorien unterteilt werden: Sammlung, Array, Funktion, Objekt und Nutzen.
Installieren Sie unter node.js
Unscore.js kann nicht nur in Browserumgebungen, sondern auch in Node.js. verwendet werden. Der Installationsbefehl lautet wie folgt:
Die Codekopie lautet wie folgt:
NPM Unterstrich installieren
Node.js kann _ jedoch nicht direkt als variabler Name verwendet werden, daher müssen Sie unterstrich.js mit der folgenden Methode verwenden.
Die Codekopie lautet wie folgt:
var u = fordern ("Unterstrich");
Methoden im Zusammenhang mit Sammlungen
Eine Datenerfassung der JavaScript -Sprache, einschließlich zweier Strukturen: Arrays und Objekte. Die folgende Methode gilt für beide Strukturen.
Karte
Diese Methode führt in jedem Mitglied der Sammlung nacheinander eine gewisse Operation durch und speichert die zurückgegebenen Werte nacheinander in ein neues Array.
Die Codekopie lautet wie folgt:
_.Map ([1, 2, 3], Funktion (num) {return num * 3;}); // [3, 6, 9] _.Map ({One: 1, zwei: 2, drei: 3}, Funktion (num, Schlüssel) {return num * 3;}); // [3, 6, 9]
Jede
Diese Methode ähnelt der MAP und führt eine Operation in jedem Mitglied des Sets in Sequenz durch, gibt jedoch keinen Wert zurück.
Die Codekopie lautet wie folgt:
_.each ([1, 2, 3], Alarm); _.each ({One: 1, zwei: 2, drei: 3}, Alarm);
Reduzieren
Diese Methode führt einen gewissen Betrieb in jedem Mitglied des Sets in Sequenz aus und sammelt dann die Betriebsergebnisse für einen bestimmten Anfangswert. Nach Abschluss aller Operationen wird der akkumulierte Wert zurückgegeben.
Diese Methode akzeptiert drei Parameter. Der erste Parameter ist der zu verarbeitende Satz, der zweite Parameter ist die Funktion, die in jedem Element arbeitet, und der dritte Parameter ist die Variable, die zum Ansammeln verwendet wird.
_.Reduce ([1, 2, 3], Funktion (Memo, num) {return memo + num;}, 0); // 6
Der zweite Parameter der Reduzierungsmethode ist die Betriebsfunktion, die selbst zwei Parameter akzeptiert. Die erste ist die Variable, die verwendet wird, um sich zu sammeln, und der zweite ist der Wert jedes Mitglieds des Satzes.
filtern und ablehnen
Die Filtermethode führt in jedem Mitglied der Sammlung nacheinander eine gewisse Operation durch und gibt nur Mitglieder zurück, deren Betriebsergebnis wahr ist.
Die Codekopie lautet wie folgt:
_.Filter ([1, 2, 3, 4, 5, 6], Funktion (num) {return num % 2 == 0;}); // [2, 4, 6]
Die Ablehnungsmethode gibt nur Mitglieder zurück, deren Betriebsergebnis falsch ist.
Die Codekopie lautet wie folgt:
_.Reject ([1, 2, 3, 4, 5, 6], Funktion (num) {return num % 2 == 0;}); // [1, 3, 5]
Alle und manche
Die jede Methode führt wiederum einen Betrieb auf jedem Mitglied der Sammlung durch. Wenn das Betriebsergebnis aller Mitglieder wahr ist, gibt es wahr zurück, andernfalls gibt es false zurück.
Die Codekopie lautet wie folgt:
_.Every ([1, 2, 3, 4, 5, 6], Funktion (num) {return num % 2 == 0;}); // FALSCH
Eine Methode gibt True zurück, solange das Betriebsergebnis eines Mitglieds vorhanden ist, ansonsten falsch.
Die Codekopie lautet wie folgt:
_.Some ([1, 2, 3, 4, 5, 6], Funktion (num) {return num % 2 == 0;}); // WAHR
Finden
Diese Methode führt einen gewissen Betrieb in jedem Mitglied des Sets in Sequenz aus und gibt das Mitglied zurück, dessen erstes Betriebsergebnis wahr ist. Wenn das Betriebsergebnis aller Mitglieder falsch ist, wird undefiniert zurückgegeben.
Die Codekopie lautet wie folgt:
_.Find ([1, 2, 3, 4, 5, 6], Funktion (num) {return num % 2 == 0;}); // 2
enthält
Wenn sich ein Wert innerhalb des Satzes befindet, gibt die Methode true zurück, andernfalls gibt sie false zurück.
Die Codekopie lautet wie folgt:
_.Contains ([1, 2, 3], 3); // WAHR
Countby
Diese Methode führt in jedem Mitglied des Sets in Sequenz einen gewissen Betrieb aus, zählt die Mitglieder mit demselben Betriebsergebnis wie einer Klasse und gibt schließlich ein Objekt zurück, wodurch die Anzahl der Mitgliedern angibt, die jedem Betriebsergebnis entsprechen.
Die Codekopie lautet wie folgt:
_.Countby ([1, 2, 3, 4, 5], Funktion (num) {return num % 2 == 0? 'SOF': 'ODD';}); // {ungerade: 3, sogar: 2}
Shuffle
Diese Methode gibt eine Sammlung ungeordneter Ordnung zurück.
Die Codekopie lautet wie folgt:
_. Shuffle ([1, 2, 3, 4, 5, 6]); // [4, 1, 6, 3, 5, 2]
Größe
Diese Methode gibt die Anzahl der Mitglieder der Sammlung zurück.
Die Codekopie lautet wie folgt:
_.size ({One: 1, zwei: 2, drei: 3}); // 3
Objektbezogene Methoden
toArray
Diese Methode wandelt das Objekt in ein Array um.
Die Codekopie lautet wie folgt:
_.toArray ({a: 0, b: 1, c: 2}); // [0, 1, 2]
zupfen
Diese Methode extrahiert den Wert einer Eigenschaft mehrerer Objekte in ein Array.
Die Codekopie lautet wie folgt:
var standes = [{name: 'moe', Alter: 40}, {name: 'Larry', Alter: 50}, {Name: 'Curly', Alter: 60}]; _.pluck (stooges, 'name'); // ["Moe", "Larry", "Curly"]
Methoden im Zusammenhang mit Funktionen
binden
Diese Methode bindet den Kontext der Funktionslaufzeit und kehrt als neue Funktion zurück.
Die Codekopie lautet wie folgt:
_.bind (Funktion, Objekt, [*Argumente])
Bitte beachten Sie das Beispiel unten.
Die Codekopie lautet wie folgt:
var o = {p: 2, m: function () {console.log (p);}}; om () // 2 _.bind (om, {p: 1}) () // 1
Bindall
Diese Methode bindet alle Methoden eines Objekts (sofern nicht anders angegeben) an dieses Objekt.
Die Codekopie lautet wie folgt:
var buttonView = {label: 'unterstrich', onclick: function () {alert ('klickte:' + this.label); }, onhover: function () {console.log ('schwebe:' + this.label); }}; _.Bindall (ButtonView);
teilweise
Diese Methodenbindung bindet eine Funktion an einen Parameter und kehrt als neue Funktion zurück.
Die Codekopie lautet wie folgt:
var add = function (a, b) {return a + b; }; add5 = _.Partial (add, 5); add5 (10); // 15
Memoisieren
Diese Methode zwischengespeichert die laufenden Ergebnisse einer Funktion für einen Parameter.
Die Codekopie lautet wie folgt:
var fibonacci = _.memoize (Funktion (n) {return n <2? n: fibonacci (n - 1) + fibonacci (n - 2);});
Wenn eine Funktion mehrere Parameter hat, muss eine Hashfunktion bereitgestellt werden, um einen Hash -Wert zu generieren, der den Cache identifiziert.
Verzögerung
Diese Methode kann die Funktion für eine bestimmte Zeit vor dem Ausführen verzögern.
Die Codekopie lautet wie folgt:
var log = _.bind (console.log, console); _.delay (log, 1000, 'später' protokolliert '); // 'später angemeldet'
verschieben
Diese Methode kann die Funktion verschieben, bis die Anzahl der zu ausgeführten Aufgaben vor dem Ausführen 0 beträgt, ähnlich wie bei SetTimeout die Ausführung um 0 Sekunden.
Die Codekopie lautet wie folgt:
_.Defer (function () {alert ('aufgeschoben');});
Gaspedal
Diese Methode gibt eine neue Version einer Funktion zurück. Wenn Sie diese neue Version der Funktion kontinuierlich aufrufen, müssen Sie einen bestimmten Zeitraum warten, bevor die nächste Ausführung ausgelöst wird.
Die Codekopie lautet wie folgt:
// Rückgabe die neue Version der UpdatePosition -Funktion var throttled = _. Throttle (UpdatePosition, 100); // Die neue Version der Funktion auslöst nur $ (Fenster) .Scroll (gedrosselt);
Entlarven
Diese Methode gibt auch eine neue Version einer Funktion zurück. Jedes Mal, wenn diese neue Version der Funktion aufgerufen wird, muss sie ein bestimmtes Zeitintervall aus dem letzten Anruf sein, andernfalls ist sie ungültig. Die typische Anwendung besteht darin, den Benutzer daran zu hindern, eine Taste zu doppelklicken, was zu zwei Formen-Einsendungen führt.
Die Codekopie lautet wie folgt:
$ ("Schaltfläche"). On ("Click", _.Debounce (Subleform, 1000));
einmal
Diese Methode gibt eine neue Version der Funktion zurück, damit die Funktion nur einmal ausgeführt werden kann. Hauptsächlich zur Objektinitialisierung verwendet.
Die Codekopie lautet wie folgt:
var initialize = _.once (createApplication); initialisieren(); initialisieren(); // Die Anwendung wird nur einmal erstellt
Nach
Diese Methode gibt eine neue Version der Funktion zurück, die erst nach einer bestimmten Anzahl von Male ausgeführt wird. Es wird hauptsächlich verwendet, um zu bestätigen, dass vor der Reaktion eine Reihe von Operationen abgeschlossen wird.
Die Codekopie lautet wie folgt:
var Rendernotes = _.After (Notes.length, Render); _.each (Notizen, Funktion (Anmerkung) {note.asyncsave ({Erfolg: rendernotes});}); // Alle Notizen werden gespeichert, Rendernote wird einmal ausgeführt
wickeln
Diese Methode übergibt eine Funktion als Parameter in eine andere Funktion und gibt schließlich eine neue Version des ersteren zurück.
Die Codekopie lautet wie folgt:
var hello = function (name) {return "hello:" + name; }; Hallo = _.wrap (Hallo, Funktion (func) {return "vor", " + func (" moe ") +", nach ";}); Hallo(); // 'Vorher, Hallo: Moe, nach'
komponieren
Diese Methode akzeptiert eine Reihe von Funktionen als Parameter, läuft von Back zu Forward, und das laufende Ergebnis der vorherigen Funktion wird als laufender Parameter der nächsten Funktion verwendet. Das heißt, konvertieren Sie die Form von f (g (), h ()) in f (g (h ())).
Die Codekopie lautet wie folgt:
var greet = function (name) {return "hi:" + name; }; var excem = function (Anweisung) {return Anweisung + "!"; }; var Welcome = _.compose (ausrufen, GEELT); Willkommen ('Moe'); // 'Hi: Moe!'
Werkzeuge und Methoden
Vorlage
Diese Methode wird verwendet, um HTML -Vorlagen zu kompilieren. Es akzeptiert drei Parameter.
Die Codekopie lautet wie folgt:
_.Template (templatestring, [Daten], [Einstellungen])
Die Bedeutungen der drei Parameter sind wie folgt:
Templatestring: Vorlagenzeichenfolge
Daten: Geben Sie die Daten der Vorlage ein
Einstellungen: Einstellungen
Templatestring
Die Template -String -Templatestring ist eine gewöhnliche HTML -Sprache, in der Variablen in Form von < %=… %> eingefügt werden. Das Datenobjekt ist für die Bereitstellung des Werts der Variablen verantwortlich.
Die Codekopie lautet wie folgt:
var txt = "
< %= Word %>
Die Codekopie lautet wie folgt:
"; _.Template (TXT, {Word:" Hello World "}) //"
Hallo Welt
Die Codekopie lautet wie folgt:
"
Wenn der Wert einer Variablen fünf Sonderzeichen (& <> ”' /) enthält, muss er mit < %-… %> entkommen.
Die Codekopie lautet wie folgt:
var txt = "
< %- Word %>
Die Codekopie lautet wie folgt:
"; _.Template (txt, {word:" h & w "}) //
H & w
JavaScript -Befehle können in Form von < %… %> eingefügt werden. Im Folgenden finden Sie ein Beispiel für eine Urteilsaussage.
Die Codekopie lautet wie folgt:
var txt = "< %var i = 0; if (i <1) { %>" + "< %= Word %>" + "< %} %>"; _.template (txt, {word: "Hallo Welt"}) // Hallo Welt
Gemeinsame Verwendungen umfassen Schleifenanweisungen.
Die Codekopie lautet wie folgt:
var list = "< % _.each (personen, Funktion (Name) { %>
<%= name%> <%}); %> "; _.Template (Liste, {people: ['Moe', 'Curly', 'Larry']}); //"
Moe
lockig
Larry “
Wenn die Template -Methode nur die erste Parameter -Templatestring hat und der zweite Parameter weggelassen wird, wird eine Funktion zurückgegeben, und Daten können in Zukunft in diese Funktion eingegeben werden.
Die Codekopie lautet wie folgt:
var t1 = _.template ("Hallo <%= user%>!"); T1 ({Benutzer: ""}) // 'Hallo!'
Daten
Alle Variablen in der Templatestring sind intern die Attribute des OBJ -Objekts, und das OBJ -Objekt bezieht sich auf das zweite Parameterdatenobjekt. Die folgenden zwei Sätze sind gleichwertig.
Die Codekopie lautet wie folgt:
_.Template ("Hallo <%= Benutzer%>!", {Benutzer: ""}) _.Template ("Hallo <%= obj.user%>!", {Benutzer: ""})
Wenn Sie den Namen des OBJ -Objekts ändern möchten, müssen Sie ihn im dritten Parameter festlegen.
Die Codekopie lautet wie folgt:
_.Template ("< %if (data.title) { %> Titel: < %= title %> < %} %>", null, {variable: "data"});
Da die Vorlage beim Ersetzen von Variablen intern mit Anweisungen verwendet wird, wird die obige Methode schneller ausgeführt.