1. Analyse d'ouverture
Cet article parle de ces trois modules ensemble parce qu'ils ne sont pas très longs, et deuxièmement, il y a des dépendances entre eux, ils sont donc introduits et analysés en séquence. Je ne dirai pas beaucoup de bêtises, veuillez consulter le document suivant:
(1), "Module URL"
Laissez-moi avoir un peu de châtaigne:
La copie de code est la suivante:
var url = require ('url');
var queryUrl = "http: // localhost: 8888 / bb? name = bigbear & memo = helloworld";
console.log (typeof url.parse (queryUrl));
console.log (url.parse (queryUrl));
Résultats en cours:
La copie de code est la suivante:
objet // type de
{
protocole: 'http:',
Slashes: vrai,
Auth: NULL,
Hôte: «LocalHost: 8888»,
Port: '8888',
nom d'hôte: «localhost»,
Hash: Null,
Recherche: '? name = bigbear & memo = helloworld',
Query: 'name = bigbear & memo = helloworld',
pathname: '/ bb',
Chemin: '/ bb? name = bigbear & memo = helloworld',
href: 'http: // localhost: 8888 / bb? name = bigbear & memo = helloworld'
}
Expliquez comme suit:
Protocole: protocole de demande
Hôte: Le nom d'hôte URL a été converti en minuscules, y compris les informations du port
Auth: La partie d'informations d'authentification de l'URL
Nom d'hôte: la partie hôte de l'hôte, convertie en minuscules
Port: la partie du numéro de port de l'hôte
PathName: la partie Chemin de l'URL, située après le nom d'hôte avant la demande de la requête
Recherche: la section de la chaîne de requête de l'URL, y compris le point d'interrogation au début.
Chemin: le chemin d'accès et la recherche sont connectés.
Requête: requête la partie du paramètre (partie de la chaîne après le point d'interrogation), ou utilisez QueryString.parse () pour analyser l'objet renvoyé.
Hash: la partie suivante de l'URL "#" (y compris le symbole #)
API supplémentaire: "url.format (urlobj)"
Fonction: entrez un objet URL pour renvoyer la chaîne URL formatée.
(2), "Module de requête"
Le module "Querrystring" est utilisé pour convertir les chaînes de paramètres d'URL et les objets de paramètre les uns dans les autres, comme indiqué ci-dessous:
La copie de code est la suivante:
var url = require ('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));
Les résultats de l'opération sont les suivants:
La copie de code est la suivante:
nom = bigbear & mémo = helloworld
{
Nom: «Bigbear»,
Mémo: 'Helloworld'
}
API supplémentaire:
queystring.stringify (obj, [sep], [eq]) ----- sérialisez un objet à une chaîne de requête.
Vous pouvez choisir de remplacer le séparateur par défaut ('&') et d'allocateur ('=').
queystring.stringify ({foo: 'bar', baz: 'qux'}, ';', ':') // renvoie la chaîne suivante 'foo: bar; baz: qux'
queystring.parse (str, [sep], [eq], [options]) ----- désérialiser une chaîne de requête dans un objet. Vous pouvez choisir de remplacer le séparateur par défaut ('&') et d'allocateur ('=').
L'objet Options peut contenir un attribut Maxkeys (par défaut est 1000), qui peut être utilisé pour limiter le nombre de clés traitées. Le régler sur 0 peut supprimer le nombre de clés.
Exemple: QueryString.parse ('foo = bar & baz = qux & baz = quux & corge') // {foo: 'bar', baz: ['qux', 'quux'], corge: ''}
(3), "Module de chemin"
Ce module contient un ensemble d'outils pour le traitement et la conversion des chemins de fichier. Presque toutes les méthodes ne convertissent que les chaînes et le système de fichiers ne vérifiera pas si le chemin est vrai ou non.
Ayons d'abord un simple châtaignier:
La copie de code est la suivante:
var url = require ('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
Renvoie la dernière partie du chemin, séparez-vous avec "/"
La copie de code est la suivante:
var url = require ('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 || "Not ext name!"); // pas le nom d'alp!
En raison de trop d'API, ce qui précède n'énume que quelques-uns couramment utilisés, et tout le monde doit lire attentivement le document.
2. Châtaigne complète
Scénario Description ---- Le serveur reçoit des demandes de différentes situations et effectue un traitement différent via "URL". Le code est le suivant:
(1), créer "index.html"
La copie de code est la suivante:
<! doctype html>
<html>
<adal>
<Title> Bigbear </Title>
<meta content = "ie = 8" http-equiv = "x-ua-compatible" />
<meta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8">
<style type = "text / css">
div {
marge: 50px;
Largeur: 100%;
marge: 0px;
hauteur: 120px;
hauteur de ligne: 120px;
Couleur: #ffff;
taille de police: 22px;
Contexte: # FF9900;
Texte-aligne: Centre;
}
</ style>
<script src = "index.js"> </ script>
</ head>
<body>
<div> Bonjour, Big Bear! </div>
</docy>
</html>
(2), créer "index.js"
alert ("Bonjour bb!"); // une seule phrase de code à tester
(3) Créer "Server.js"
La copie de code est la suivante:
var http = require ("http");
var fs = require ('fs');
var url = require ('url');
var path = require ("path");
http.createServer (fonction (demande, réponse) {
var méthode = request.method;
méthode = méthode.tolowercase ();
var filename = path.basename (request.url);
var extname = path.ExtName (nom de fichier);
var root = "./";
if ("get" == méthode) {
if (extname) {
fs.readfile ("./" + nom de fichier, "utf-8", fonction (erreur, données) {
if (erreur) lancer une erreur;
réponse.Writehead (200, {
"Content-Type": {
".css": "texte / css",
".js": "application / javascript"
} [extname]
});
Response.Write (données);
réponse.end ();
});
}
autre{
fs.readfile (root + "index.html", "utf-8", fonction (erreur, données) {
if (erreur) lancer une erreur;
réponse.Writehead (200, {
"Contenu-type": "texte / html"
});
Response.Write (données);
réponse.end ();
});
}
}
else if ("post" == request.url) {
// gérer le message ici
}
}). écouter (8888);
console.log ("Web Server en cours d'exécution, port sur ---> 8888");
Exécutez Node Server.js.
Trois, résumons
(1) Comprendre la connexion entre les trois modules ci-dessus et les utiliser de manière flexible.
(2) compétent dans l'utilisation des trois modules API liés "URL, queystrstring et le chemin".
(3), et enfin souligner: comprendre l'intention du code dans l'exemple ci-dessus, refactor et résumer constamment.