L'essentiel de Node.js

Organiser son code avec les exports

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Node.js vous permet d'exporter des portions de code et d'en faire des modules Node. Ainsi, vous conserverez un code source propre et modulaire.
07:53

Transcription

Ok, vous avez vu comment on utilise des modules déjà existants. C’est bien les modules déjà existants, mais ce qui serait intéressant c’est de pouvoir créer ses propre modules. Pourquoi on va créer un module ? Tout simplement ici, parce que ça va être intéressant pour nous de déplacer toute cette logique, les fonctions de getQuestion, ask, etc. dans un module à part qu’on pourrait réutiliser ailleurs. En plus de ça, on va pouvoir rendre ce module eh bien complètement configurable. Comment on crée un module soi-même ? D’abord on crée un fichier ; donc ici on pourrait créer un questionHandler.js et ensuite on va ici simplement se créer une fonction qui va s’appeler par exemple QuestionHandler qui va être une fonction toute bête qui va faire simplement un console.log, test, pour voir que ça fonctionne bien. Et ensuite vous allez simplement avoir à utiliser module.exports, et vous allez renseigner votre QuestionHandler comme la chose à exporter. Alors attention, parce que quand vous allez faire ça, évidemment, ça veut dire que derrière, il va falloir l’importer. Maintenant que c’est fait, on va exporter la fonction, il suffit de l’importer. On va ici se faire une var qa, pour QuestionHandler, Et on va simplement utiliser require comme vous l’avez déjà vu, et on va définir ./ pour dire dans le dossier que on veut ajouter le questionHandler. En faisant ça, vous aller voir qu'en fait, en réalité, ça fonctionne, mais si on lance, il se passe rien, ça démarre le processus. Pourquoi on n'a pas le console.log('test') ? Tout simplement parce que il faudrait ici faire un new qa si on voulait démarrer vraiment la classe, donc, si on voulait vraiment utiliser le module là on aurait effectivement test qui passe Alors le mieux, ce que je vous conseille c’est quand vous avez comme ça des classes que vous avez composées, que vous avez fabriquées, c’est d’exporter un new, directement comme ça vous démarrez avec une instance de cette classe-là, et vous êtes pas embêtés, et au moins vous aurez quelque chose qui démarre vraiment. Ici effectivement, on a bien un test qui apparait. Alors maintenant c’est la partie complexe, puisqu'on a créé un module, vous avez vu comment on en crée un, c’est facile. Maintenant comment je déplace ? Bah écoutez, c’est simple on va prendre tout ce qui fait partie vraiment de la classe c'est-à-dire pour le moment, toute cette partie-là, sachant que le reste ça va être de la configuration et puis je vais enlever la variable person qui me servira à rien. Question et attributes, ce sera mes paramètres, d’accord ? Ici à l’intérieur de ma classe, eh bien je vais simplement faire un copier-coller et je vais adapter un peu parce que comme on est dans une fonction les propriétés et les fonctions vont être rattachées via this donc this.actualIndex, c'est égal à... Ensuite on va avoir un this.getQuestion pareil, qui sera égal à une fonction. Ensuite un this.ask ici qui sera égal et également à une fonction, puisqu'il faut bien faire le reflet de ce qu’on avait et cette partie-là qui fait pas vraiment partie de la classe, qui va être câblée sur rl, on va la sortir et on va lui demander de travailler à l’extérieur. Il va falloir aussi, eh bien prendre cette partie qui est le fonctionnement de rl, donc, ça va avec le readline qu’on a juste au-dessus, donc ces deux lignes-là on va les prendre, on va les enlever de notre serveur ce qui fait que notre serveur va devenir très petit, et va venir utiliser un module à nous, donc ce module, en l'occurence va utiliser readline c’est bien de mettre les bonnes informations dans le module, c'est-à-dire ses dépendances directement dans le module ce qui fait que ça allège votre serveur, ça permet d’avoir les choses réutilisables. Alors maintenant, comment on va le faire fonctionner ? Parce que ça, c’est bien joli mais ça va pas marcher tout seul. Alors on a quelque chose ici qui va être embêtant, c’est toute cette partie-là, ça va marcher, mais en réalité ça risque de nous poser problème. Pour la simple et bonne raison que on va pas pouvoir utiliser comme ça les différentes informations, person, etc. à l’intérieur. ça, on va pas pouvoir le faire, il va falloir forcément se préparer une variable, alors c’est une petite astuce hein, une variable qui va s’appeler that, qui a un reflète this, donc notre fonction, pour pouvoir l'utiliser. Si vous ne le faites pas, vous allez pas pouvoir travailler parce qu’ici vous serez dans le scope d’exécution de la fonction question, ça, on peut le rattacher à this.getQuestion, là ici, il va falloir utiliser un objet, alors qu’on a pu évidemment, donc nous on va le refaire ici, on va se préparer plusieurs choses, on va se préparer les questions, on va se préparer les réponses qui vont être des réponses, donc on va plutôt appeler ça answers plutôt que person. Et on va aussi se préparer les propriétés, propriétés qu’on avait nommées attributes. Donc on va les garder comme ça : this.attributes. Pour le moment ça va pas être trop mal, il faut adapter un peu, c’est du this partout, on l'a dit, donc this, this ici, maintenant on va pouvoir faire des that avec le bon élément, donc on va utiliser « that. » que l’on va répercuter là où on en a besoin, donc ça va faire that.actuelIndex++ that.attributes, that.actuelIndex, ok, that.actuelIndex, that.question.length, on est presque bon. Ça, ça ne marchera pas non plus, parce que là on est pas dans le scope d’execution du questionHandler, donc on va le couper et on va venir le mettre juste avant le close pour avoir un affichage des réponses. Attention, les réponses, c'est maintenant, answers, ce n'est plus person, donc là on commence à être pas trop mal. Deux choses : il va falloir évidemment avoir deux fonctions pour faire un set des questions, et un set des attributes. Ce qui fait que c’est génial parce que maintenant on va pouvoir utiliser ce service-là hein, n’importe où, ce module qu’on aura créé, ce module node, pour jouer des questions et enregistrer les réponses et ça on peut le faire absolument où l’on veut et avec le nombre de questions souhaitées. Donc il va falloir créer un this.setQuestion pour ajouter les questions et venir, bah du coup remplir this.question avec les questions qu’on aura passées et il va falloir faire la même chose, non pas pour les questions, mais pour les attributes. Donc on va faire : this.setAttributes. Essayez de respecter un petit peu le CamelCase comme ça, parce que c’est propre, ça fait quelque chose de sympa. Et puis au moins, vous avez à la fin au final, quelque chose de très très très agréable, et attention parce que c’est une fonction donc = function, de toute façon sinon votre éditeur, il va vous crier dessus, voilà : = function, Alors, si vous voulez pouvoir les enchaîner, set.question, set.Attributes et ensuite ask il va falloir ici faire un return this ça c’est la petite astuce aussi, ça vous permet en fait d’enchaîner les différentes fonctionnalités, vous allez voir que c’est beaucoup plus propre. Dernière modification, celui-là : that.ask sinon ça ne continuera pas à poser de questions, et là on commence à avoir un module qui est carrément propre. Alors maintenant, comment on fait fonctionner ce module ? On a créé le question - ici - Handler, d’ailleurs qu’on devrait plutôt appeller qh pour questionHandler, mais vous pouvez aussi directement l’appeler questionHandler pour que ce soit bien clair. Trois choses : setQuestion, des questions qu’on a ici, ensuite setAttributes, des attributes qu’on a juste au dessus, attributes, et enfin, on pourrait ici appeler définitivement notre module pour qu’il fonctionne. Et pour faire ça, on a toujours cette fonction ask qui existe, et donc on va pouvoir faire un ask. Là vous venez de créer un module complet, vous venez de lui mettre de la logique, et vous venez de le rendre fonctionnel et configurable. On envoie, donc là effectivement hein : - Julien - Que fais-tu dans la vie ? - Dev Et puis : - Quel est ton langage préféré ? - js. Quand ça s’arrête, ça fait le écho, ça fonctionne. Donc on a bien effectivement un retour console et on se rend compte que maintenant on a un module qui est réutilisable absolument partout. Il suffira de faire un require dessus. Vous voyez que c’est pas compliqué, ça va vous demander juste un tout petit peu d’optimisation. Bon bah, c’est logique hein, évidement il faut optimiser les classes, il faut les travailler, il y a un corps de fonctionnalités à mettre en place. Mais voilà, là vous avez un exemple concret de la création d’un module à nous.

L'essentiel de Node.js

Exploitez les possibilités de Node.js et créez des applications côté serveur entièrement en JavaScript. Travaillez avec des requêtes web, gérez le protocole WebSocket, etc.

4h00 (44 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Node.js Node.js 7.0
Spécial abonnés
Date de parution :26 déc. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !