1. Installation
Tout d'abord, allez sur http://nodejs.org pour télécharger et installer. La version que je suis en baisse est de 0,8,14. L'installation est très simple, l'étape suivante est suivante. Configurez ensuite le répertoire d'installation dans le chemin d'accès et MSI installera NPM (Node Package Manager) ensemble.
Mon répertoire d'installation est C: / Program Files (x86) / NodeJS. À node -v npm -v
1.1. Bonjour le monde
Créez un nouveau fichier hello.js dans le répertoire du projet Node.js et saisissez une ligne de code
console.log ('Bonjour, nodejs.');Entrez la console de ligne de commande, entrez le répertoire du projet Node.js et le nœud de type Hello.js
La console sortira "Hello, Nodejs".
1.2. Version Web de Helloworld
Créez un nouveau http.js dans le répertoire du projet Node.js, le code est le suivant
var http = require ("http"); http.createServer (function (request, réponse) {réponse.writehead (200, {"contenu-type": "text / html"}); réponse.write ("bonjour world!"); réponse.end ();}). écouter (8000);Démarrez le service dans la ligne de commande et cliquez sur le nœud http.js
Ouvrez ensuite la barre d'adresse du navigateur et entrez http: // localhost: 8000 /, et voyez Hello World! Sortie sur la page et il réussit.
La version de Node.js doit être synchronisée avec l'API
Le numéro de version de Node.js est régulier, même la version est une version stable, la version ODD est une version non stable
2 Analyse du code Helloworld
OK, commencez à analyser notre Helloworld en ligne à partir de maintenant.
Introduire des modules
var http = require ("http");La méthode requise est utilisée pour introduire un module et le paramètre est le nom du module. Par exemple, le module du système de fichiers peut être introduit comme suit:
var fs = require ("fs");Nous pouvons utiliser la méthode requis () comme méthode globale, mais en fait, il ressemble plus à une méthode locale appartenant à un certain module. Sa documentation est ici: https://nodejs.org/api/globals.html.
La méthode requise renvoie une instance d'un certain module, comme l'exigence ("http") renvoie une instance HTTP. La documentation de référence pour les instances HTTP est ici: https://nodejs.org/api/http.html.
Nous voyons que le module HTTP a une méthode CreateServer (), qui implique notre deuxième ligne de code.
Créer un serveur
La méthode CreateServer () du module HTTP accepte une méthode en tant que paramètre, et le prototype est:
http.createServer ([requestListener])
RequestListener est une méthode qui sera associée à l'événement de demande de la classe HTTP.Server. De cette façon, lorsque la demande du client arrive, le demandeur de demande sera appelé.
RequestListener a deux paramètres et le prototype de fonction est le suivant:
fonction (demande, réponse) {} Le type de la première demande de paramètre est http.IncomingMessage , qui met en œuvre l'interface Readable Stream .
Le type du deuxième paramètre est http.ServerResponse , qui implémente l'interface Writeable Stream .
L'API Stream est ici: https://nodejs.org/api/stream.html. Dans le même temps, la demande et la réponse sont des éléments d'événements, qui peuvent émettre des événements spécifiques.
L'API EventEmitter est ici: https://nodejs.org/api/events.html#events_class_events_eventitteter. Plus tard, nous parlerons de la façon d'utiliser EventEmitter pour lancer et traiter les événements.
Prenons le code que nous avons créé le serveur:
http.createServer (fonction (request, réponse) {réponse.writehead (200, {"contenu-type": "text / plain"}); réponse.write ("Hello World!"); réponse.end ();}). écouter (8000);http.createServer renvoie une instance http.server. La méthode d'écoute de http.server peut permettre au serveur d'écouter sur un certain port, qui est de 8000 dans l'exemple.
Comme vous pouvez le voir, nous fournissons une fonction anonyme à CreateServer Method. Dans cette méthode, nous écrivons le "Hello World!" Message au client via le paramètre de réponse.
Analyser les demandes des clients
Nous avons analysé la méthode HTTP.CreateServer plus tôt. Ses paramètres sont une méthode avec deux paramètres. L'un représente la demande envoyée par le client et l'autre représente la réponse pour réécrire au client. Jetons un coup d'œil aux paramètres de demande.
La demande est une instance de http.IncomingMessage . Grâce à cette instance, nous pouvons obtenir les paramètres de demande, tels que la méthode HTTP, la version HTTP, l'URL, l'en-tête, etc. L'API spécifique est ici: https://nodejs.org/api/http.httml#http_http_incomingMessage.
Jetons un coup d'œil en modifiant Helloworld.js (sauf as helloworld2.js). Le code est le suivant:
// introduire le module http var http = require ("http"); // Créer un serveur, en spécifiant la fonction qui gère les demandes du client http.createServer (fonction (request, réponse) {console.log ("méthode -" + request.method); console.log ("version -" + request.httpversion); console.log ("url -" + request.url); Réponse.writehead (200, {"contenu": ". "Texte / Plain"}); Console.log ("Hello World Start Écouter sur le port 8000");Comme vous pouvez le voir, j'ai utilisé l'objet Console pour installer certaines informations de débogage et imprimé la méthode HTTP, la version, l'URL et d'autres informations. Vous pouvez exécuter Node Helloworld2.js, le navigateur visite http: // localhost: 8000, puis exécuter la ligne de commande pour voir quelles informations sont la sortie. Je suis comme ça:
Notre Simple Helloworld peut déjà envoyer des données de réponse au client, et vous pouvez voir les mots "Hello World!" dans votre navigateur. Cette réponse est envoyée au client via une response d'instance de http.ServerResponse .
http.ServerResponse est également un Stream ou un eventEmitter. Grâce à celui-ci, nous retournons le code d'état HTTP, les données, les en-têtes HTTP et d'autres informations au client.
Module HTTP
Dans le module HTTP de Node.js, la ligne d'état est écrite au client via la méthode de Writehead de Http.ServerResponse. Le prototype de la méthode d'écriture est le suivant:
réponse.writehead (statuscode [, statusMessage] [, en-têtes])
Le premier paramètre de cette méthode est StatusCode, qui est un nombre tel que 200 et 403. Les paramètres restants sont facultatifs. Le dernier paramètre est les en-têtes, où vous pouvez utiliser la notation d'objet JSON pour écrire des en-têtes HTTP, tels que: {“Content-Type”:”text/plain”,”Content-Length”:11} . Le premier paramètre facultatif StatusMessage est utilisé pour spécifier un message de description d'état, qui ne peut pas être rempli.
En-tête HTTP
L'en-tête est quelques paires de valeurs clés. Par exemple, le "Type de contenu" que nous voyons dans Helloworld est la balise d'en-tête utilisée pour indiquer le type de données, qui peut correspondre à des fichiers texte, des images, des vidéos, du binaire, etc. De même, la "longueur de contenu" est utilisée pour spécifier la longueur des données. Il y en a beaucoup d'autres, comme "Date", "Connection", etc. Veuillez vous référer au lien précédent.
L'en-tête peut également être défini séparément à l'aide de la méthode response.setHeader(name, value) de HTTP.ServerResponse, et un en-tête HTTP peut être défini à la fois.
données
Après l'en-tête, il y a des données. Certains codes d'état, tels que 200, disposeront de données à l'avenir. Et certains, comme 301, 404, 403, 500, la plupart d'entre eux n'ont pas de données.
Les données sont écrites au client via la méthode d'écriture de http.serverResponse, par exemple:
Response.SetHeader ("Content-Type", "Text / Html");Ici, nous devons mentionner qu'il existe deux méthodes de codage de transmission de données HTTP courantes:
Définissez des données de longueur de longueur de contenu, définissez l'en-tête de codage de transfert vers des données de transfert en morceaux en morceaux
Comme notre exemple actuel Helloworld, sans définir l'en-tête de longueur de contenu, le module HTTP de Node.js par défaut est par défaut en codage.
Nous utilisons les outils de développeur de Chrome Browser pour afficher les données du réseau, qui peuvent être clairement visibles. Comme indiqué dans la figure ci-dessous:
Réponse HTTP
Les trois points que j'ai marqués sont toutes les informations d'en-tête HTTP transmises au navigateur par l'exemple Helloworld.
Nous écrivons des données au client via la méthode d'écriture de http.serverResponse. Vous pouvez écrire toutes les données à la fois, ou vous pouvez écrire les données séparément et plusieurs fois. Lorsque la quantité de données à transférer est importante, l'écriture à plusieurs reprises est une approche plus raisonnable. Par exemple, si vous envoyez un grand fichier au client, il est plus adapté à l'écriture à plusieurs reprises. Vous pouvez également utiliser la caractéristique asynchrone de Node.js pour obtenir de bonnes performances.