Node.js의 Connect, Express 및 "middleware"란 무엇입니까?
자바스크립트를 꽤 잘 알고 있음에도 불구하고, 나는 Node.js 생태계에서 이 세 가지 프로젝트가 정확히 무엇을 하는지 혼란스럽습니다.레일즈 랙 같은 건가요?누가 설명 좀 해주시겠어요?
[업데이트:4.0 릴리스부터 Express는 더 이상 Connect를 사용하지 않습니다.그러나 Express는 Connect용으로 작성된 미들웨어와 여전히 호환됩니다.저의 원래 답변은 아래와 같습니다.]
Node.js를 보는 사람들에게 분명히 일반적인 혼동 지점이기 때문에 이것에 대해 질문해 주셔서 기쁩니다.제가 설명할 수 있는 최선의 방법은 다음과 같습니다.
Node.js 자체는 http 모듈을 제공합니다. http 모듈은
createServer
method는 HTTP 요청에 응답하는 데 사용할 수 있는 개체를 반환합니다.해당 개체는 다음을 상속합니다.http.Server
원형의Connect는 또한 다음을 제공합니다.
createServer
method - 확장버상속개는반의 합니다.http.Server
Connect의 확장 기능은 미들웨어에 쉽게 연결할 수 있도록 주로 제공됩니다.그렇기 때문에 Connect는 자체를 "미들웨어 프레임워크"라고 설명하며 종종 Ruby's Rack과 유사합니다.Express는 Connect가 수행하는 작업을 HTTP 모듈에 연결합니다.제공되는 기능은
createServer
입니다.Server
원형의Connect의 모든 기능과 뷰 렌더링, 경로 설명을 위한 편리한 DSL이 있습니다.루비의 시나트라는 좋은 비유입니다.그리고 Express를 더욱 확장하는 다른 프레임워크도 있습니다!예를 들어, Zappa는 CoffeeScript, 서버 측 jQuery 및 테스트 지원을 통합합니다.
다음은 "미들웨어"가 의미하는 구체적인 예입니다.바로 사용할 수 있는 정적 파일은 없습니다.하지만 그냥 던져요.connect.static
(Connect와 함께 제공되는 미들웨어), 디렉터리를 가리키도록 구성하면 서버가 해당 디렉터리의 파일에 대한 액세스를 제공합니다.인 Express "Connect"도합니다.express.static
는 와동합다니와 .connect.static
(둘 다 다음과 같이 알려져 있습니다.staticProvider
최근까지.)
제 인상은 요즘 대부분의 "실제" Node.js 앱이 Express와 함께 개발되고 있다는 것입니다. 추가된 기능은 매우 유용하며, 원하는 경우 하위 수준의 모든 기능이 여전히 존재합니다.
받아들여진 대답은 정말 오래된 것입니다(그리고 지금은 틀렸습니다.Connect (3.0) / Express (4.0)의 현재 버전을 기반으로 한 정보(소스 포함)입니다.
Node.js와 함께 제공되는 기능
http / https createServer
req,를 들어, " " " " " " " " " " " " " " " " " " " " " " " " 이 됩니다.
var server = http.createServer(function (request, response) {
// respond
response.write('hello client!');
response.end();
});
server.listen(3000);
연결에 추가되는 항목
미들웨어는 기본적으로 애플리케이션 코드와 일부 하위 레벨 API 사이에 있는 모든 소프트웨어입니다.Connect는 기본 제공 HTTP 서버 기능을 확장하고 플러그인 프레임워크를 추가합니다.플러그인은 미들웨어 역할을 하므로 연결은 미들웨어 프레임워크입니다.
그렇게 하는 방법은 매우 간단합니다(실제로 코드는 매우 짧습니다!).전화하자마자var connect = require('connect'); var app = connect();
당신은 함수를 얻습니다.app
할 수 있는 것:
- 요청을 처리하고 응답을 반환할 수 있습니다.기본적으로 이 기능을 사용할 수 있기 때문입니다.
- 함수 멤버기있습을 가지고 있습니다.
.use
(소스) 플러그인을 관리합니다(이 간단한 코드 줄 때문에 여기에서 제공됨).
1.)로 인해 다음 작업을 수행할 수 있습니다.
var app = connect();
// Register with http
http.createServer(app)
.listen(3000);
2.)와 결합하면 다음과 같은 이점을 얻을 수 있습니다.
var connect = require('connect');
// Create a connect dispatcher
var app = connect()
// register a middleware
.use(function (req, res, next) { next(); });
// Register with http
http.createServer(app)
.listen(3000);
에 등록할 수 있는 합니다.http
전화를 걸 필요가 없도록 하기 위해http.createServer(app)
은 라고합니다라고 .listen
서버를 하고, 를 그리고코드단새는 http고콜, 로등전니다로 합니다.http.listen
원본
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
따라서 다음을 수행할 수 있습니다.
var connect = require('connect');
// Create a connect dispatcher and register with http
var app = connect()
.listen(3000);
console.log('server running on port 3000');
여전히 당신의 좋은 옛일입니다.http.createServer
플러그인 프레임워크가 맨 위에 있습니다.
왓 익스프레스JS 추가
ExpressJS와 connect는 병렬 프로젝트입니다.Connect는 미들웨어 프레임워크일 뿐이며, 뛰어난 성능을 제공합니다.use
기능.Express는 Connect에 종속되지 않습니다(package.json 참조).그러나 연결되는 모든 작업을 수행합니다. 예:
- 에 등록할 수 있습니다.
createServer
그것 또한 단지 취할 수 있는 기능이기 때문에 연결과 같습니다.req
/res
쌍을 이루다 - 미들웨어를 등록하는 사용 함수입니다.
- .
listen
http에 등록하는 기능
연결이 제공하는 기능(중복을 표현하는 기능) 외에도 여러 가지 기능이 있습니다.
미들웨어 공유
그use
익스프레스의 기능JS와 connect는 호환되므로 미들웨어가 공유됩니다.둘 다 미들웨어 프레임워크이며, 익스프레스는 단순한 미들웨어 프레임워크 이상을 가지고 있습니다.
어떤 것을 사용해야 합니까?
제 의견: 위의 ^을 바탕으로 당신은 당신 자신의 선택을 할 수 있을 정도로 충분한 정보를 가지고 있습니다.
- 사용하다
http.createServer
처음부터 connect /expressjs와 같은 것을 만드는 경우. - 미들웨어, 테스트 프로토콜 등을 작성하는 경우 connect를 사용합니다. 이는 다음과 같은 기능을 사용하는 것이 좋습니다.
http.createServer
- 익스프레스 사용웹 사이트를 작성하는 경우 JS.
대부분의 사람들은 그냥 익스프레스를 사용해야 합니다.제이에스
승인된 답변에 대해 잘못된 것은 무엇이 문제입니까?
이것들은 언젠가는 사실이었을지도 모르지만, 지금은 틀렸습니다.
http의 확장 버전을 상속합니다.서버
틀렸습니다. 확장되지 않습니다. 보신 것처럼...그것을 사용합니다.
Express는 Connect가 수행하는 작업을 http 모듈에 연결합니다.
Express 4.0은 연결에 의존하지 않습니다.현재 패키지를 참조하십시오.json 종속성 섹션
node.js
Node.js는 서버 측의 자바스크립트 모터입니다.
모든 js 기능 외에도 HTTP와 같은 네트워킹 기능과 파일 시스템에 대한 액세스가 포함됩니다.
이는 네트워킹 작업이 브라우저에 의해 독점되고 보안상의 이유로 파일 시스템에 대한 액세스가 금지되는 클라이언트 측 j와는 다릅니다.
웹 서버로서의 node.js: express
서버에서 실행되고 HTTP를 이해하며 파일에 액세스할 수 있는 것은 웹 서버처럼 들립니다.하지만 그것은 하나가 아닙니다.
웹response.node.js를 제공해야 합니다. 들어오는 HTTP 요청을 프로그래밍해야 합니다.
이것이 익스프레스가 하는 일입니다. 웹 서버를 js로 구현하는 것입니다.
따라서 웹 사이트를 구현하는 것은 Express 경로를 구성하고 사이트의 특정 기능을 프로그래밍하는 것과 같습니다.
미들웨어 및 연결
페이지 제공에는 여러 가지 작업이 포함됩니다.이러한 작업의 대부분은 잘 알려져 있고 매우 일반적이므로 노드의 Connect 모듈(노드 아래에서 실행할 수 있는 많은 모듈 중 하나)이 이러한 작업을 구현합니다.
현재 인상적인 제품 보기:
- 사용자 지정 형식을 지원하는 로거 요청 로거
- csrf 사이트 간 요청 위조 방지
- 압축 Gzip 압축 미들웨어
- basicAuth 기본 http 인증
- bodyParser 확장 가능 요청 본문 파서
- json 응용 프로그램/json 파서
- url encoded application/x-www-form-url encoded 파서
- 다중 파트 다중 파트/폼 데이터 파서
- 시간 초과 요청 시간 초과
- cookieParser 쿠키 파서
- 번들 MemoryStore를 사용한 세션 세션 관리 지원
- cookieSession 쿠키 기반 세션 지원
- methodFaux HTTP 메서드 지원 재정의
- responseTime은 응답 시간을 계산하고 X-Response-Time을 통해 노출합니다.
- 정적() 미들웨어용 staticCache 메모리 캐시
- 범위 등을 지원하는 정적 스트리밍 정적 파일 서버
- 디렉터리 디렉터리 미들웨어 나열
- vhost 가상 호스트 하위 도메인 매핑 미들웨어
- favicon efficient favicon 서버(기본 아이콘 포함)
- 요청 본문의 바이트 크기 제한
- 쿼리 자동 쿼리 문자열 구문 분석기, requ.dll 채우기
- errorHandler 유연한 오류 처리기
연결이 프레임워크이며 이를 통해 필요한 (하위) 모듈을 선택할 수 있습니다.
미들웨어 기여 페이지는 추가 미들웨어의 긴 목록을 열거합니다.
Express 자체는 가장 일반적인 Connect 미들웨어와 함께 제공됩니다.
무엇을 해야 하나?
nodenode.js를 합니다.
노드에는 노드 패키지 관리자인 npm이 함께 제공됩니다.npm install -g express
전체적으로 express를 다운로드하여 설치합니다(express 가이드 참조).
중입니다.express foo
명령행(노드가 아님)에서 foo라는 이름의 실행 준비 응용 프로그램을 만듭니다.하고 ("" "" " "" "로 합니다.node <appname>
림열을 엽니다.http://localhost:3000
이제 이제 당신이 들어갔어요.
Connect는 세션 관리, 인증, 로깅 등과 같은 일반적인 HTTP 서버 기능을 위한 "고급" API를 제공합니다.Express는 고급(중국어와 유사한) 기능을 갖춘 Connect 위에 구축되어 있습니다.
Node.js
자체는 HTTP 모듈을 제공하며, 이 모듈의 createServer 메서드는 HTTP 요청에 응답하는 데 사용할 수 있는 개체를 반환합니다.해당 개체는 다음을 상속합니다.http.Server
원형의
특히 Visual Studio IDE 작업에 NTVS를 사용하는 경우 관련 정보.NTVS는 Visual Studio 2012, 2013에 NodeJS 및 Express 도구, 비계, 프로젝트 템플릿을 모두 추가합니다.
또한 Express를 호출하는 동사는JS 또는 "웹 서버"로서의 Connect가 잘못되었습니다.기본 웹 서버를 사용하거나 사용하지 않고 만들 수 있습니다.기본 NodeJS 프로그램은 또한 http 모듈을 사용하여 http 요청을 처리할 수 있으므로 기본 웹 서버가 됩니다.
이름에서 알 수 있듯이 미들웨어는 실제로 중간 사이에 있습니다.무엇의 중간? 요청과 응답의 중간.이 사진에서 요청, 응답, 요청 서버가 클라이언트로부터 요청이 오는 것을 확인할 수 있는 방법과 해당 요청을 처리하는 익스프레스 서버 서버.그럼 더 깊게 파자..실제로 우리는 이 전체 익스프레스 서버의 전체 작업을 이런 식으로 작은 개별 작업으로 나눌 수 있습니다.미들웨어가 요청과 응답 사이에 위치하여 특정 작업을 수행하고 요청을 다음 작업으로 전달하는 방법.마침내 모든 작업을 수행하는 응답이 이루어졌습니다.모든 미들웨어는 요청 개체, 응답 개체 및 요청 응답 주기의 다음 기능에 액세스할 수 있습니다.
이것은 미들웨어에 대한 빠른 유튜브 비디오에서 미들웨어를 설명하는 좋은 예입니다.
미들웨어는 당사의 api에서 들어오는 요청과 응답 사이 또는 중간에 실행되는 특수 기능입니다.예를 들어 다음과 같이 사용합니다.app.use((req, res, next)=>{ }
여기 다음 작업은 req와 resin express j 사이의 미들웨어입니다.
바보같은 단순한 대답은
Connect 및 Express는 nodejs용 웹 서버입니다.Apache 및 IIS와 달리 둘 다 "미들웨어"라고 하는 동일한 모듈을 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5284340/what-is-node-js-connect-express-and-middleware
'programing' 카테고리의 다른 글
연결 문자열이 올바른 동안 'vmx failure' 오류가 발생했습니다. (0) | 2023.05.26 |
---|---|
특정 Git 태그를 복제하는 방법 (0) | 2023.05.26 |
없음 = 문자열.비어 있음(왜 이것들이 같습니까?) (0) | 2023.05.21 |
NSURL을 NS 문자열로 변환 (0) | 2023.05.21 |
앱 딜러는 무엇을 위한 것이며 언제 앱을 사용해야 하는지 어떻게 알 수 있습니까? (0) | 2023.05.21 |