Lorsque vous êtes débutant, vous avez découvert une scène complètement différente de votre point de vue précédent - à quoi sert JavaScript dans vos yeux? Effets spéciaux? Ou est-ce juste 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 pensez de cette façon, le navigateur fournit simplement un contexte qui définit ce que vous pouvez faire avec JavaScript. Ici, vous pouvez le considérer comme une entreprise similaire. L'entreprise définit ce que vous pouvez faire ici, mais il ne dit pas grand-chose sur ce que la langue JavaScript elle-même peut faire. En fait, en tant que langue complète, JavaScript peut être utilisé dans différents contextes et reflète différentes capacités. Les Nodejs mentionnés ici sont en fait pour le dire franchement, qui fournit un contexte et un environnement en cours d'exécution, ce qui permet d'exécuter le code JavaScript sur le backend (hors de l'environnement du navigateur).
Le cœur du routage est le routage. Comme son nom l'indique, le routage fait référence aux différentes méthodes de traitement dont nous avons besoin pour gérer différentes URL, telles que la logique métier de traitement / start et la logique métier du module de traitement / téléchargement; La logique est incohérente. En réalité, le processus de routage "se terminera" dans le module de routage, et le module de routage n'est pas un réel module qui "prend des mesures" contre la demande, sinon notre application ne pourra pas être bien élargie lorsqu'elle deviendra plus complexe.
Ici, nous créons d'abord un module appelé requestHandlers et ajoutons une fonction d'espace réservé pour chaque gestionnaire de demande:
La copie de code est la suivante:
fonction start () {
Console.log ("Demande Handler 'Start' a été appelé.");
fonction du sommeil (millisecondes) {
var startTime = new Date (). GetTime ();
while (new Date (). gettime () <starttime + millisecondes);
}
sommeil (10000);
Renvoie "Hello Start";
}
fonction upload () {
Console.log ("Demande Handler 'Upload' a été appelé.");
retourner "bonjour téléchargement";
}
export.start = start;
exports.upload = upload;
De cette façon, nous pouvons connecter le gestionnaire de demandes et le module de routage pour faire l'itinéraire "a un moyen de suivre". Après cela, nous avons déterminé à passer une série de gestionnaires de requêtes via un objet, et nous devons utiliser des méthodes à couplage vaguement pour injecter cet objet dans la fonction Router (), 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);
Comme indiqué ci-dessus, il est facile de cartographier différentes URL au même gestionnaire de demande: ajoutez simplement une propriété avec la clé "/" à l'objet, correspondant à requestHandlers.start. De cette façon, nous pouvons simplement configurer / démarrer et / pour gérer les deux demandes de démarrage. Après avoir terminé en regardant la définition de l'objet, nous la passons en tant que paramètre supplémentaire au serveur, voir Server.js:
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"});
var contenu = route (manche, cheminement);
Response.Write (Contenu);
réponse.end ();
}
http.createServer (onRequest) .Listen (8888);
console.log ("Server a commencé.");
}
export.start = start;
De cette façon, le paramètre de poignée est ajouté à la fonction start (), et l'objet de poignée est passé comme le premier paramètre à la fonction Route (). Ce qui suit définit la route.js:
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') {
Handle de retour [pathName] ();
}autre{
console.log ("Aucun gestionnaire de demande trouvé pour" + pathName);
retourner "404 non trouvé";
}
}
export.Route = Route;
Grâce au code ci-dessus, nous vérifions d'abord si le gestionnaire de demande correspondant au chemin donné existe, et dans le cas, nous appellerons directement la fonction correspondante. Nous pouvons obtenir la fonction de traitement de la demande de l'objet passé de la même manière que d'obtenir des éléments du tableau associatif, c'est-à-dire gérer [pathName] (); Une telle expression donne aux gens le sentiment qu'il dit "Salut, aidez-moi avec ce chemin." L'effet d'exécution du programme est le suivant: