Quando você é iniciante, descobriu uma cena completamente diferente do seu ponto de vista anterior - para que é o JavaScript usado em seus olhos? Efeitos especiais? Ou é apenas uma interação com o cliente? Pode -se dizer que o JavaScript foi executado pela primeira vez no navegador. No entanto, se você pensar dessa maneira, o navegador apenas fornece um contexto que define o que você pode fazer com o JavaScript. Aqui você pode pensar nisso como uma empresa semelhante. A empresa define o que você pode fazer aqui, mas não diz muito sobre o que a própria linguagem JavaScript pode fazer. De fato, como um idioma completo, o JavaScript pode ser usado em diferentes contextos e reflete diferentes habilidades. Os nodejs mencionados aqui é realmente ser franco, o que fornece um contexto e um ambiente de corrida, o que permite que o código JavaScript seja executado no back -end (fora do ambiente do navegador).
O núcleo do roteamento é o roteamento. Como o nome sugere, o roteamento refere -se aos diferentes métodos de processamento que precisamos para lidar com diferentes URLs, como o processamento/lógica de negócios da START e a lógica de negócios do módulo de processamento/upload; A lógica é inconsistente. Na realidade, o processo de roteamento "terminará" no módulo de roteamento, e o módulo de roteamento não é um módulo real que "toma medidas" contra a solicitação, caso contrário, nosso aplicativo não poderá ser bem expandido quando se tornar mais complexo.
Aqui, criamos primeiro um módulo chamado RequestHandlers e adicionamos uma função de espaço reservado para cada manipulador de solicitação:
A cópia do código é a seguinte:
função start () {
console.log ("Solicitação Handler 'Start' foi chamado.");
função sono (milissegundos) {
var startTime = new Date (). getTime ();
while (new date (). gettime () <starttime+milissegundos);
}
sono (10000);
retornar "Hello Start";
}
função upload () {
console.log ("O manipulador de solicitação 'upload' foi chamado.");
retornar "Hello upload";
}
exports.start = start;
exports.upload = upload;
Dessa forma, podemos conectar o manipulador de solicitação e o módulo de roteamento para fazer a rota "tem uma maneira de seguir". Depois disso, decidimos passar por uma série de manipuladores de solicitação através de um objeto e precisamos usar métodos pouco acoplados para injetar esse objeto na função do roteador (), o principal arquivo index.js:
A cópia do código é a seguinte:
var server = requer ("./ servidor");
var roteter = requer ("./ roteador");
var requestHandlers = requer ("./ requestHandlers");
var handle = {};
Handle ["/"] = requestHandlers.start;
manipular ["/start"] = requestHandlers.start;
Handle ["/upload"] = requestHandlers.upload;
server.start (roteter.route, handle);
Como mostrado acima, é fácil mapear diferentes URLs para o mesmo manipulador de solicitação: basta adicionar uma propriedade com a chave "/" ao objeto, correspondente a requestHandlers.start. Dessa forma, podemos simplesmente configurar / iniciar e / / para lidar com os dois pedidos para iniciar. Depois de terminar de olhar para a definição do objeto, passamos como um parâmetro extra para o servidor, consulte Server.js:
A cópia do código é a seguinte:
var http = requer ("http");
var url = requer ("url");
Função Iniciar (Rota, Handle) {
função onRequest (solicitação, resposta) {
var pathname = url.parse (request.url) .pathname;
console.log ("Solicitação de"+Pathname+"Recebido.");
rota (alça, nome do caminho);
Response.writehead (200, {"content-type": "text/plana"});
var content = rota (identificador, nome do caminho);
resposta.write (content);
resposta.END ();
}
http.createServer (onRequest) .Listen (8888);
console.log ("O servidor começou");
}
exports.start = start;
Dessa maneira, o parâmetro Handle é adicionado à função START () e o objeto Handle é passado como o primeiro parâmetro para a função de retorno de chamada rota (). A seguir, define rota.js:
A cópia do código é a seguinte:
Rota da função (identificador, nome do caminho) {
console.log ("prestes a rotear uma solicitação de"+ pathname);
if (typeof handle [pathname] === 'function') {
Retornar Handle [PathName] ();
}outro{
console.log ("Nenhum manipulador de solicitação encontrado para"+pathname);
retornar "404 não encontrado";
}
}
exports.Route = rota;
Através do código acima, primeiro verificamos se o manipulador de solicitação correspondente ao caminho fornecido existe e, se assim for, chamaremos diretamente a função correspondente. Podemos obter a função de manuseio de solicitações do objeto passado da mesma maneira que obter elementos da matriz associativa, ou seja, manipular [PathName] (); Essa expressão dá às pessoas a sensação de que está dizendo "Oi, por favor me ajude com esse caminho". O efeito de execução do programa é o seguinte: