nodejs 서버 쉽게 만들기 (5): 이벤트 프로세서

서로 다른 피드백을 하기 위해서, 우리는 이벤트 프로세서의 모듈을 도입했다.
이 모듈은 requestHandlers라고 명명되었습니다. 우선 start () 와 upload () 두 개의 자리 함수를 추가합니다.
requestHandlers.js 코드는 다음과 같습니다.

function start() {
    console.log(" /star 。");
}
 
function upload() {
    console.log(" /upload 。");
}
 
exports.start = start;
exports.upload = upload;
실제 응용 프로그램에서 요청 처리 프로그램의 수가 끊임없이 증가할 것이다. 우리는 당연히 새로운 URL이나 요청 처리 프로그램이 있을 때마다 루트에서 요청을 완성하고 싶지 않다
처리 프로그램의 매핑에 대해 반복적으로 괴롭히다.
이외에도 우리는 루트에 ifrequest==xthencallhandlery를 많이 가지고 싶지 않다. 이렇게 하면 코드가 매우 난잡하고 전문적이지 않은 느낌으로 보일 수 있다.
여기에서 나는 관련 수조의 개념을 사용하여 이 수요를 처리할 것이다. 우리는 일련의 요청 처리 프로그램을 하나의 대상을 통해 전달하고 느슨한 결합 방식으로 이 대상을route () 함수에 주입해야 한다.
우리는 먼저 이 대상을 메인 파일 index에 도입합니다.js:

var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");
 
var handle = {};
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
 
server.start(router.route, handle);
예를 들어 나는/show의 맵을 추가하고 싶다.handle ["/show"] requestHandlers를 직접 추가하고 싶다.show;하면 된다;
하하, 이렇게 되면 코드가 간결하고 질서정연해지지 않을까?!
다음은 서버, 서버에handle 대상을 전달합니다.js 수정은 다음과 같습니다.

var http = require("http");
var url = require("url");
function start(route, handle) {
 function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  console.log("Request for " + pathname + " received.");
  route(handle, pathname);
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
 }
 http.createServer(onRequest).listen(8888);
 console.log("Server has started.");
}
exports.start = start;
경로를 적절하게 수정하다.js 파일에서 route () 함수를 수정합니다.

function route(handle, pathname) {
 console.log("About to route a request for " + pathname);
 if (typeof handle[pathname] === 'function') {
  handle[pathname]();
 } else {
  console.log("No request handler found for " + pathname);
 }
}
exports.route = route;
우리는handle 대상을 매개 변수로 서버에 전송하고 루트에서 수신하며 마지막으로 루트에서 현재 경로에 대응하는 요청 처리 프로그램의 존재 여부를 판단하고 존재하면 대응하는 함수를 호출합니다.
우리는 관련 그룹에서 원소를 얻는 것과 같은 방식으로 전달된 대상에서 요청 처리 함수를 얻을 수 있기 때문에handle[pathname]()와 같이 간결하고 유창한 형태가 생겼다.의 표현식, 이 느낌은 마치 전방에서 언급한 것처럼'어이, 이 경로를 처리해 주세요'.
이렇게 되면 우리는 서로 다른 요구에 따라 다른 처리를 할 수 있다.
다음 절에서 우리는 코드를 더욱 개조하여 서버가 실제적인 피드백 조작을 하도록 할 것이다.

좋은 웹페이지 즐겨찾기