다른 요청에 대해 다른 피드백을 제공하기 위해 이벤트 프로세서 모듈을 소개합니다.
모듈의 이름은 requestHandlers입니다. 먼저 두 개의 자리 표시 자 함수 인 start () 및 upload ()를 추가합니다.
requestHandlers.js의 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
함수 start () {
Console.log ( "액세스 /스타에 액세스 할 때 전화");
}
함수 upload () {
Console.log ( "액세스/업로드 할 때 전화하십시오.");
}
Exports.start = 시작;
Exports.upload = 업로드;
실제 응용 프로그램에서는 요청 처리기 수가 계속 증가 할 것입니다. 물론 새 URL 또는 요청 핸들러가있을 때마다 경로에서 요청을 완료하고 싶지 않습니다.
핸들러에 반복적으로 매핑.
또한, 요청 == x를 IF 요청 == x로 가져 와서 경로에서 handler y를 호출하고 싶지 않으므로 코드를 지저분하고 비전문가로 보이게합니다.
여기서는이 요구 사항을 처리하기 위해 연관 배열의 개념을 사용합니다. 우리는 일련의 요청 처리기를 객체를 통해 전달 하고이 개체를 느슨하게 결합 된 방식으로 Route () 함수에 주입해야합니다.
먼저이 개체를 기본 파일 index.js에 소개하겠습니다.
코드 사본은 다음과 같습니다.
var server = require ( "./ server");
var router = require ( "./ router");
var requestHandlers = require ( "./ requestHandlers");
var 핸들 = {};
핸들 [ "/"] = requestHandlers.start;
[ "/start"] = requestHandlers.Start를 처리합니다.
[ "/upload"] = requestHandlers.Upload;
server.start (router.route, handle);
예를 들어, A /Show Map을 추가하려면 핸들 [ " /show"] requestHandlers.show를 추가하십시오.
하하, 코드가 훨씬 간결하고 질서 정연합니까? !
다음으로 핸들 객체를 서버로 전달하고 Server.js는 다음과 같이 수정됩니다.
코드 사본은 다음과 같습니다.
var http = 요구 사항 ( "http");
var url = require ( "url");
함수 시작 (경로, 핸들) {
onrequest (요청, 응답) {
var pathname = url.parse (request.url) .pathname;
console.log ( "" + pathname + "에 대한 요청");
경로 (핸들, PathName);
response.writehead (200, { "content-type": "text/plain"});
Response.write ( "Hello World");
응답 ();
}
http.createserver (onrequest) .listen (8888);
Console.log ( "서버가 시작되었습니다.");
}
Exports.start = 시작;
Route.js 파일에서 Route () 함수를 수정하십시오.
코드 사본은 다음과 같습니다.
기능 경로 (핸들, PathName) {
Console.log ( "" + pathname에 대한 요청을 라우팅하려면);
if (typeof handle [pathname] === 'function') {
핸들 [pathname] ();
} 또 다른 {
console.log ( "" + pathname에 대한 요청 핸들러 없음);
}
}
Exports.route = 경로;
우리는 핸들 객체를 서버에 매개 변수로 전달한 다음 경로로 수신 한 다음 결국 경로는 현재 경로에 해당하는 요청 핸들러가 존재하는지 여부를 결정합니다. 존재하는 경우 해당 기능을 호출하십시오.
우리는 연관 배열에서 요소를 가져 오는 것과 같은 방식으로 전달 된 객체에서 요청 처리 기능을 얻을 수 있으므로 [PathName] ();, "안녕하세요,이 경로를 다루는 데 도움이됩니다."
이런 식으로, 우리는 다른 요청에 따라 다른 처리를 할 수 있습니다.
다음 섹션에서는 서버가 실제 피드백 작업을 수행 할 수 있도록 코드를 추가로 수정합니다.