Afin de fournir des commentaires différents sur différentes demandes, nous introduisons un module de processeur d'événements.
Le module est nommé demandeurs de demande. Nous ajoutons d'abord deux fonctions d'espace réservé, start () et upload ().
Le code pour demandehandlers.js est le suivant:
La copie de code est la suivante:
fonction start () {
console.log ("Appelez ceci lorsque vous accédez / étoile.");
}
fonction upload () {
console.log ("Appelez ceci lorsque vous accédez / téléchargez.");
}
export.start = start;
exports.upload = upload;
Dans les applications réelles, le nombre de gestionnaires de demandes continuera d'augmenter. Bien sûr, nous ne voulons pas terminer la demande dans l'itinéraire à chaque fois qu'il y a une nouvelle URL ou un nouveau gestionnaire.
Mappage au gestionnaire à plusieurs reprises.
De plus, nous ne voulons pas avoir beaucoup de requête IF == X puis d'appeler le gestionnaire y dans l'itinéraire, ce qui rendra le code en désordre et non professionnel.
Ici, j'utiliserai le concept de tableaux associatifs pour gérer cette exigence. Nous passons une série de gestionnaires de demandes via un objet et devons injecter cet objet dans la fonction Route () de manière lâche.
Présentons d'abord cet objet dans le fichier principal index.js:
La copie de code est la suivante:
var server = require ("./ server");
var routeur = require ("./ routeur");
var requestHandlers = require ("./ requestHandlers");
var handle = {};
manipuler ["/"] = requestHandlers.start;
manipuler ["/ start"] = requestHandlers.start;
gérer ["/ upload"] = requestHandlers.upload;
server.start (router.route, manche);
Par exemple, si je veux ajouter une carte A / Show, ajoutez simplement une poignée ["/ show"] requestHandlers.show;
Haha, le code est-il beaucoup plus concis et ordonné? !
Ensuite, nous passons l'objet de poignée au serveur et le serveur.js est modifié comme suit:
La copie de code est la suivante:
var http = require ("http");
var url = require ("url");
Fonction Start (route, manche) {
fonction onRequest (demande, réponse) {
var pathname = url.parse (request.url) .pathname;
console.log ("Demande pour" + pathname + "reçu.");
Route (manche, chemin de chemin);
Response.WriteHead (200, {"Content-Type": "Text / Plain"});
Response.Write ("Hello World");
réponse.end ();
}
http.createServer (onRequest) .Listen (8888);
console.log ("Server a commencé.");
}
export.start = start;
Modifiez la fonction Route () dans le fichier Route.js en conséquence:
La copie de code est la suivante:
Route de fonction (manche, cheminement) {
console.log ("sur le point d'acheter une demande pour" + pathname);
if (typeof handle [pathname] === 'function') {
manipuler [pathName] ();
} autre {
console.log ("Aucun gestionnaire de demande trouvé pour" + pathName);
}
}
export.Route = Route;
Nous transmettons l'objet de poignée en tant que paramètre au serveur, puis le recevons par l'itinéraire, et finalement l'itinéraire détermine si le gestionnaire de demande correspondant au chemin actuel existe ou non. S'il existe, appelez la fonction correspondante.
Nous pouvons obtenir la fonction de gestion de la demande de l'objet passé de la même manière que d'obtenir des éléments du tableau associatif, nous avons donc une expression simple et fluide comme la poignée [PathName] ();, qui ressemble à celle mentionnée plus tôt: "Salut, s'il vous plaît, aidez-moi à gérer ce chemin".
De cette façon, nous pouvons effectuer différents traitements en fonction des différentes demandes.
Dans la section suivante, nous réviserons davantage le code pour permettre au serveur de faire des opérations de rétroaction réelles.