처음 Node를 배우기 시작했을 때 이전의 관점과는 완전히 다른 상황을 발견했습니다. 여러분의 눈에는 JavaScript가 무엇을 위해 사용됩니까? 특수 효과? 아니면 단지 고객과의 상호작용인가요? 하지만 이렇게 생각하면 브라우저는 단지 JavaScript를 사용하여 수행할 수 있는 작업을 정의하는 컨텍스트(context)를 제공한다고 생각할 수 있습니다. 여기에서 무엇을 할 수 있는지 정의하지만 JavaScript 언어 자체가 무엇을 할 수 있는지에 대해서는 많이 언급하지 않습니다. 실제로 완전한 언어인 JavaScript는 다양한 상황에서 사용될 수 있으며 다양한 기능을 반영할 수 있습니다. 여기에 언급된 Nodejs는 실제로 JavaScript 코드가 백엔드(브라우저 환경 외부)에서 실행될 수 있도록 하는 실행 환경인 컨텍스트를 제공합니다.
라우팅 선택의 핵심은 라우팅입니다. 이름에서 알 수 있듯이 라우팅은 /start의 비즈니스 로직 처리와 /upload 모듈의 비즈니스 처리가 일치하지 않는 등 URL마다 다른 처리 방법이 있음을 의미합니다. . 현실적인 구현에서 라우팅 프로세스는 라우팅 모듈에서 "종료"되며 라우팅 모듈은 요청에 대해 실제로 "조치를 취하는" 모듈이 아닙니다. 그렇지 않으면 애플리케이션이 더 복잡해지면 사용할 수 없게 됩니다. .
여기에서는 먼저 requestHandlers라는 모듈을 생성하고 각 요청 핸들러에 자리 표시자 함수를 추가합니다.
함수 시작(){
console.log("요청 핸들러 'start'가 호출되었습니다.");
함수 sleep(밀리초){
var startTime=new Date().getTime();
while(new Date().getTime()
수면(10000)
"안녕하세요 시작"을 반환합니다.
}
함수 업로드(){
console.log("요청 핸들러 '업로드'가 호출되었습니다.");
"안녕하세요 업로드"를 반환합니다.
}
수출.시작=시작
수출.업로드=업로드;
이런 방식으로 요청 핸들러와 라우팅 모듈을 연결하여 라우팅이 "따라야 할 경로를 갖게" 됩니다. 그 후, 우리는 일련의 요청 핸들러가 객체를 통해 전달될 것이며 이 객체는 느슨한 결합 방법을 사용하여 router() 함수에 주입되어야 한다고 결정했습니다. 기본 파일 index.js:
코드 복사
코드는 다음과 같습니다.
var 서버=require("./server")
var router=require("./router")
var requestHandlers=require("./requestHandlers")
var 핸들={};
핸들["/"]=requestHandlers.start
핸들["/start"]=requestHandlers.start
핸들["/upload"]=requestHandlers.upload
server.start(router.route,handle);
위에 표시된 것처럼 서로 다른 URL을 동일한 요청 핸들러에 매핑하는 것은 쉽습니다. "/" 키가 있는 속성을 requestHandlers.start에 해당하는 개체에 추가하기만 하면 됩니다. 이러한 방식으로 /start 및 /에 대한 요청이 시작 핸들러에 의해 처리되도록 간단하게 구성할 수 있습니다. 객체 정의를 완료한 후 이를 추가 매개변수로 서버에 전달합니다. server.js를 참조하세요.
코드 복사