Heim Web-Frontend js-Tutorial NodeJS verwendet den jQuery-Selektor, um DOM_jquery zu betreiben

NodeJS verwendet den jQuery-Selektor, um DOM_jquery zu betreiben

May 16, 2016 pm 04:14 PM
nodejs Dom manipulieren

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:

Code kopieren Der Code lautet wie folgt:

var cheerio = require('cheerio'),
$ = cheerio.load('

Hallo Welt

');
$('h2.title').text('Hallo!');
$('h2').addClass('welcome');
$.html();
//=>

Hallo!


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:

Code kopieren Der Code lautet wie folgt:


  • Apple

  • Orange

  • Pear


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:

Code kopieren Der Code lautet wie folgt:

var cheerio = require('cheerio'),
$ = cheerio.load('
    ...
');

Alternativ können Sie HTML als String-Parameter übergeben:

Code kopieren Der Code lautet wie folgt:

$ = require('cheerio');
$('ul', '
    ...
');

oder als Wurzelknoten

Code kopieren Der Code lautet wie folgt:

$ = require('cheerio');
$('li', 'ul', '
    ...
');

Sie können die Standard-Parsing-Optionen, die Sie ändern müssen, auch über ein zusätzliches .load() laden:

Code kopieren Der Code lautet wie folgt:

$ = cheerio.load('
    ...
', {
NormalizeWhitespace: true,
xmlMode: true
});

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:

Code kopieren Der Code lautet wie folgt:

{
NormalizeWhitespace: false,
xmlMode: false,
decodeEntities: true
}

Selektoren

Cheerios Selektoren sind fast identisch mit denen von jQuery, daher ist die API sehr ähnlich.

Code kopieren Der Code lautet wie folgt:

$( Selektor, [Kontext], [Stamm] )

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.

Code kopieren Der Code lautet wie folgt:

$('.apple', '#fruits').text()
//=> Apfel
$('ul .pear').attr('class')
//=> Birne
$('li[class=orange]').html()
//=>
  • Orange

  • 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.

    Code kopieren Der Code lautet wie folgt:

    $('ul').attr('id')
    //=> Früchte
    $('.apple').attr('id', 'favorite').html()
    //=>
  • Apple

  • .data( Name, Wert)

    Methoden zum Abrufen und Festlegen von Dateneigenschaften. Ruft nur das erste Element der Übereinstimmung ab oder legt es fest.

    Code kopieren Der Code lautet wie folgt:

    $('
    ').data()
    //=> { appleColor: 'red' }
    $('
    ').data('data-apple-color')
    //=> 'rot'
    var apple = $('.apple').data('kind', 'mac')
    apple.data('kind')
    //=> 'mac'
    .val( [Wert] )

    Methoden zum Abrufen und Festlegen von Eingabe-, Auswahl- und Textbereichswerten. Hinweis: Karte wird unterstützt, Funktion wurde noch nicht hinzugefügt.

    Code kopieren Der Code lautet wie folgt:

    $('input[type="text"]').val()
    //=> input_text
    $('input[type="text"]').val('test').html()
    //=>

    Weitere APIs finden Sie auf der offiziellen Website

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Der Unterschied zwischen NodeJS und VueJS Der Unterschied zwischen NodeJS und VueJS Apr 21, 2024 am 04:17 AM

    Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

    Ist NodeJS ein Backend-Framework? Ist NodeJS ein Backend-Framework? Apr 21, 2024 am 05:09 AM

    Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

    So verbinden Sie NodeJS mit der MySQL-Datenbank So verbinden Sie NodeJS mit der MySQL-Datenbank Apr 21, 2024 am 06:13 AM

    Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

    Was sind die globalen Variablen in NodeJS? Was sind die globalen Variablen in NodeJS? Apr 21, 2024 am 04:54 AM

    Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

    Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Apr 21, 2024 am 05:18 AM

    Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

    Gibt es einen großen Unterschied zwischen NodeJS und Java? Gibt es einen großen Unterschied zwischen NodeJS und Java? Apr 21, 2024 am 06:12 AM

    Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.

    Ist NodeJS eine Back-End-Entwicklungssprache? Ist NodeJS eine Back-End-Entwicklungssprache? Apr 21, 2024 am 05:09 AM

    Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

    So stellen Sie das NodeJS-Projekt auf dem Server bereit So stellen Sie das NodeJS-Projekt auf dem Server bereit Apr 21, 2024 am 04:40 AM

    Serverbereitstellungsschritte für ein Node.js-Projekt: Bereiten Sie die Bereitstellungsumgebung vor: Erhalten Sie Serverzugriff, installieren Sie Node.js, richten Sie ein Git-Repository ein. Erstellen Sie die Anwendung: Verwenden Sie npm run build, um bereitstellbaren Code und Abhängigkeiten zu generieren. Code auf den Server hochladen: über Git oder File Transfer Protocol. Abhängigkeiten installieren: Stellen Sie eine SSH-Verbindung zum Server her und installieren Sie Anwendungsabhängigkeiten mit npm install. Starten Sie die Anwendung: Verwenden Sie einen Befehl wie node index.js, um die Anwendung zu starten, oder verwenden Sie einen Prozessmanager wie pm2. Konfigurieren Sie einen Reverse-Proxy (optional): Verwenden Sie einen Reverse-Proxy wie Nginx oder Apache, um den Datenverkehr an Ihre Anwendung weiterzuleiten

    See all articles