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]()와 같이 간결하고 유창한 형태가 생겼다.의 표현식, 이 느낌은 마치 전방에서 언급한 것처럼'어이, 이 경로를 처리해 주세요'.
이렇게 되면 우리는 서로 다른 요구에 따라 다른 처리를 할 수 있다.
다음 절에서 우리는 코드를 더욱 개조하여 서버가 실제적인 피드백 조작을 하도록 할 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.