Maison >interface Web >js tutoriel >Implémenter la fonction de routage dans nodejs_node.js

Implémenter la fonction de routage dans nodejs_node.js

WBOY
WBOYoriginal
2016-05-16 16:23:591097parcourir

Lorsque j'ai commencé à apprendre Node, j'ai découvert une situation complètement différente de mes vues précédentes : à quoi sert JavaScript à vos yeux ? Effets spéciaux? ou simplement une interaction avec le client ? On peut dire que JavaScript a été exécuté pour la première fois dans le navigateur. Cependant, si vous y réfléchissez de cette façon, le navigateur vous fournit simplement un contexte (contexte) qui définit ce qui peut être fait en utilisant JavaScript. entreprise similaire. Il définit ce que vous pouvez faire ici, mais ne dit pas grand-chose sur ce que le langage JavaScript lui-même peut faire. En fait, en tant que langage complet, JavaScript peut être utilisé dans différents contextes et refléter différentes capacités. Les Nodejs mentionnés ici fournissent en fait un contexte, un environnement d'exécution, qui permet d'exécuter du code JavaScript sur le backend (hors de l'environnement du navigateur).

Le cœur de la sélection de routage est le routage. Comme son nom l'indique, le routage signifie que nous avons différentes méthodes de traitement pour différentes URL, telles que le traitement de la logique métier de /start et le traitement de l'activité du module /upload qui est incohérent ; . Dans une implémentation réaliste, le processus de routage "se terminera" dans le module de routage, et le module de routage n'est pas le module qui "agit" réellement sur la demande, sinon il ne sera pas disponible lorsque notre application deviendra plus complexe. .

Ici, nous créons d'abord un module appelé requestHandlers et ajoutons une fonction d'espace réservé à chaque gestionnaire de requêtes :


Copier le code Le code est le suivant :

fonction start(){
console.log("Le gestionnaire de requête 'start' a été appelé.");                            
Fonction sommeil(milliSeconds){
        var startTime=new Date().getTime();                                         ​​​​​while(new Date().getTime() Dormir (10000);
Renvoyez "Bonjour Début" ;
}
fonction télécharger(){
console.log("Le gestionnaire de requête 'upload' a été appelé.");
Renvoyez « Bonjour le téléchargement » ;
}

exports.start=start;
exports.upload=upload;



De cette manière, nous pouvons connecter le gestionnaire de requêtes et le module de routage afin que le routage "ait un chemin à suivre". Après cela, nous avons déterminé qu'une série de gestionnaires de requêtes seront transmis via un objet, et cet objet doit être injecté dans la fonction router() en utilisant une méthode de couplage lâche. Le fichier principal index.js :

.


Copier le code Le code est le suivant : var serveur=require("./serveur");
var routeur=require("./router");
var requestHandlers=require("./requestHandlers");

var handle={};
handle["/"]=requestHandlers.start
handle["/start"]=requestHandlers.start
handle["/upload"]=requestHandlers.upload;
serveur.start(router.route,handle);




Comme indiqué ci-dessus, mapper différentes URL vers le même gestionnaire de requêtes est simple : il suffit d'ajouter une propriété avec la clé "/" à l'objet correspondant à requestHandlers.start. De cette façon, nous pouvons simplement configurer que les requêtes pour /start et / soient gérées par le gestionnaire de démarrage. Après avoir terminé la définition de l'objet, nous le transmettons au serveur comme paramètre supplémentaire, voir server.js :


Copier le code

Le code est le suivant :

var http=require("http");
var url=require("url");

function start(route,handle){
Fonction onRequest(requête,réponse){
      var pathname=url.parse(request.url).pathname;   console.log("Demande de " chemin d'accès " reçue.");                                                                        route(handle,chemin);
                                                                              response.writeHead(200,{"Content-Type":"text/plain"});                                     var content=route(handle,pathname);                                            response.write(content);                                           response.end();                                             }  
http.createServer(onRequest).listen(8888);
Console.log("Le serveur a démarré.");

exports.start=start;



De cette façon, le paramètre handle est ajouté à la fonction start() et l'objet handle est passé comme premier paramètre à la fonction de rappel route() est défini ci-dessous :
.



Copier le code

Le code est le suivant :



Grâce au code ci-dessus, nous vérifions d'abord si le gestionnaire de requêtes correspondant au chemin donné existe, et s'il existe, appelons directement la fonction correspondante. Nous pouvons obtenir la fonction de traitement des requêtes de l'objet transmis de la même manière que nous obtenons des éléments du tableau associatif, c'est-à-dire que handle[pathname](); une telle expression donne aux gens le sentiment de dire "Bonjour, s'il vous plaît, venez m'aider". gérer ce chemin." L'effet courant du programme est le suivant :





Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn