Heim >Web-Frontend >js-Tutorial >NodeJS verwendet den jQuery-Selektor, um DOM_jquery zu betreiben
Hinweis* Dies ist ein „altes“ Projekt seit mehr als zwei Jahren, das es Ihnen ermöglicht, den Back-End-HTML/XML nach dem Entfernen des Browserkompatibilitäts-bezogenen Codes wie das Front-End-DOM zu verwenden , Operationen sind 8-mal schneller als JSDOM. Wir haben bereits erwähnt, dass JSDOM schwerwiegende Leistungsprobleme aufweist: Debug Node.JS: Wie finden wir Speicherlecks und Endlosschleifen?
Cheerio
Schnell, flexibel, serverseitig mit jQuery.
Einführung
Testen Sie Ihr serverseitiges HTML:
Installieren
npm install cheerio
Funktion
❤ Vertraute Syntax: Cheerio implementiert eine Teilmenge der Kern-jQuery. Cheerio entfernt jegliche DOM-Inkonsistenz und Browserkompatibilitätsunterstützung aus der jQuery-Bibliothek und präsentiert seine wirklich großartige API.
ϟ Extrem schnell: Cheerio verwendet ein sehr einfaches, konsistentes DOM-Modell. Dies führt zu unglaublichen Leistungssteigerungen beim Parsen, Bearbeiten und Rendern. Vorläufige End-to-End-Benchmarks zeigen, dass Cheerio etwa achtmal schneller ist als JSDOM.
❁Unglaubliche Flexibilität: Kompatibel mit htmlparser2API. Cheerio kann fast jedes HTML- oder XML-Dokument analysieren.
Wie wäre es mit JSDOM?
Ich schreibe Cheerio, weil ich mit JSOM zunehmend frustriert bin. Für mich sind es drei große Probleme, auf die ich immer wieder stoße:
• Der integrierte Parser von JSDOM ist zu streng: Der mit JSDOM gebündelte HTML-Parser kann derzeit viele beliebte Websites nicht verarbeiten.
•JSDOM ist zu langsam: Beim Parsen großer Websites kommt es bei JSDOM zu offensichtlichen Verzögerungen.
•JSDOM fühlt sich zu schwer an: Der Zweck von JSDOM besteht darin, eine DOM-Umgebung bereitzustellen, die mit dem übereinstimmt, was wir im Browser sehen (beachten Sie * ausführbares JavaScript). Ich habe so etwas nie wirklich gebraucht, ich möchte nur eine einfache, vertraute Methode zur HTML-Manipulation.
Wann sollte JSDOM verwendet werden?
Cheerio kann nicht alle deine Probleme lösen. Wenn ich in einer browserähnlichen Umgebung arbeiten muss, verwende ich weiterhin JSDOM, insbesondere wenn ich automatisierte Funktionstests auf dem Server durchführen möchte.
API
Beispiel-HTML-Code, den wir verwenden werden:
Laden
Zuerst müssen Sie den HTML-Code laden. Dieser Schritt wird in jQuery automatisch ausgeführt, da jQuery in einer Echtzeit-DOM-Umgebung ausgeführt wird. Wir müssen das HTML-Dokument an Cheerio übergeben.
Dies ist die bevorzugte Methode:
Alternativ können Sie HTML als String-Parameter übergeben:
oder als Wurzelknoten
Sie können die Standard-Parsing-Optionen, die Sie ändern müssen, auch über ein zusätzliches .load() laden:
Diese Parsing-Optionen sind direkt von htmlparser2 entlehnt, sodass alle Parameter, die in htmlparser2 verwendet werden können, auch in cheerio gültig sind. Die Standardoption ist:
Selektoren
Cheerios Selektoren sind fast identisch mit denen von jQuery, daher ist die API sehr ähnlich.
Der Selektor wählt Elemente in der Reihenfolge aus: root[root, optional]->Context[context, optional]->selector. Selektoren und Kontexte können ein Zeichenfolgenausdruck, ein DOM-Element oder ein Array von DOM-Elementen sein. Das Root-Dokument ist normalerweise das Root-Element des HTML-Dokuments.
Wie jQuery durchläuft und manipuliert diese Auswahlmethode das Dokument vom Startpunkt aus. Dies ist die primäre Möglichkeit, Elemente aus einem Dokument auszuwählen, ist jedoch nicht wie die CSSSelect-Bibliothek (Sizzle-Selektor) von jQuery aufgebaut.
Attribute
Methoden zum Abrufen und Ändern von Eigenschaften.
.attr( name, value )
Methoden zum Abrufen und Festlegen von Eigenschaften. Ruft nur den Attributwert des ersten übereinstimmenden Elements ab. Wenn der Wert einer Set-Eigenschaft auf null gesetzt ist, wird die Eigenschaft entfernt. Sie können Map und Function auch wie jQuery übergeben.
.data( Name, Wert)
Methoden zum Abrufen und Festlegen von Dateneigenschaften. Ruft nur das erste Element der Übereinstimmung ab oder legt es fest.
Methoden zum Abrufen und Festlegen von Eingabe-, Auswahl- und Textbereichswerten. Hinweis: Karte wird unterstützt, Funktion wurde noch nicht hinzugefügt.
Weitere APIs finden Sie auf der offiziellen Website