1. Öffnungsanalyse
In diesem Artikel geht es um diese drei Module zusammen, weil sie nicht sehr lang sind, und zweitens gibt es Abhängigkeiten zwischen ihnen, so dass sie nacheinander eingeführt und analysiert werden. Ich werde nicht viel Unsinn sagen, siehe das folgende Dokument:
(1), "URL -Modul"
Lassen Sie mich eine kleine Kastanie haben:
Die Codekopie lautet wie folgt:
var url = erfordern ('url');
var queryurl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
console.log (typeof url.parse (queryurl));
console.log (url.parse (queryurl));
Auslaufergebnisse:
Die Codekopie lautet wie folgt:
Objekt // Typof
{
Protokoll: 'http:',
Schrägstriche: wahr,
AUTH: NULL,
Gastgeber: 'Localhost: 8888',
Port: '8888',
Hostname: 'Localhost',
Hash: Null,
Suche: '? name = bigbear & memo = helloWorld',
Abfrage: 'name = bigbear & memo = helloWorld',
Pfadname: '/bb',
Pfad: '/bb? name = bigbear & memo = helloWorld',
href: 'http: // localhost: 8888/bb? name = bigbear & memo = helloWorld'
}
Erklären Sie wie folgt:
Protokoll: Anfrage Protokoll
HOST: Der URL -Hostname wurde in Kleinbuchstaben umgewandelt, einschließlich Portinformationen
Auth: Die Authentifizierungsinformationen Teil der URL
Hostname: Der Hostname -Teil des Hosts, der in Kleinbuchstaben umgewandelt wurde
Port: Die Portnummer Teil des Hosts
Pfadname: Der Pfadteil der URL, der sich nach dem Hostnamen vor der Anfrage der Abfrage befindet
Suche: Der Abschnitt "Abfrage" der URL, einschließlich des Fragezeichens am Anfang.
Pfad: Pathname und Suche sind verbunden.
Abfrage: Abfragen Sie den Parameter -Teil (Teil der Zeichenfolge nach dem Fragezeichen) oder verwenden Sie QueryString.Parse (), um das zurückgegebene Objekt zu analysieren.
Hash: Der folgende Teil der URL " #" (einschließlich des # Symbols)
Ergänzende API: "url.format (urlobj)"
Funktion: Geben Sie ein URL -Objekt ein, um die formatierte URL -Zeichenfolge zurückzugeben.
(2), "QueryString -Modul"
Das "QueryString" -Modul wird verwendet, um URL -Parameterzeichenfolgen und Parameterobjekte ineinander umzuwandeln, wie unten gezeigt:
Die Codekopie lautet wie folgt:
var url = erfordern ('url');
var qs = require ('queryString');
var queryurl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
queryUrl = url.parse (queryUrl) .Query;
console.log (queryurl);
console.log (qs.parse (queryurl));
Die Betriebsergebnisse sind wie folgt:
Die Codekopie lautet wie folgt:
name = bigbear & memo = helloWorld
{
Name: 'Bigbear',
Memo: 'HelloWorld'
}
Ergänzende API:
QueryString.Stringify (OBJ, [SEP], [Gl]) ----- Serialisieren Sie ein Objekt zu einer Abfragezeichenfolge.
Sie können auswählen, ob der Standard -Splitter ('&') und den Allocator ('=') überschrieben werden sollen.
queryString.stringify ({foo: 'bar', baz: 'qux'}, ';', ':') // Die folgende Zeichenfolge 'foo: baz; baz: qux' zurückgeben.
QueryString.Parse (str, [SEP], [Gl], [Optionen]) ----- Deserialisieren Sie eine Abfragebarstellung in ein Objekt. Sie können auswählen, ob der Standard -Splitter ('&') und den Allocator ('=') überschrieben werden sollen.
Das Optionsobjekt kann ein MaxKeys -Attribut enthalten (Standard ist 1000), mit dem die Anzahl der verarbeiteten Schlüssel begrenzt werden kann. Wenn Sie es auf 0 festlegen, können Sie die Anzahl der Schlüssel entfernen.
Beispiel: queryString.parse ('foo = bar & baz = qux & baz = quux & corge') // {foo: 'bar', baz: ['qux', 'quux'], corge: ''}
(3), "Pfadmodul"
Dieses Modul enthält eine Reihe von Tools für die Verarbeitung und Konvertierung von Dateipfaden. Fast alle Methoden konvertieren nur Zeichenfolgen, und das Dateisystem prüft nicht, ob der Pfad wahr ist oder nicht.
Lassen Sie uns zuerst eine einfache Kastanie haben:
Die Codekopie lautet wie folgt:
var url = erfordern ('url');
var qs = require ('queryString');
var path = require ("path");
var queryurl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
var root = path.Basename (queryUrl);
console.log (root); // bb? name = bigbear & memo = helloWorld
Gibt den letzten Teil des Pfades zurück, geteilt mit "/"
Die Codekopie lautet wie folgt:
var url = erfordern ('url');
var qs = require ('queryString');
var path = require ("path");
var queryurl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
var root = path.Basename (queryUrl);
console.log (root); // bb? name = bigbear & memo = helloWorld
var ext = path.extName (root);
console.log (ext || "Nicht ext name!"); // kein ausfassender Name!
Aufgrund zu vieler APIs sind oben nur wenige häufig verwendete aufgeführt, und jeder muss das Dokument sorgfältig lesen.
2. umfassende Kastanie
Szenario Beschreibung ---- Der Server empfängt Anfragen aus verschiedenen Situationen und führt eine andere Verarbeitung über "URL" durch. Der Code ist wie folgt:
(1) erstellen "index.html"
Die Codekopie lautet wie folgt:
<! docType html>
<html>
<kopf>
<title> bigbear </title>
<meta content = "ie = 8" http-äquiv = "x-ua-kompatible"/>
<meta http-äquiv = "content-type" content = "text/html; charset = utf-8">
<style type = "text/css">
div {
Rand: 50px;
Breite: 100%;
Rand: 0px;
Höhe: 120px;
Zeilenhöhe: 120px;
Farbe: #ffff;
Schriftgröße: 22px;
Hintergrund:#ff9900;
Text-Align: Mitte;
}
</style>
<script src = "index.js"> </script>
</head>
<body>
<div> Hallo, Big Bear! </div>
</body>
</html>
(2) erstellen "index.js"
Alarm ("Hallo BB!"); // Nur ein Code -Satz zum Testen
(3) Erstellen "server.js"
Die Codekopie lautet wie folgt:
var http = required ("http");
var fs = fordert ('fs');
var url = erfordern ('url');
var path = require ("path");
http.createServer (Funktion (Anfrage, Antwort) {
var method = request.method;
method = methode.tolowerCase ();
var Filename = path.Basename (request.Url);
var extname = path.extName (Dateiname);
var root = "./";
if ("get" == Methode) {
if (extname) {
fs.ReadFile ("./" + Dateiname, "UTF-8", Funktion (Fehler, Daten) {
Wenn (Fehler) Fehler werfen;
Antwort.WriteHead (200, {
"Inhaltstyp": {{
".css": "Text/CSS",
".js": "Anwendung/JavaScript"
} [extname]
});
Antwort.Write (Daten);
Antwort.end ();
});
}
anders{
fs
Wenn (Fehler) Fehler werfen;
Antwort.WriteHead (200, {
"Inhaltstyp": "Text/HTML"
});
Antwort.Write (Daten);
Antwort.end ();
});
}
}
sonst if ("post" == request.url) {
// hier den Beitrag verarbeiten
}
}). Hören (8888);
console.log ("Webserver ausgeführt, Port auf ---> 8888");
Führen Sie Node Server.js aus.
Drei, lasst uns zusammenfassen
(1) Verstehen Sie die Verbindung zwischen den oben genannten drei Modulen und verwenden Sie sie flexibel.
(2) Die Verwendung der drei Module verwandten APIs "URL, QueryString und Pfad".
(3) und schließlich betonen: Verstehen Sie die Code -Absicht im obigen Beispiel, ständig Refactor und fassen Sie zusammen.