Cuando eres un principiante, has descubierto una escena que es completamente diferente de tu punto de vista anterior: ¿para qué se usa JavaScript en tus ojos? ¿Efectos especiales? ¿O es solo una interacción con el cliente? Se puede decir que JavaScript se ejecutó por primera vez en el navegador. Sin embargo, si lo piensa de esta manera, el navegador solo proporciona un contexto que define lo que puede hacer con JavaScript. Aquí puedes pensar en ello como una empresa similar. La empresa define lo que puede hacer aquí, pero no dice mucho sobre lo que puede hacer el lenguaje JavaScript en sí. De hecho, como lenguaje completo, JavaScript se puede usar en diferentes contextos y refleja diferentes habilidades. Los NodeJ mencionados aquí en realidad es decirlo sin rodeos, lo que proporciona un contexto y un entorno en ejecución, lo que permite que el código JavaScript se ejecute en el backend (fuera del entorno del navegador).
El núcleo del enrutamiento es el enrutamiento. Como su nombre indica, el enrutamiento se refiere a los diferentes métodos de procesamiento que necesitamos para manejar diferentes URL, como la lógica comercial de Processing/Start's Business Logic and Processing/Subload Module; La lógica es inconsistente. En realidad, el proceso de enrutamiento "terminará" en el módulo de enrutamiento, y el módulo de enrutamiento no es un módulo real que "tome medidas" con la solicitud, de lo contrario, nuestra aplicación no podrá ampliarse cuando se vuelva más complejo.
Aquí creamos primero un módulo llamado SolicHandlers y agregamos una función de marcador de posición para cada controlador de solicitud:
La copia del código es la siguiente:
función start () {
console.log (se llamó al controlador de solicitud 'Inicio'. ");
function sleep (milisegunds) {
var starttime = new Date (). GetTime ();
while (new Date (). GetTime () <starttime+miliseConds);
}
dormir (10000);
devolver "hola inicio";
}
function upload () {
console.log ("Solicitar el controlador 'Subiendo' se llamó.");
devolver "hola subiendo";
}
exports.start = inicio;
exports.upload = cargar;
De esta manera, podemos conectar el controlador de solicitudes y el módulo de enrutamiento para que la ruta "tiene una forma de seguir". Después de eso, decidimos pasar una serie de controladores de solicitudes a través de un objeto, y necesitamos usar métodos acoplados libremente para inyectar este objeto en la función Router (), 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);
Como se muestra arriba, es fácil mapear diferentes URL al mismo controlador de solicitud: simplemente agregue una propiedad con la clave "/" al objeto, correspondiente a SolicHandlers.Start. De esta manera, simplemente podemos configurar / iniciar y / para manejar ambas solicitudes para comenzar. Después de terminar de mirar la definición del objeto, la pasamos como un parámetro adicional al servidor, consulte Server.js:
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"});
Var content = ruta (manejo, rathname);
Response.write (contenido);
respuesta.end ();
}
http.createServer (OnRequest) .listen (8888);
console.log ("El servidor ha comenzado");
}
exports.start = inicio;
De esta manera, el parámetro de identificación se agrega a la función Start (), y el objeto de identificación se pasa como el primer parámetro a la función de devolución de llamada Route (). Lo siguiente define ruta.js:
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') {
return handle [rathName] ();
}demás{
console.log ("No se encontró controlador de solicitud para"+PathName);
regresar "404 no encontrado";
}
}
exports.route = ruta;
A través del código anterior, primero verificamos si existe el controlador de solicitud correspondiente a la ruta dada, y de ser así, llamaremos directamente a la función correspondiente. Podemos obtener la función de manejo de solicitudes del objeto aprobado de la misma manera que obtener elementos de la matriz asociativa, es decir, manejar [rathName] (); Tal expresión le da a las personas la sensación de que está diciendo "Hola, por favor ayúdame con este camino". El efecto de ejecución del programa es el siguiente: