Para proporcionar diferentes comentarios sobre diferentes solicitudes, presentamos un módulo de procesador de eventos.
El módulo se llama requesthandlers. Primero agregamos dos funciones de marcador de posición, iniciar () y subir ().
El código para requesthandlers.js es el siguiente:
La copia del código es la siguiente:
función start () {
console.log ("Llame a esto al acceder /estrella");
}
function upload () {
console.log ("Llame a esto al acceder/cargar.");
}
exports.start = inicio;
exports.upload = cargar;
En aplicaciones reales, el número de manejadores de solicitud continuará aumentando. Por supuesto, no queremos completar la solicitud en la ruta cada vez que hay una nueva URL o controlador de solicitud.
Mapeo al controlador repetidamente.
Además, no queremos tener mucho si la solicitud == x, entonces llame al controlador Y en la ruta, lo que hará que el código se vea desordenado y no profesional.
Aquí usaré el concepto de matrices asociativas para manejar este requisito. Pasamos una serie de controladores de solicitudes a través de un objeto y necesitamos inyectar este objeto en la función de ruta () de una manera libremente acoplada.
Primero introduzcamos este objeto en el archivo principal index.js:
La copia del código es la siguiente:
var ser servidor = requirir ("./ servidor");
var enrutador = require ("./ Router");
var requestHandlers = require ("./ requestHandlers");
var handy = {};
manejar ["/"] = requestHandlers.Start;
manejar ["/inicio"] = requestHandlers.start;
manejar ["/upload"] = requestHandlers.upload;
servidor.Start (Router.route, Handle);
Por ejemplo, si quiero agregar un mapa A /Show, simplemente agregue un mango [" /show"] requesthandlers.show;
Jaja, ¿el código es mucho más conciso y ordenado? !
A continuación, pasamos el objeto de identificación al servidor, y el servidor.js se modifica de la siguiente manera:
La copia del código es la siguiente:
var http = require ("http");
var url = require ("url");
Function Start (Route, Handle) {
function OnRequest (solicitud, respuesta) {
var rathName = url.Parse (request.url) .pathname;
console.log ("Solicitar" + PathName + "Recibido");
ruta (manejo, ruta);
Response.Writehead (200, {"Content-type": "Text/Plain"});
Response.write ("Hola mundo");
respuesta.end ();
}
http.createServer (OnRequest) .listen (8888);
console.log ("El servidor ha comenzado");
}
exports.start = inicio;
Modifique la función Route () en el archivo Route.js correspondientemente:
La copia del código es la siguiente:
ruta de funciones (Handle, rathName) {
console.log ("a punto de enrutar una solicitud para" + rathName);
if (typeof mango [pathname] === 'function') {
manejar [PathName] ();
} demás {
console.log ("No se encontró controlador de solicitud para" + PathName);
}
}
exports.route = ruta;
Pasamos el objeto de identificación como parámetro al servidor, luego lo recibimos por la ruta y finalmente la ruta determina si el controlador de solicitud correspondiente a la ruta actual existe o no. Si existe, llame a la función correspondiente.
Podemos obtener la función de manejo de la solicitud del objeto aprobado de la misma manera que obtener elementos de la matriz asociativa, por lo que tenemos una expresión simple y suave como el mango [rathName] ();, que se siente como el mencionado anteriormente: "Hola, ayúdame a lidiar con este camino".
De esta manera, podemos realizar diferentes procesos de acuerdo con diferentes solicitudes.
En la siguiente sección, revisaremos aún más el código para permitir que el servidor realice algunas operaciones de retroalimentación reales.