Qu'est-ce que le nœud?
Il est préférable d'essayer de tout couvrir lors de l'écriture de quelque chose, donc j'ai également pris quelques concepts de base sur Internet. Certains endroits ont changé leur compréhension de la mienne. Si vous comprenez ces choses conceptuelles, vous pouvez choisir de sauter ce paragraphe.
1.Node est un interprète JavaScript côté serveur, mais je pense vraiment que les étudiants qui sont bons en JavaScript peuvent facilement obtenir le nœud en apprenant le nœud, vous vous trompez donc. Résumé: Je ne sais pas si l'eau est profonde ou non, mais elle n'est en effet pas superficielle.
2.NODE L'objectif est d'aider les programmeurs à créer des applications hautement évolutives et à écrire des codes de connexion qui peuvent gérer des dizaines de milliers de connexions à une machine physique en même temps. La gestion des E / S d'une grande concurrence et asynchrones est l'une des raisons pour lesquelles Node a attiré l'attention des développeurs.
3.Node lui-même exécute le moteur JavaScript Google V8, donc la vitesse et les performances sont très bonnes. Vous pouvez le voir en regardant Chrome. De plus, bien que le nœud le résume, il améliore également sa capacité à traiter les données binaires. Par conséquent, le nœud utilise non seulement V8, mais l'optimise également pour le rendre plus puissant dans divers environnements. (Qu'est-ce que le moteur JavaScript V8? S'il vous plaît "Baidu Know")
4. Les extensions et les modules tiers jouent un rôle important dans l'utilisation du nœud. Ce qui suit introduira également le téléchargement NPM. NPM est l'outil de gestion des modules. Utilisez-le pour installer divers packages de logiciels de nœuds (tels que Express, Redis, etc.) et publiez les packages logiciels que vous avez écrits pour Node.
Installer le nœud
Voici une brève introduction à l'installation de nœud dans deux environnements: Windows 7 et Linux. Lors de l'installation, vous devez faire attention à la version Python. L'installation a échoué plusieurs fois en raison de problèmes avec la version Python. Il est recommandé que la version 2.6+ aura des erreurs d'installation de nœuds. Si vous interrogez la version Python, vous pouvez entrer: Pyhton -v
1. Présentez d'abord l'installation sous Linux. Le nœud est très pratique à installer et à utiliser dans un environnement Linux. Il est recommandé d'exécuter le nœud sous Linux. ^ _ ^ ... J'utilise Ubuntu11.04
un. Package de dépendance à l'installation: 50-100kb / s Chaque package peut être téléchargé et installé en une minute.
La copie de code est la suivante:
sudo apt-get install g ++ curl libssl-dev apache2-utils
sudo apt-get install git-core
né Exécutez la commande étape par étape du terminal:
La copie de code est la suivante:
git clone git: //github.com/joyent/node.git
nœud CD
./configure
Faire
sudo faire l'installation
Si l'installation est fluide, le nœud sera installé avec succès et il faudra un total de 12 minutes pour le réseau 2M.
Remarque: Si vous n'utilisez pas GIT pour télécharger le code source, vous pouvez télécharger directement le code source, mais que vous devez faire attention au problème de la version du nœud lors du téléchargement et de l'installation de cette façon. Il est le plus pratique de télécharger et d'installer en utilisant GIT, il est donc recommandé.
2. Utilisez Cygwin pour installer le nœud sur Windows. Cette méthode n'est pas recommandée car elle prend vraiment beaucoup de temps et de bon caractère. Mon système est la version phare Win7
Cygwin est un environnement de simulation UNIX fonctionnant sur la plate-forme Windows. L'adresse de téléchargement est: http://cygwin.com/setup.exe.
Après avoir téléchargé Cygwin, démarrez l'installation. Mesures:
un. Sélectionnez la source de téléchargement - Installer à partir d'Internet
né Sélectionnez le répertoire racine pour télécharger et installer
c. Sélectionnez le répertoire où le fichier de téléchargement est stocké
d. Choisissez la méthode de connexion
e. Sélectionnez le site Web à télécharger - http://mirrors.163.com/cygwin
f. Le problème est à cette étape, le moment est venu de tester votre personnage. Le temps de téléchargement et d'installation requis est incertain. Quoi qu'il en soit, cela prend beaucoup de temps (plus de 20 minutes) et la défaillance de l'installation se produit occasionnellement. Cliquez sur l'icône de flèche rotative devant chaque package pour sélectionner la version souhaitée. Lorsqu'il est sélectionné, le panneau "X" semble indiquer que le package a été sélectionné. Sélectionnez le package que vous souhaitez télécharger:
La copie de code est la suivante:Package de développement:
GCC-G ++: compilateur C ++
GCC-MingW-G ++: MingW32 Support les en-têtes et bibliothèques pour GCC C ++
GCC4-G ++: sous-package G ++
git: Files de base du système de contrôle de version rapide
Make: La version GNU de l'utilitaire «Make»
OpenSSL-Devel: l'environnement de développement OpenSSL
PKG-Config: Un utilitaire utilisé pour récupérer des informations sur les bibliothèques installées
Zlib-devel: la bibliothèque de compression / décompression ZLIB (développement)
Package d'éditeur: VIM: VI Amélioration de l'éditeur amélioré
Package Python: Pasculez par défaut pour installer l'état
Package Web:
WGET: utilitaire pour récupérer des fichiers à partir du www via HTTP et FTP
Curl: outil de ligne de commande de transfert de fichiers multi-protocole
Capture d'écran précédente, prenez le téléchargement de zlib-devel à titre d'exemple:
Après quelques étapes, l'environnement est terminé. Cependant, il n'est pas encore temps d'installer le nœud. Vous devez toujours exécuter RebaseALL en mode cendre de Cywgin. Les étapes sont les suivantes:
un. ligne de commande CMD
né Entrez le sous-répertoire du bac dans le répertoire d'installation de Cygwin
c. Exécutez les cendres pour entrer en mode Shell
d. ./rebaseAll -v
e. Fermez la fenêtre de ligne de commande sans erreurs
Ok, il est maintenant temps de télécharger et d'installer le nœud, de démarrer cygwin.exe et de saisir:
La copie de code est la suivante:
$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
$ tar xf nœud-v0.4.12.tar.gz
$ CD Node-V0.4.12
$. / Configurer
$ faire
$ faire l'installation
3. Download node.exe fichier directement
Accédez directement à Nodejs.org pour télécharger. J'ai entendu dire qu'il y avait des problèmes instables, mais si vous voulez simplement en savoir plus sur le nœud dans Windows, je pense personnellement que cette méthode est bien meilleure que d'installer Cygwin.
Remarque: je ne voulais pas vraiment écrire le paragraphe de l'installation de nœud, mais je l'ai toujours écrit pour l'exhaustivité de cet article. Je ne m'attendais pas à ce que ce soit tant que je l'ai écrit ... c'est une table basse
"Hello World" - Pourquoi je me sens un peu excité à chaque fois que je vois cette phrase, et je suis perplexe ...
Tout d'abord, créez un fichier hello.js et copiez le code suivant dans le fichier:
La copie de code est la suivante:
var http = require ('http');
http.createServer (fonction (req, res) {
res.writeHead (200, {'Content-Type': 'Text / PLAIN'});
res.end ('Hello World / N');
}). écouter (1337, "127.0.0.1");
console.log ('Server en cours d'exécution sur http://127.0.0.1:1337/');
Logique de code:
un. La méthode globale requiert () est utilisée pour importer des modules. Généralement, la valeur de retour de la méthode require () est attribuée directement à une variable, et cette variable est utilisée directement dans le code JavaScript. require ("http") est de charger le module HTTP prédéfini du système
né http.createServer est la méthode d'un module, le but est de créer et de renvoyer un nouvel objet de serveur Web et de lier un rappel au service pour gérer la demande.
c. Le serveur HTTP peut être écouté sur un port spécifique via la méthode http.Listen ().
d. Console.log inutile de dire que ceux qui connaissent Firebug doivent savoir que Node implémente cette méthode.
Remarque: Pour plus de détails, veuillez consulter le document Cnodejs.org/cman/all.html#http.createserver
Ensuite, exécutez le serveur de nœuds, exécutez le code hello.js, et après avoir commencé avec succès, vous verrez le texte dans console.log (). Il y a des images et de la vérité:
Télécharger et utiliser le NPM
En plus de l'API fournie par le nœud lui-même, il existe désormais de nombreux modules tiers qui peuvent considérablement améliorer l'efficacité du développement. NPM est le gestionnaire de packages de Node, qui peut l'utiliser pour installer les packages logiciels requis et publier les packages logiciels écrits pour NodeJS. Adresse officielle du site Web: npmjs.org
L'installation ne nécessite qu'une seule ligne de code dans le terminal:
La copie de code est la suivante:
Curl http://npmjs.org/install.sh | shot
NPM installe le package d'extension de nœud avec la même ligne de code:
La copie de code est la suivante:
NPM Install <Nom du package> // Exemple: NPM Install Express
Remarque: Si l'erreur de nom de domaine est signalée lors de l'installation du module, veuillez effacer le cache> Cache NPM Nettoyer ou redémarrer l'ordinateur.
Comprendre le concept de module de nœud
Dans le nœud, différentes composantes fonctionnelles sont divisées en différents modules. L'application peut choisir et utiliser le module approprié en fonction de ses besoins. Chaque module exposera certaines méthodes ou attributs communs. L'utilisateur du module peut utiliser ces méthodes ou ces attributs directement, et il n'est pas nécessaire de comprendre les détails de l'implémentation interne. En plus de l'API fournie par le nœud lui-même, les développeurs peuvent également utiliser ce mécanisme pour diviser les applications en plusieurs modules pour améliorer la réutilisabilité du code.
1. Comment utiliser des modules?
Il est très pratique d'utiliser des modules dans le nœud. Dans le code JavaScript, vous pouvez directement utiliser la fonction globale requis () pour charger un module.
Dans l'exemple "Hello World" tout à l'heure, require ("http") peut charger le module HTTP préréglé système; Le nom du module commence par "./", tel que requis ("./ mymodule.js") pour charger le module mymodule.js dans le même répertoire que le fichier JavaScript actuel.
2. Comment développer des modules par vous-même?
Lorsque je viens d'introduire que lors de l'utilisation de require () pour importer un module, le nom du module commence par "./" est le fichier de module que j'ai développé par moi-même. Ce à quoi vous devez faire attention, c'est le chemin du système du fichier JS.
La logique de traitement interne du module est encapsulée dans le code. Un module exposera généralement certaines méthodes ou attributs publics à utiliser d'autres personnes. Le code interne du module doit exposer ces méthodes ou ces attributs.
3. Prenons un simple ensemble d'exemples. Créez d'abord un fichier de module tel que mymodule.js, juste une ligne de code
Console.log («Hi Darren»)
Créez ensuite un fichier test.js, importez ce fichier JS et exécutez le nœud pour voir les résultats
Il existe maintenant de nombreux modules tiers dans la communauté des nœuds. J'espère que plus de gens pourront rejoindre cette grande famille en apprenant le nœud et contribuer à la communauté des nœuds. Merci d'avance, continuons.
4. Prenez un exemple plus profond. Dans cet exemple, privé et partagé seront introduits. Créez d'abord un mymodule.js, le code est le suivant:
La copie de code est la suivante:
var name = "darren";
this.location = "beijing";
this.shOwlog = function () {
Console.log («Hi Darren»)
};
Il existe trois types dans le code, à savoir: attributs privés, attributs partagés et méthodes partagées, puis créer un test.js et exécuter le nœud
Le domaine mis en évidence nous dit clairement que nous ne pouvons pas obtenir des méthodes privées en dehors du module, donc elles ne sont pas définies. La déclaration d'attributs partagés et de méthodes partagées doit être précédée par le mot clé.
Ce que le nœud peut faire et ses avantages
Idées de nœud de nœud: 1. Non-blocage; 2. Unique; 3. Axé sur les événements.
Dans les applications Web actuelles, certaines interactions entre le client et le serveur peuvent être considérées comme basées sur des événements, donc Ajax est la clé de la réponse opportune de la page. Chaque fois qu'une demande est envoyée (quelle que soit la petite taille des données demandées), elle va et vient sur le réseau. Le serveur doit répondre à cette demande, ouvrant généralement un nouveau processus. Ensuite, plus les utilisateurs visitent cette page, plus ils seront lancés demandes et il y aura des problèmes tels que le débordement de la mémoire, les conflits causés par l'entrelacement logique, la paralysie du réseau et les accidents du système.
L'objectif de Node est de fournir une solution pour créer des applications de réseau évolutives. Dans l'exemple Hello World, le serveur peut gérer de nombreuses connexions client en même temps.
Le nœud et le système d'exploitation ont une convention selon laquelle si un nouveau lien est créé, le système d'exploitation informera le nœud puis ira à l'hibernation. Si quelqu'un crée un nouveau lien, il (nœud) exécute un rappel, chaque lien ne prenant qu'une très petite surcharge de pile (mémoire).
Prenez un exemple simple d'appels asynchrones, préparez le test.js et mymydule.js, ^ _ ^. Copiez le code suivant dans test.js et exécutez:
La copie de code est la suivante:
var fs = require ('fs');
fs.readfile ('./ mymodule.js', fonction (err, data) {
si (err) jetez ERR;
console.log («avec succès»);
});
console.log ('async');
Asynchrone, tout le monde devrait être en mesure de penser que l'exécution affichera d'abord "async" puis "réussir".
Le nœud est non bloquant et lorsqu'une nouvelle demande arrive sur le serveur, il n'est pas nécessaire de faire quoi que ce soit séparément pour cette demande. Le nœud attend simplement que la demande se produise là-bas et gère la demande en cas de demande.
Le nœud est meilleur pour gérer les demandes de petite taille et les E / S basées sur des événements.
Le nœud n'est pas seulement un framework pour fabriquer un service Web, il peut faire plus, tels qu'il peut faire des services de socket, par exemple, basés sur des fichiers, puis sur la base de certains exemples, il peut y avoir des processus enfants, et en interne, il s'agit d'un mécanisme d'événements très complet, y compris certaines solutions non injection asynchrones, plutôt que de se limiter à la première couche du réseau. Dans le même temps, il peut, même en tant que service Web, fournir plus de fonctions qui peuvent pénétrer dans le noyau de service et le noyau. Par exemple, l'agent HTTP utilisé par Node, est qu'il peut pénétrer dans le noyau de service et faire certaines fonctions.
Concept de flux d'événements de nœud
Étant donné que le nœud adopte un mode axé sur les événements, de nombreux modules généreront divers événements et le module peut ajouter des méthodes de traitement des événements. Tous les objets qui peuvent générer des événements sont des instances de la classe EventEmitter dans le module événementiel. Le code est une langue commune du monde entier, nous utilisons donc toujours du code pour parler:
La copie de code est la suivante:
var Events = require ("Events");
var emiter = new events.EenteMitter ();
emiter.on ("MyEvent", fonction (msg) {
console.log (msg);
});
emiter.emit ("MyEvent", "Hello World.");
Une brève analyse de ce paragraphe:
1. Utilisez la méthode requise () pour ajouter du module d'événements et affecter la valeur de retour à une variable
2. La phrase des nouveaux événements.Eventittetter () crée un déclencheur d'événements, qui est la soi-disant instance de la classe EventEmitter dans le module d'événement.
3. On (événement, auditeur) est utilisé pour ajouter un gestionnaire d'événements à un événement événementiel
4. La méthode EMIT (Event, [Arg1], [Arg2], [...]) est utilisée pour générer des événements. Chaque fonction d'écoute dans la liste des écouteurs est exécutée séquentiellement avec les paramètres fournis comme paramètres de la fonction d'écoute.
Les méthodes de la classe EventEmitter sont liées à la génération et au traitement des événements:
1. AddListener (événement, écouteur) et sur (événement, écouteur) sont les deux méthodes qui ajoutent un auditeur à la fin du tableau d'écouteur de l'événement spécifié.
2. Une fois (événement, écouteur) Cette méthode ajoute un écouteur unique pour les événements. L'auditeur est exécuté lorsque l'événement est licencié pour la première fois et sera supprimé par la suite
3. RemoveListener (événement, écouteur) Cette méthode est utilisée pour supprimer l'auditeur du tableau d'écouteur de l'événement spécifié.
4. Emit (Event, [Arg1], [Arg2], [...]) vient de mentionner.
Dans Node, il existe différents flux de données et Stream est une interface abstraite implémentée par différents objets. Par exemple, la demande de demande d'un serveur HTTP est un flux, similaire à STDOUT (sortie standard); y compris le système de fichiers, les demandes et réponses HTTP et les connexions TCP / UDP. Le flux peut être lisible, écrit ou à la fois lisible et écrivatif. Tous les flux sont des instances de EventEmitter, donc divers événements peuvent être générés.
Un flux lisible produit principalement les événements suivants:
1.DATA Cet événement est déclenché lorsque les données du flux sont lues.
2.And quand il n'y a pas de données dans le flux à lire, cet événement est déclenché
3. ERROR Cet événement est déclenché lorsqu'une erreur se produit lors de la lecture des données.
4.Closez lorsque le flux est fermé, cet événement est déclenché, mais tous les flux ne déclencheront pas cet événement. (Par exemple, un flux de demande HTTP entrant dans une connexion ne déclenchera pas l'événement «Close».)
Il existe également un événement FD plus spécial, qui est déclenché lorsqu'un descripteur de fichier est reçu dans le flux. Seuls les flux UNIX prennent en charge cette fonctionnalité, et aucun autre type de flux ne déclenchera cet événement.
Documentation détaillée connexe: http://cnodejs.org/cman/all.html#events_
Module système de fichiers de fichiers puissant
Le module FS dans le nœud est utilisé pour fonctionner sur le système de fichiers local. Les E / S du fichier sont encapsulées par la fonction POSIX standard. Ce module doit être accessible en utilisant require («fs»). Toutes les méthodes fournissent des méthodes asynchrones et synchrones.
Les méthodes fournies dans le module FS peuvent être utilisées pour effectuer des opérations de fichiers de base, notamment la lecture, l'écriture, le renommer, la création et la suppression des répertoires et l'obtention de métadonnées de fichier. Chaque méthode d'exploitation des fichiers a deux versions: des versions synchrones et asynchrones.
Les versions des opérations asynchrones utiliseront une méthode de rappel comme dernier paramètre. Une fois l'opération terminée, la méthode de rappel sera appelée. Le premier paramètre de la méthode de rappel est toujours réservé comme une exception qui peut se produire pendant le fonctionnement. Si l'opération est correcte et réussie, la valeur du premier paramètre est nulle ou non définie.
Le nom de la méthode de la version de fonctionnement synchrone consiste à ajouter une synchronisation comme suffixe après la méthode asynchrone correspondante. Par exemple, la version synchrone de la méthode Asynchrone Rename () est RenameNyC (). Le suivant répertorie certaines méthodes courantes dans le module FS et n'introduit que la version de l'opération asynchrone.
Les fichiers test.js et mymodules.js sont-ils prêts? Copiez le code suivant dans test.js une fois
La copie de code est la suivante: var fs = require ('fs');fs.unlink ('./ mymodule.js', fonction (err) {
si (err) jetez ERR;
Console.log («Suppression avec succès mymodule.js»);
});
S'il n'y a pas d'erreur, Mymodule.js sera supprimé. C'est aussi simple
Ce n'est qu'un exemple simple. Si vous êtes intéressé, essayez-le vous-même et pratiquez la vérité. Pour des raisons d'espace, je ne donnerai pas de nombreux exemples. ^ _ ^
Un résumé du nœud d'apprentissage:
1. Pour moi, qui n'a presque aucune connaissance des commandes et des coquilles Linux, j'ai appris beaucoup de connaissances sur Linux pendant cette période. VIM est vraiment un éditeur puissant, et il fait vraiment du bien de ne pas utiliser de souris; Et une chose est très importante pour moi. La programmation sous Linux est très cool, en particulier dans l'équipe, qui est utilisée pour installer plus sainement ^ _ ^.
2. Comprendre un framework réussi pour le nœud JavaScript côté serveur, ainsi que certains de ses avantages et de son utilisation, cet article est le meilleur résumé, bien sûr, ce ne sera que le début.
Certaines choses à dire à tout le monde:
1. Je dois prendre l’enthousiasme de certaines personnes ici. Si vous ne connaissez pas assez la technologie backend ou si vous n'avez jamais été exposé au langage du serveur, ne connaissez pas les E / S et que vous n'avez pas le concept de flux de traitement du backend, alors ... Node n'est pas une technologie côté serveur adapté au niveau d'entrée. Pourquoi le dites-vous:
un. Le point clé est qu'il y a peu d'exemples et d'articles en chinois, il sera donc plus difficile d'apprendre systématiquement, donc il y a toujours un sentiment immature pendant l'utilisation, bien sûr, il est principalement causé par mon méconnaissance. Il n'y a en effet pas beaucoup d'entreprises qui utilisent des nœuds en Chine, et bien sûr, il y en a encore beaucoup à l'étranger. J'ai pris une photo de Cnodejs.org:
3. J'ai en fait des regrets de ne pas entrer dans une entreprise dont je rêve, mais la vie devrait être comme ça, avec des hauts et des bas, ce qui est exactement ce dont j'ai besoin et m'attendre ... alors, je dois toujours continuer ma nouvelle vie, être votre propre responsable, saisir votre propre direction et laisser passer ce qui est passé.
né Pour les amis inexpérimentés, Node n'est pas facile à démarrer. Il peut être vu à partir du «Hello World» le plus simple (la compréhension de divers environnements de fonctionnement et des détails d'installation demande des efforts). Ne comparez pas la bibliothèque jQuery. Les choses gérées sont différentes et les coûts d'apprentissage sont également différents. Par conséquent, il n'est pas recommandé d'être une technologie côté serveur pour les débutants. Si vous souhaitez apprendre un langage côté serveur PHP et Python, c'est un bon choix, car: il existe de nombreux livres, exemples, plusieurs frameworks et de nombreux pratiques, simples et faciles à comprendre et à construire ...
C.Les suggestions personnelles sont mes suggestions personnelles. En raison de mon niveau limité, donnez-moi des conseils et espérons être impitoyables.
2. Je ne suis pas laid sur les normes d'écriture de nœuds et les compétences spécifiques. Je n'ai pas beaucoup de code pour écrire moi-même, mais l'idée de programmation orientée objet est bonne partout.
3. J'espère que cet article sera utile pour que tout le monde apprenne le nœud