Node.js Tutoriel
Démarrer avec Node.js
Recherche…
Remarques
Node.js est un framework d'E / S asynchrones, non bloquant et basé sur des événements, qui utilise le moteur JavaScript V8 de Google. Il est utilisé pour développer des applications faisant largement appel à la possibilité d’exécuter JavaScript à la fois sur le client et sur le serveur, ce qui permet de profiter de la réutilisation du code et de l’absence de changement de contexte. Il est open-source et multi-plateforme. Les applications Node.js sont écrites en JavaScript pur et peuvent être exécutées dans l'environnement Node.js sous Windows, Linux, etc.
Versions
Version | Date de sortie |
---|---|
v8.2.1 | 2017-07-20 |
v8.2.0 | 2017-07-19 |
v8.1.4 | 2017-07-11 |
v8.1.3 | 2017-06-29 |
v8.1.2 | 2017-06-15 |
v8.1.1 | 2017-06-13 |
v8.1.0 | 2017-06-08 |
v8.0.0 | 2017-05-30 |
v7.10.0 | 2017-05-02 |
v7.9.0 | 2017-04-11 |
v7.8.0 | 2017-03-29 |
v7.7.4 | 2017-03-21 |
v7.7.3 | 2017-03-14 |
v7.7.2 | 2017-03-08 |
v7.7.1 | 2017-03-02 |
v7.7.0 | 2017-02-28 |
v7.6.0 | 2017-02-21 |
v7.5.0 | 2017-01-31 |
v7.4.0 | 2017-01-04 |
v7.3.0 | 2016-12-20 |
v7.2.1 | 2016-12-06 |
v7.2.0 | 2016-11-22 |
v7.1.0 | 2016-11-08 |
v7.0.0 | 2016-10-25 |
v6.11.0 | 2017-06-06 |
v6.10.3 | 2017-05-02 |
v6.10.2 | 2017-04-04 |
v6.10.1 | 2017-03-21 |
v6.10.0 | 2017-02-21 |
v6.9.5 | 2017-01-31 |
v6.9.4 | 2017-01-05 |
v6.9.3 | 2017-01-05 |
v6.9.2 | 2016-12-06 |
v6.9.1 | 2016-10-19 |
v6.9.0 | 2016-10-18 |
v6.8.1 | 2016-10-14 |
v6.8.0 | 2016-10-12 |
v6.7.0 | 2016-09-27 |
v6.6.0 | 2016-09-14 |
v6.5.0 | 2016-08-26 |
v6.4.0 | 2016-08-12 |
v6.3.1 | 2016-07-21 |
v6.3.0 | 2016-07-06 |
v6.2.2 | 2016-06-16 |
v6.2.1 | 2016-06-02 |
v6.2.0 | 2016-05-17 |
v6.1.0 | 2016-05-05 |
v6.0.0 | 2016-04-26 |
v5.12.0 | 2016-06-23 |
v5.11.1 | 2016-05-05 |
v5.11.0 | 2016-04-21 |
v5.10.1 | 2016-04-05 |
v5.10 | 2016-04-01 |
v5.9 | 2016-03-16 |
v5.8 | 2016-03-09 |
v5.7 | 2016-02-23 |
v5.6 | 2016-02-09 |
v5.5 | 2016-01-21 |
v5.4 | 2016-01-06 |
v5.3 | 2015-12-15 |
v5.2 | 2015-12-09 |
v5.1 | 2015-11-17 |
v5.0 | 2015-10-29 |
v4.4 | 2016-03-08 |
v4.3 | 2016-02-09 |
v4.2 | 2015-10-12 |
v4.1 | 2015-09-17 |
v4.0 | 2015-09-08 |
io.js v3.3 | 2015-09-02 |
io.js v3.2 | 2015-08-25 |
io.js v3.1 | 2015-08-19 |
io.js v3.0 | 2015-08-04 |
io.js v2.5 | 2015-07-28 |
io.js v2.4 | 2015-07-17 |
io.js v2.3 | 2015-06-13 |
io.js v2.2 | 2015-06-01 |
io.js v2.1 | 2015-05-24 |
io.js v2.0 | 2015-05-04 |
io.js v1.8 | 2015-04-21 |
io.js v1.7 | 2015-04-17 |
io.js v1.6 | 2015-03-20 |
io.js v1.5 | 2015-03-06 |
io.js v1.4 | 2015-02-27 |
io.js v1.3 | 2015-02-20 |
io.js v1.2 | 2015-02-11 |
io.js v1.1 | 2015-02-03 |
io.js v1.0 | 2015-01-14 |
v0.12 | 2016-02-09 |
v0.11 | 2013-03-28 |
v0.10 | 2013-03-11 |
v0.9 | 2012-07-20 |
v0.8 | 2012-06-22 |
v0.7 | 2012-01-17 |
v0.6 | 2011-11-04 |
v0.5 | 2011-08-26 |
v0.4 | 2011-08-26 |
v0.3 | 2011-08-26 |
v0.2 | 2011-08-26 |
v0.1 | 2011-08-26 |
Bonjour HTTP server HTTP
Tout d'abord, installez Node.js pour votre plate-forme.
Dans cet exemple, nous allons créer un serveur HTTP écoutant sur le port 1337, qui envoie Hello, World!
au navigateur. Notez que, au lieu d'utiliser le port 1337, vous pouvez utiliser n'importe quel numéro de port de votre choix qui n'est actuellement utilisé par aucun autre service.
Le module http
est un module de base Node.js (un module inclus dans la source de Node.js, qui n'exige pas l'installation de ressources supplémentaires). Le module http
fournit la fonctionnalité permettant de créer un serveur HTTP à l'aide de la méthode http.createServer()
. Pour créer l'application, créez un fichier contenant le code JavaScript suivant.
const http = require('http'); // Loads the http module
http.createServer((request, response) => {
// 1. Tell the browser everything is OK (Status code 200), and the data is in plain text
response.writeHead(200, {
'Content-Type': 'text/plain'
});
// 2. Write the announced text to the body of the page
response.write('Hello, World!\n');
// 3. Tell the server that all of the response headers and body have been sent
response.end();
}).listen(1337); // 4. Tells the server what port to be on
Enregistrez le fichier avec n'importe quel nom de fichier. Dans ce cas, si nous l' hello.js
nous pouvons exécuter l'application en allant dans le répertoire où se trouve le fichier et en utilisant la commande suivante:
node hello.js
Le serveur créé est alors accessible avec l'URL http: // localhost: 1337 ou http://127.0.0.1:1337 dans le navigateur.
Une simple page Web apparaîtra avec un texte «Hello, World!» En haut, comme le montre la capture d'écran ci-dessous.
Ligne de commande Hello World
Node.js peut également être utilisé pour créer des utilitaires de ligne de commande. L'exemple ci-dessous lit le premier argument de la ligne de commande et imprime un message Hello.
Pour exécuter ce code sur un système Unix:
- Créez un nouveau fichier et collez le code ci-dessous. Le nom de fichier n'est pas pertinent.
- Rendre ce fichier exécutable avec
chmod 700 FILE_NAME
- Exécutez l'application avec
./APP_NAME David
Sous Windows, faites l’étape 1 et exécutez-le avec le node APP_NAME David
#!/usr/bin/env node
'use strict';
/*
The command line arguments are stored in the `process.argv` array,
which has the following structure:
[0] The path of the executable that started the Node.js process
[1] The path to this application
[2-n] the command line arguments
Example: [ '/bin/node', '/path/to/yourscript', 'arg1', 'arg2', ... ]
src: https://nodejs.org/api/process.html#process_process_argv
*/
// Store the first argument as username.
var username = process.argv[2];
// Check if the username hasn't been provided.
if (!username) {
// Extract the filename
var appName = process.argv[1].split(require('path').sep).pop();
// Give the user an example on how to use the app.
console.error('Missing argument! Example: %s YOUR_NAME', appName);
// Exit the app (success: 0, error: 1).
// An error will stop the execution chain. For example:
// ./app.js && ls -> won't execute ls
// ./app.js David && ls -> will execute ls
process.exit(1);
}
// Print the message to the console.
console.log('Hello %s!', username);
Installation et exécution de Node.js
Pour commencer, installez Node.js sur votre ordinateur de développement.
Windows: Accédez à la page de téléchargement et téléchargez / exécutez le programme d'installation.
Mac: Accédez à la page de téléchargement et téléchargez / exécutez le programme d'installation. Alternativement, vous pouvez installer Node via Homebrew en utilisant le brew install node
. Homebrew est un gestionnaire de paquets en ligne de commande pour Macintosh. Vous trouverez plus d'informations à ce sujet sur le site Web Homebrew .
Linux: Suivez les instructions de votre distribution sur la page d’installation de la ligne de commande .
Exécution d'un programme de noeud
Pour exécuter un programme Node.js, exécutez simplement node app.js
ou nodejs app.js
, où app.js
est le nom de fichier du code source de votre application de noeud. Vous n'avez pas besoin d'inclure le suffixe .js
pour que Node trouve le script que vous souhaitez exécuter.
Sous un système d'exploitation UNIX, un programme Node peut également être exécuté en tant que script de terminal. Pour ce faire, il doit commencer par un pointage vers l'interpréteur de nœud, tel que le nœud #!/usr/bin/env node
. Le fichier doit également être défini comme exécutable, ce qui peut être fait en utilisant chmod
. Maintenant, le script peut être directement exécuté à partir de la ligne de commande.
Déployer votre application en ligne
Lorsque vous déployez votre application dans un environnement hébergé (spécifique à Node.js), cet environnement propose généralement une variable d'environnement PORT
que vous pouvez utiliser pour exécuter votre serveur. Changer le numéro de port en process.env.PORT
vous permet d'accéder à l'application.
Par exemple,
http.createServer(function(request, response) {
// your server code
}).listen(process.env.PORT);
De plus, si vous souhaitez accéder à ce mode hors connexion pendant le débogage, vous pouvez utiliser ceci:
http.createServer(function(request, response) {
// your server code
}).listen(process.env.PORT || 3000);
où 3000
est le numéro de port hors ligne.
Déboguer votre application NodeJS
Vous pouvez utiliser l'inspecteur de noeud. Exécutez cette commande pour l'installer via npm:
npm install -g node-inspector
Ensuite, vous pouvez déboguer votre application en utilisant
node-debug app.js
Le dépôt Github peut être trouvé ici: https://github.com/node-inspector/node-inspector
Déboguer en mode natif
Vous pouvez également déboguer nativement node.js en le démarrant comme suit:
node debug your-script.js
Pour cerner votre débogueur exactement dans une ligne de code souhaitée, utilisez ceci:
debugger;
Pour plus d'informations, voir ici .
Dans node.js 8, utilisez la commande suivante:
node --inspect-brk your-script.js
Ouvrez ensuite à about://inspect
une version récente de Google Chrome et sélectionnez votre script Node pour obtenir l'expérience de débogage des outils DevTools de Chrome.
Bonjour tout le monde avec Express
L'exemple suivant utilise Express pour créer un serveur HTTP écoutant sur le port 3000, qui répond par "Hello, World!". Express est un framework Web couramment utilisé qui est utile pour créer des API HTTP.
Créez d'abord un nouveau dossier, par exemple myApp
. Allez dans myApp
et créez un nouveau fichier JavaScript contenant le code suivant ( hello.js
le hello.js
par exemple). Ensuite, installez le module express en utilisant npm install --save express
depuis la ligne de commande. Reportez-vous à cette documentation pour plus d'informations sur l'installation des packages .
// Import the top-level function of express
const express = require('express');
// Creates an Express application using the top-level function
const app = express();
// Define port number as 3000
const port = 3000;
// Routes HTTP GET requests to the specified path "/" with the specified callback function
app.get('/', function(request, response) {
response.send('Hello, World!');
});
// Make the app listen on port 3000
app.listen(port, function() {
console.log('Server listening on http://localhost:' + port);
});
À partir de la ligne de commande, exécutez la commande suivante:
node hello.js
Ouvrez votre navigateur et accédez à http://localhost:3000
ou http://127.0.0.1:3000
pour voir la réponse.
Pour plus d'informations sur le framework Express, vous pouvez consulter la section Web Apps With Express .
Routage de base Hello World
Une fois que vous avez compris comment créer un serveur HTTP avec un noeud, il est important de comprendre comment le faire «faire» des choses en fonction du chemin d'accès auquel l'utilisateur a accédé. Ce phénomène est appelé "routage".
L'exemple le plus fondamental serait de vérifier if (request.url === 'some/path/here')
, puis d'appeler une fonction qui répond avec un nouveau fichier.
Un exemple de ceci peut être vu ici:
const http = require('http');
function index (request, response) {
response.writeHead(200);
response.end('Hello, World!');
}
http.createServer(function (request, response) {
if (request.url === '/') {
return index(request, response);
}
response.writeHead(404);
response.end(http.STATUS_CODES[404]);
}).listen(1337);
Si vous continuez à définir vos "routes" comme ça, vous vous retrouverez avec une fonction de rappel énorme, et nous ne voulons pas un désordre géant comme ça, alors voyons si nous pouvons le nettoyer.
Tout d'abord, stockons toutes nos routes dans un objet:
var routes = {
'/': function index (request, response) {
response.writeHead(200);
response.end('Hello, World!');
},
'/foo': function foo (request, response) {
response.writeHead(200);
response.end('You are now viewing "foo"');
}
}
Maintenant que nous avons stocké 2 routes dans un objet, nous pouvons maintenant les vérifier dans notre rappel principal:
http.createServer(function (request, response) {
if (request.url in routes) {
return routes[request.url](request, response);
}
response.writeHead(404);
response.end(http.STATUS_CODES[404]);
}).listen(1337);
Maintenant, chaque fois que vous essayez de naviguer sur votre site Web, il vérifie l'existence de ce chemin dans vos itinéraires et appelle la fonction correspondante. Si aucun itinéraire n'est trouvé, le serveur répondra par un 404 (non trouvé).
Et voilà - le routage avec l’API HTTP Server est très simple.
Socket TLS: serveur et client
Les seules différences majeures entre ceci et une connexion TCP standard sont la clé privée et le certificat public que vous devrez définir dans un objet d'option.
Comment créer une clé et un certificat
La première étape de ce processus de sécurité est la création d'une clé privée. Et quelle est cette clé privée? Fondamentalement, c'est un ensemble de bruits aléatoires utilisés pour chiffrer les informations. En théorie, vous pouvez créer une clé et l'utiliser pour chiffrer ce que vous voulez. Mais il est préférable d'avoir des clés différentes pour des choses spécifiques. Parce que si quelqu'un vole votre clé privée, c'est comme si quelqu'un volait les clés de votre maison. Imaginez si vous utilisiez la même clé pour verrouiller votre voiture, votre garage, votre bureau, etc.
openssl genrsa -out private-key.pem 1024
Une fois que nous avons notre clé privée, nous pouvons créer une demande de signature de certificat (CSR), qui est notre demande de faire signer la clé privée par une autorité de fantaisie. C'est pourquoi vous devez saisir des informations relatives à votre entreprise. Cette information sera visible par le signataire autorisé et utilisée pour vous vérifier. Dans notre cas, peu importe ce que vous tapez, puisque nous allons signer notre certificat à l’étape suivante.
openssl req -new -key private-key.pem -out csr.pem
Maintenant que nous avons rempli nos documents, il est temps de prétendre que nous sommes une autorité de signature géniale.
openssl x509 -req -in csr.pem -signkey private-key.pem -out public-cert.pem
Maintenant que vous avez la clé privée et le certificat public, vous pouvez établir une connexion sécurisée entre deux applications NodeJS. Et, comme vous pouvez le voir dans l'exemple de code, le processus est très simple.
Important!
Puisque nous avons créé le certificat public nous-mêmes, en toute honnêteté, notre certificat ne vaut rien, parce que nous ne sommes rien. Le serveur NodeJS ne fera pas confiance à un tel certificat par défaut, et c'est pourquoi nous devons lui demander de faire confiance à notre certificat avec l'option rejectUnauthorized suivante: false. Très important : ne définissez jamais cette variable sur true dans un environnement de production.
Serveur Socket TLS
'use strict';
var tls = require('tls');
var fs = require('fs');
const PORT = 1337;
const HOST = '127.0.0.1'
var options = {
key: fs.readFileSync('private-key.pem'),
cert: fs.readFileSync('public-cert.pem')
};
var server = tls.createServer(options, function(socket) {
// Send a friendly message
socket.write("I am the server sending you a message.");
// Print the data that we received
socket.on('data', function(data) {
console.log('Received: %s [it is %d bytes long]',
data.toString().replace(/(\n)/gm,""),
data.length);
});
// Let us know when the transmission is over
socket.on('end', function() {
console.log('EOT (End Of Transmission)');
});
});
// Start listening on a specific port and address
server.listen(PORT, HOST, function() {
console.log("I'm listening at %s, on port %s", HOST, PORT);
});
// When an error occurs, show it.
server.on('error', function(error) {
console.error(error);
// Close the connection after the error occurred.
server.destroy();
});
TLS Socket Client
'use strict';
var tls = require('tls');
var fs = require('fs');
const PORT = 1337;
const HOST = '127.0.0.1'
// Pass the certs to the server and let it know to process even unauthorized certs.
var options = {
key: fs.readFileSync('private-key.pem'),
cert: fs.readFileSync('public-cert.pem'),
rejectUnauthorized: false
};
var client = tls.connect(PORT, HOST, options, function() {
// Check if the authorization worked
if (client.authorized) {
console.log("Connection authorized by a Certificate Authority.");
} else {
console.log("Connection not authorized: " + client.authorizationError)
}
// Send a friendly message
client.write("I am the client sending you a message.");
});
client.on("data", function(data) {
console.log('Received: %s [it is %d bytes long]',
data.toString().replace(/(\n)/gm,""),
data.length);
// Close the connection after receiving the message
client.end();
});
client.on('close', function() {
console.log("Connection closed");
});
// When an error ocoures, show it.
client.on('error', function(error) {
console.error(error);
// Close the connection after the error occurred.
client.destroy();
});
Bonjour tout le monde dans le REPL
Appelé sans arguments, Node.js démarre une REPL (Read-Eval-Print-Loop), également appelée « shell Node ».
À l'invite de commandes, tapez node
.
$ node
>
À l'invite du shell Node >
tapez "Hello World!"
$ node
> "Hello World!"
'Hello World!'
Modules de base
Node.js est un moteur Javascript (moteur V8 de Google pour Chrome, écrit en C ++) qui permet d'exécuter Javascript en dehors du navigateur. Bien que de nombreuses bibliothèques soient disponibles pour étendre les fonctionnalités de Node, le moteur est livré avec un ensemble de modules de base intégrant des fonctionnalités de base.
Il y a actuellement 34 modules de base inclus dans Node:
[ 'assert',
'buffer',
'c/c++_addons',
'child_process',
'cluster',
'console',
'crypto',
'deprecated_apis',
'dns',
'domain',
'Events',
'fs',
'http',
'https',
'module',
'net',
'os',
'path',
'punycode',
'querystring',
'readline',
'repl',
'stream',
'string_decoder',
'timers',
'tls_(ssl)',
'tracing',
'tty',
'dgram',
'url',
'util',
'v8',
'vm',
'zlib' ]
Cette liste a été obtenue à partir de l'API de documentation Node https://nodejs.org/api/all.html (fichier JSON: https://nodejs.org/api/all.json ).
Tous les modules de base en un coup d'œil
affirmer
Le module assert
fournit un ensemble simple de tests d'assertion pouvant être utilisés pour tester les invariants.
tampon
Avant l'introduction de TypedArray
dans ECMAScript 2015 (ES6), le langage JavaScript ne disposait d'aucun mécanisme pour lire ou manipuler des flux de données binaires. La classe Buffer
été introduite dans le cadre de l’API Node.js pour permettre l’interaction avec les flux d’octets dans le cadre d’activités telles que les flux TCP et les opérations de système de fichiers.
Maintenant que TypedArray
a été ajouté à ES6, la classe Buffer
implémente l'API Uin t8Array
de manière plus optimisée et adaptée aux cas d'utilisation de Node.js.
c / c ++ _ addons
Node.js Les Addons sont des objets partagés liés dynamiquement, écrits en C ou C ++, qui peuvent être chargés dans Node.js en utilisant la fonction require()
, et utilisés comme s’ils étaient un module Node.js ordinaire. Ils servent principalement à fournir une interface entre JavaScript s'exécutant dans les bibliothèques Node.js et C / C ++.
child_process
Le module child_process
permet de générer des processus enfant de manière similaire, mais pas identique, à popen (3).
Une seule instance de Node.js s'exécute dans un seul thread. Pour tirer parti des systèmes multi-core, l'utilisateur voudra parfois lancer un cluster de processus Node.js pour gérer la charge. Le module de cluster vous permet de créer facilement des processus enfants partageant tous des ports de serveur.
console
Le module de console
fournit une console de débogage simple, similaire au mécanisme de console JavaScript fourni par les navigateurs Web.
crypto
Le crypto
module fournit des fonctionnalités de chiffrement qui comprend un ensemble d'emballages pour le hachage de OpenSSL, HMAC, chiffrement, déchiffrement, signer et vérifier les fonctions.
deprecated_apis
Node.js peut rendre obsolètes les API lorsque: (a) l'utilisation de l'API est considérée comme non sécurisée, (b) une autre API améliorée a été mise à disposition, ou (c) des modifications de l'API sont attendues dans une prochaine version majeure .
dns
Le module dns
contient des fonctions appartenant à deux catégories différentes:
- Fonctions qui utilisent les fonctionnalités du système d'exploitation sous-jacent pour effectuer la résolution de noms et n'effectuent pas nécessairement de communication réseau. Cette catégorie ne contient qu'une seule fonction:
dns.lookup()
. - Fonctions qui se connectent à un serveur DNS réel pour effectuer la résolution de noms et qui utilisent toujours le réseau pour effectuer des requêtes DNS. Cette catégorie contient toutes les fonctions du module
dns
exception dedns.lookup()
.
domaine
Ce module est en attente de dépréciation . Une fois qu'une API de remplacement a été finalisée, ce module sera complètement obsolète. La plupart des utilisateurs finaux ne devraient pas avoir de raison d'utiliser ce module. Les utilisateurs qui doivent absolument disposer de la fonctionnalité fournie par les domaines peuvent, pour le moment, compter sur elle, mais doivent s’attendre à devoir migrer vers une solution différente à l’avenir.
Une grande partie de l'API de base de Node.js est construite autour d'une architecture asynchrone pilotée par des événements idiomatiques dans laquelle certains types d'objets (appelés "émetteurs") émettent périodiquement des événements nommés provoquant l'appel des objets Fonction ("écouteurs").
fs
Les E / S sur fichiers sont fournies par des wrappers simples autour des fonctions POSIX standard. Pour utiliser ce module, require('fs')
. Toutes les méthodes ont des formes asynchrones et synchrones.
Les interfaces HTTP dans Node.js sont conçues pour prendre en charge de nombreuses fonctionnalités du protocole qui étaient traditionnellement difficiles à utiliser. En particulier, des messages volumineux, éventuellement codés en bloc. L'interface prend soin de ne jamais mettre en mémoire tampon des demandes ou des réponses entières - l'utilisateur peut diffuser des données.
https
HTTPS est le protocole HTTP sur TLS / SSL. Dans Node.js, ceci est implémenté en tant que module séparé.
module
Node.js a un système de chargement de module simple. Dans Node.js, les fichiers et les modules sont en correspondance directe (chaque fichier est traité comme un module distinct).
net
Le module net
vous fournit un wrapper réseau asynchrone. Il contient des fonctions pour créer à la fois des serveurs et des clients (appelés flux). Vous pouvez inclure ce module avec require('net');
.
os
Le module os
fournit un certain nombre de méthodes utilitaires liées au système d'exploitation.
chemin
Le module path
fournit des utilitaires pour travailler avec des chemins de fichiers et de répertoires.
punycode
La version du module punycode intégrée à Node.js est obsolète .
chaîne de requête
Le module querystring
fournit des utilitaires pour analyser et formater les chaînes de requête URL.
Le module readline
fournit une interface pour lire les données à partir d’un flux lisible (tel que process.stdin
) une ligne à la fois.
repl
Le module repl
fournit une implémentation REPL (Read-Eval-Print-Loop) disponible à la fois en tant que programme autonome ou dans d'autres applications.
Un flux est une interface abstraite pour travailler avec des données en continu dans Node.js. Le module de stream
fournit une API de base qui facilite la création d'objets qui implémentent l'interface de flux.
Il y a beaucoup d'objets de flux fournis par Node.js. Par exemple, une requête sur un serveur HTTP et process.stdout
sont des instances de flux.
string_decoder
Le module string_decoder
fournit une API pour décoder les objets Buffer
en chaînes de manière à préserver les caractères codés sur plusieurs octets UTF-8 et UTF-16.
minuteries
Le module de timer
expose une API globale pour les fonctions de planification à appeler ultérieurement. Comme les fonctions du minuteur sont des globales, il n'est pas nécessaire d'appeler require('timers')
pour utiliser l'API.
Les fonctions du minuteur dans Node.js implémentent une API similaire à celle de l'API de temporisation fournie par les navigateurs Web, mais utilisent une implémentation interne différente basée sur la boucle d'événement Node.js.
tls_ (ssl)
Le module tls
fournit une implémentation des protocoles TLS (Transport Layer Security) et SSL (Secure Socket Layer) basés sur OpenSSL.
tracé
Trace Event fournit un mécanisme permettant de centraliser les informations de traçage générées par V8, Node core et le code de l'espace utilisateur.
Le suivi peut être activé en passant l' --trace-events-enabled
lors du démarrage d'une application Node.js.
tty
Le module tty
fournit les classes tty.ReadStream
et tty.WriteStream
. Dans la plupart des cas, il ne sera pas nécessaire ou possible d'utiliser ce module directement.
dgram
Le module dgram
fournit une implémentation des sockets UDP Datagram.
URL
Le module url
fournit des utilitaires pour la résolution et l'analyse syntaxique des URL.
util
Le module util
est principalement conçu pour répondre aux besoins des API internes de Node.js. Cependant, de nombreux utilitaires sont également utiles pour les développeurs d'applications et de modules.
v8
Le module v8
expose les API spécifiques à la version de V8 intégrée au binaire Node.js.
Remarque : Les API et l'implémentation sont susceptibles d'être modifiées à tout moment.
vm
Le module vm
fournit des API pour compiler et exécuter du code dans les contextes de machine virtuelle V8. Le code JavaScript peut être compilé et exécuté immédiatement ou compilé, enregistré et exécuté plus tard.
Remarque : Le module vm n'est pas un mécanisme de sécurité. Ne l'utilisez pas pour exécuter du code non fiable .
zlib
Le module zlib
fournit des fonctionnalités de compression implémentées avec Gzip et Deflate / Inflate.
Comment faire fonctionner un serveur Web HTTPS de base!
Une fois que node.js est installé sur votre système, vous pouvez simplement suivre la procédure ci-dessous pour obtenir un serveur Web de base compatible avec HTTP et HTTPS!
Étape 1: créer une autorité de certification
Créez le dossier dans lequel vous souhaitez stocker votre clé et votre certificat:
mkdir conf
allez dans ce répertoire:
cd conf
récupérer ce fichier
ca.cnf
à utiliser comme raccourci de configuration:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
créer une nouvelle autorité de certification en utilisant cette configuration:
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
Maintenant que nous avons notre autorité de certification dans
ca-key.pem
etca-cert.pem
, générons une clé privée pour le serveur:openssl genrsa -out key.pem 4096
récupérer ce fichier
server.cnf
à utiliser comme raccourci de configuration:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
générer la demande de signature de certificat en utilisant cette configuration:
openssl req -new -config server.cnf -key key.pem -out csr.pem
signer la demande:
openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem
Étape 2: installez votre certificat en tant que certificat racine
copiez votre certificat dans le dossier de vos certificats racine:
sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem
mettre à jour le magasin CA:
sudo update-ca-certificates
Étape 3: Démarrer votre serveur de noeud
Tout d'abord, vous voulez créer un fichier server.js
contenant votre code de serveur actuel.
La configuration minimale pour un serveur HTTPS dans Node.js serait la suivante:
var https = require('https');
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('path/to/server-key.pem'),
cert: fs.readFileSync('path/to/server-crt.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
https.createServer(httpsOptions, app).listen(4433);
Si vous souhaitez également prendre en charge les requêtes http, vous devez apporter cette petite modification:
var http = require('http');
var https = require('https');
var fs = require('fs');
var httpsOptions = {
key: fs.readFileSync('path/to/server-key.pem'),
cert: fs.readFileSync('path/to/server-crt.pem')
};
var app = function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}
http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
allez dans le répertoire où se trouve votre
server.js
:cd /path/to
lancez
server.js
:node server.js