Guide du débutant pour Node.js (JavaScript côté serveur)
Node.js - en termes simples - est JavaScript côté serveur. Il y a eu beaucoup de buzz ces jours-ci. Si vous en avez entendu parler ou si vous êtes intéressé à apprendre et à mettre la main à la pâte, cet article est pour vous..
Alors, quel est exactement le besoin d'utiliser JavaScript sur le serveur? Pour rendre le concept de Node.js clair, je voudrais le comparer aux langages ordinaires côté serveur tels que PHP. Node.js utilise un procédure d'exécution de serveur basée sur des événements plutôt que l'exécution multithread en PHP.
Pour l'expliquer davantage, nous allons parler de l'idée de Qu'est-ce que Node.js? avec certains suggestions de fournisseur d'hébergement et conseils d'installation. Des connaissances de niveau intermédiaire en JavaScript, jQuery et Ajax sont requises, mais nous vous fournirons également des exemples pour vous aider à comprendre tout le processus et même à y travailler, alors apprenons-en davantage sur Node.js!
Considérons un cas:
Considérons un site Web sur lequel vous devez charger du contenu de manière dynamique à partir d'un autre serveur Web, ce qui est lent. En PHP, vous pouvez le faire de 2 manières - le coder dans un fichier simple et codant comme un autre script, puis l'exécuter dans une approche multithread.
Dans la première méthode même si le code est simple l'exécution s'arrête un moment au point d'accès au serveur Web lent. La deuxième méthode est plus optimisé en cas de performance mais c’est difficile à coder et il ya une surcharge de gestion multithread. Le cas est similaire pour la plupart des langages de programmation Web autres que le JavaScript côté serveur, c’est-à-dire Node.js..
Quelle est la différence dans Node.js? Pour comprendre Node.js, vous devez garder à l’esprit les Programmation événementielle JavaScript dans le navigateur. Nous utilisons la même technologie ici. Au lieu d’utiliser un thread séparé, un la fonction est attachée à l'événement d'arrivée du “lent accès au serveur Web” mentionné ci-dessus, vous obtenez ainsi le fonctionnalité complète dans la deuxième option optimisée mentionnée ci-dessus sans aucune surcharge multithread.
Débuter avec Node.js
Node.js est JavaScript. Pourquoi ne pouvons-nous pas utiliser la fonctionnalité JavaScript basée sur les événements du client au serveur? Cette pensée aurait pu conduire au développement de Node.js.
Cela dit, le point fort de Node.js - ce sont des fonctions asynchrones basées sur des événements. Il utilise un boucle d'événement au lieu d'attendre les opérations d'E / S (accès au service Web externe, accès au matériel).
Node.js pourrait encore utiliser sa puissance de traitement lorsque le serveur attend une autre opération. Cela fait Node.js évolutif à des millions de connexions simultanées.
Comment JavaScript s'exécute-t-il sur un serveur??
Node.js fonctionne sur un environnement v8 - c’est un machine virtuelle ou un Moteur JavaScript qui exécute le code JavaScript, vous ne pouvez donc pas utiliser les hôtes Web ordinaires pour l'hébergement. Vous aurez besoin de ceux qui ont le environnement v8.
Voici quelques suggestions de fournisseurs pour l'hébergement Node.js:
- Fonderie Cloud
- Cloudnode
- DotCloud
- Duostack
Installation de Node.js
Node sera fonctionne parfaitement sur les systèmes d'exploitation Linux, Macintosh et Solaris. Sous Windows, vous pouvez l'installer à l'aide de la couche d'émulation Cygwin. Aucune des versions de Windows n’est satisfaisante, mais il est toujours possible d’exécuter quelque chose.
Option 1: nœud de construction à partir du source.
Utilisation faire
pour construire et installer node.js (exécuter ce qui suit sur la ligne de commande). Git est requis.
git clone --depth 1 git: //github.com/joyent/node.git noeud cd git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ ACCUEIL / local / noeud make make install echo 'export PATH = $ HOME / local / noeud / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / noeud: $ HOME / local / noeud / lib / node_modules' >> ~ / .profile source ~ / .profile
Option 2: Installation de Node.js à partir d'un package
Pour les utilisateurs Mac, vous pouvez installer Node.js en tant que package à partir de https://sites.google.com/site/nodejsmacosx/, ce qui est assez explicite..
Test de l'installation du nœud
Afin de vérifier que votre installation de nœud a réussi, nous pouvons essayer un programme très simple, la console "Hello World". Créez un fichier nommé "test.js"et écrivez le code suivant.
var sys = require ("sys"); sys.puts ("Hello World");
Explication du code:
Il charge le sys
classe dans une variable sys
. Il utilise ensuite le sys
objet pour effectuer les tâches de la console. le sys.puts
est une commande similaire à la cout
en C ++, pour exécuter le script ci-dessus, accédez à l'invite de commande et exécutez-le à l'aide de la commande ci-dessous:
noeud test.js
Si votre installation réussit, vous obtiendrez une sortie hello world à l'écran..
Création d'un serveur HTTP
Il est maintenant temps de créer un "Hello World" via un serveur Web à l'aide de Node.js. Voici ce que nous allons faire - nous créer un serveur qui génère un “Bonjour le monde” à l'hôte local sur le port 8080 peu importe ce que l'URL est, vous donner une idée de ce que un événement est.
Les codes:
var sys = require ("sys"), my_http = require ("http"); my_http.createServer (fonction (demande, réponse) sys.puts ("Je me suis fait botter"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); response.end ();). listen (8080); sys.puts ("serveur fonctionnant sur 8080");
Explication du code:
La partie la plus intéressante de Node.js est sa programmation par événements. Pour créer un serveur HTTP, nous avons besoin de la Bibliothèque HTTP, donc nous allons de l'avant et l'ajoutons en utilisant mon_http
. Nous créons serveur par la fonction:
my_http.createServer (fonction (demande, réponse) ). listen (8080);
La fonction donnée comme premier argument est exécutée chaque fois qu'un événement est déclenché sur le port 8080, donc la fonction elle-même suggère au nœud d'écouter un événement sur le port 8080. Afin de détecter ceci, j'ai ajouté un “J'ai eu un coup de pied” message qui sera affiché sur l'écran de la console chaque fois qu'une demande est reçue.
le demande
objet contient toutes les informations sur la demande qui a été faite au serveur. Par exemple, il contient la chaîne d'URL. le réponse
objet est l'objet qui gère la réponse du serveur. Nous définissons d'abord l'en-tête de la réponse en tant que texte simple
contenu, puis sorties “Bonjour le monde“, puis termine le flux de sortie. 200 est la réponse d'état.
L’exemple ci-dessus est un exemple très simple, mais nous pouvons voir que quelle que soit l’URL que nous donnons dans le navigateur pour le même serveur, nous obtenons le même résultat, comme “Bonjour le monde”.
Créer un serveur de fichiers statique simple
Créons un serveur de fichiers statique simple dans le prochain tutoriel.
Les codes:
var sys = require ("sys"), my_http = require ("http"), chemin = require ("chemin"), url = require ("url"), filesys = require ("fs"); my_http.createServer (function (requête, réponse) var mon_path = url.parse (request.url). nom de chemin; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, path (existe ) if (! existe) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 introuvable" \ n "); response.end (); sinon filesys.readFile (chemin_complet, "binaire", fonction (err, fichier) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (fichier, "binaire"); response.end ();)). écoutez (8080); sys.puts ("serveur fonctionnant sur 8080");
Explication des codes:
Le code ci-dessus est assez simple, nous en discuterons sous forme de blocs.
var sys = require ("sys"), my_http = require ("http"), chemin = require ("chemin"), url = require ("url"), filesys = require ("fs");
Toutes ces bibliothèques sont nécessaires pour le programme. Son utilisation sera claire dans le code suivant.
var my_path = url.parse (request.url) .pathname; var chemin complet = chemin.join (processus.cwd (), mon chemin);
le demande
objet a les détails de la demande comme nous en avons discuté plus tôt. Nous utilisons le analyser
fonction de la classe d'URL que nous avons incluse pour obtenir le chemin d'accès
de l'URL de la demande. Après avoir obtenu le nom du chemin, nous le concaténons avec le chemin du répertoire de travail en cours pour obtenir le chemin complet du fichier..
Pour joindre des URL, nous avons une fonction appelée joindre
dans la bibliothèque de chemins.
path.exists (chemin_complet, fonction (existe))
Après avoir obtenu le chemin complet, nous vérifions si le chemin existe par la fonction existe
. Une fois la vérification effectuée, la fonction de rappel est appelée et transmise comme second argument..
if (! existe) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 non trouvé \ n"); response.end (); else filesys.readFile (chemin_complet, "binaire", fonction (erreur, fichier) if (erreur) response.writeHeader (500, "Content-Type": "text / plain"); réponse.write ( err + "\ n"); response.end (); else response.writeHeader (200); response.write (fichier, "binaire"); response.end (););
Maintenant, dans la fonction de rappel, si le fichier n'existe pas, nous envoyons un "404 Page non trouvée" Erreur.
Si la page est trouvée, nous lisons le fichier par le readFile
fonction dans le système de fichiers. Nous pouvons également voir la fonction de rappel pour le readFile
fonction définie ici même. S'il n'y a pas d'erreur dans la lecture du fichier, il sera affiché. En cas d'erreur, un statut 500 est renvoyé avec le texte de l'erreur..
Je recommande également de regrouper les codes du didacticiel précédent dans une fonction afin de pouvoir l'utiliser dans le prochain didacticiel ou pour une utilisation ultérieure..
var sys = require ("sys"), my_http = require ("http"), chemin = require ("chemin"), url = require ("url"), filesys = require ("fs"); my_http.createServer (function (requête, réponse) var mon_path = url.parse (request.url). nom de chemin; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, path (existe ) if (! existe) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 introuvable" \ n "); response.end (); sinon filesys.readFile (chemin_complet, "binaire", fonction (err, fichier) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + "\ n"); response.end (); else response.writeHeader (200); response.write (fichier, "binaire"); response.end ();)) my_http. createServer (function (requête, réponse) var chemin_mall = url.parse (request.url). nom de chemin; fichier_chargement (chemin_mys, réponse);). listen (8080); sys.puts ("Serveur s'exécutant sur 8080");
Restez à l'écoute !
C'est tout. J'espère que cela vous donne une bonne idée de Node.js. Dans le prochain article, je vais vous montrer comment charger et afficher le nombre de likes de Facebook à l'aide de Node.js. Restez à l'écoute!
Note de l'éditeur: Cet article est écrit par Geo Paul pour Hongkiat.com. Geo est un développeur Web / iPhone indépendant qui aime travailler avec PHP, Codeigniter, WordPress, jQuery et Ajax. Il a 4 ans d'expérience en PHP et 2 ans en développement d'applications iPhone..