문서 보기문서 편집수정 내역 Express.js (r0 버전으로 되돌리기) [include(틀:웹 프레임워크)] ||<-2> '''{{{+1 Express.js}}}''' || ||<-2> [[파일:express_logo.png|width=100%]] || || '''종류''' ||[[프레임워크]] || || '''라이선스''' ||[[MIT 라이선스]] || || '''개발''' ||스트롱루프 || || '''언어''' ||[[JavaScript]] || || '''버전''' ||4.18.2[br]2022년 10월 업데이트됨 || ||<-2> [[https://expressjs.com/ko/|[[파일:홈페이지 아이콘.svg|width=20]]]] | [include(틀:GitHub 로고,링크=expressjs/express,크기=20)] || [목차] [clearfix] == 개요 == [[Node.js]]를 위한 빠르고 개방적인 간결한 [[웹 프레임워크]]이다. == 특징 == == 사용해 보기 == === 설치 === 기본적으로 [[Node.js]]가 설치되어 있다면, [[npm]]을 통해서 다운받을 수 있다. {{{$ npm install express --save }}} ==== Express 애플리케이션 생성기 ==== '''설치법''' {{{$ npm install express-generator -g }}} express-generator를 사용하면 Express의 기본골조를 바로 생성해준다. --개꿀-- ~~다만 자주 쓰다보면 코드가 외워지게 된다~~ 여러 옵션으로 view engine[* '''pug''', ejs, handlebars 등을 주로 사용] 이나 CSS등을 선택할 수 있다. === Hello world 예제 === {{{#!syntax javascript import express from 'express'; // ES Module의 경우 const express = require('express'); // CommonJS의 경우 // 위의 구문의 경우 두 줄 다 쓰는 것이 아니라 자신이 쓰는 형식에 맞춰서 써야한다 const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello World!'); }) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); }); }}} 다음과 같이 app.js를 작성한다. 설명을 하자면, 앱을 시작하면 앱은 3000 포트에 대해서 연결된다. URL '/'에 대해서 'Hello World!'라는 응답을 하고, 그 외의 URL에는 [[404 Not Found]]로 응답한다.[* 접속하려면 브라우저에서 127.0.0.1:3000로 접속한다. 포트를 80으로 하면 :숫자를 안 붙여도 된다.] {{{$ node app.js }}} 다음과 같이 실행시키면 간단한 Hello World 웹서버가 시작되고, 터미널에는 'Example app listening at http://localhost:3000'이라는 메세지가 나온다. 이제 http://localhost:3000에 들어가면 Hello World 응답을 받을 수 있다. === 라우팅 === 위의 예제에서 {{{#!syntax javascript app.get('/', (req, res) => { res.send('Hello World!'); }); }}} 이 부분을 다시 한 번 보면, app에 '''GET'''[* GET 뿐만 아니라, POST, DELETE, PUT과 같은 HTTP 요청 및 모든 요청에 관한 all도 지원한다.] 요청을 '/'[* URI 정의. 대소문자를 구분하지 않으며, 구분하려면 정규표현식을 사용해야 한다.] 주소로 그 뒤에 있는 콜백함수가 res.send로 'Hello World!'를 보낸다. 경로를 정의할 때 [[정규표현식]]을 이용해서 작성할 수 있다. '''express.Router'''를 사용하면 모듈처럼 붙였다 땔 수 있는 핸들러를 만들 수 있다. 이는 미들웨어처럼 사용할 수 있다. === 미들웨어 === 미들웨어는 Express.js에 기본적으로 제공하지 않는 기능을 구현해 놓은 함수이자 일종의 플러그인이다. 미들웨어를 사용하여 여러가지 고급 기능을 서버에 제공할 수 있다. ==== 자주 쓰이는 미들웨어 ==== * express.compress : HTTP 본문을 압축하여 전송 * express.json : JavaScript Object 값을 JSON으로 전송 및 JSON 형식 Body를 자동으로 파싱 처리 * express.session : 서버에 Session 스토리지를 구현[* 데이터베이스에 연결시켜서 사용한다. 종류는 상관없음.] * express.static : 서버 파일시스템에 저장된 정적 리소스[* 예: [[CSS]], Client-side scripts, 이미지, 폰트,오디오 등] 제공 * cookie-parser : HTTP 헤더에서 Cookie 값을 추출 * cors : CORS(교차 출처 리소스 공유) 정책을 설정 * morgan : 터미널에 서버 로그 작성 * passport : 로그인 기능을 구현[* 구글, 네이버 등의 [[OAuth|소셜 로그인]] 기능도 쓸 수 있다. ] == 기타 == * 나무위키의 엔진인 [[the seed]]도 Express.js를 사용한다. * 2016년을 기점으로 업데이트 빈도가 줄어들기 시작하여 2022년 현재는 의미있는 업데이트가 이루어지고 있지 않다. Node.js 백엔드 개발의 대세는 Express.js에서 [[NestJS]][[https://nestjs.com/|#]][* Express, Fastify 기반의 프레임워크로 [[스프링 프레임워크]]처럼 더 Opinionated된 프레임워크를 지향한다.]로 넘어가고 있는 상태이다. === 같이 보기 === * [[JavaScript]] * [[Node.js]] * [[NestJS]] * [[npm]] * [[the seed]] [[분류:라이브러리]][[분류:웹 프레임워크]]캡챠되돌리기