Node는 javascript runtime환경이다. 주로 서버사이드 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다.
자바스크립트 런타임이란 브라우저 외부 환경에서 자바스크립트 코드를 사용할수 있게 만들어주며, 이에 필요한 모듈, 파일 시스템, HTTP 등 bulit-in API를 제공한다.
** 모듈? 애플리케이션을 구성하는 개별적인 요소.
일반적으로 파일 단위로 분리되어 있으며, 필요에 따라 명시적으로 모듈을 로드할 수 있다.
기능별로 분리되어 작성되므로 개발효율성과 유지보수성을 향상할 수 있다. 모듈은 독립적인 파일 스코프를 갖는다.
노드에서 많이 사용하는 NPM도 모듈과 관련있다. NPM(Node Package Mansger)은 자바스크립트 패키지 매니저이다. Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아두며, 패키지 설치 및 관리를 위한 CLI(command line interface)를 제공한다.
노드에서 제공하는 http모듈이 서버로 서버를 만들 수 있다. 노드의 모든 API는 비동기 방식으로 동작하며, non-blocking I/O가 가능하고, 단일 스레드 이벤트 루프 모델을 사용하여 보다 가벼운 환경에서 높은 Request 처리 성능을 가지고 있다.
Node.js는 데이터를 실시간 처리하여 빈번한 I/O가 발생하는 SPA에 적합하다. CPU사용률이 높은 애플리케이션 사용에는 권장되지 않는다.
프로젝트를 하기위해서는 npm install이나 npm init을 해서 package.js를 만든다.
그 후 app.js 파일을 만들어 시작해보자.
웹페이지를 제공하기 위해 HTTP 서버를 사용한다. 우선 HTTP 서버를 생성하기 위해 http 모듈을 가져온다.
http.creatServer 메서드를 호출하여 HTTP 서버를 생성한다. 여기서 요청 메서드나 url에 따라 응답해준다. 서버는 URL 요청별로 다르게 응답해야하므로, 라우팅을 해주어야한다.
listen 메서들르 호출하여 접속대기를 시작한다. 이때 인자는 포트번호이다.
터미널을 열어 node app 을 실행한다. 그리고 브라우저를 열어 이 포트번호로 접속해보자.
주소창에 '127.0.0.1:3065' 혹은 'localhost:3065' 를 입력한다.
터미널에 아래와 같이 가져왔다는 표시와 함께, 브라우저에서 화면이 나타난다.
여러줄을 작성하고 싶다면 다음과 같이 작성할 수 있다.
res.write를 사용하여 서버요청을 받아 글을 작성하고 마지막은 end로 작성한다. 위와같이 html태그도 사용할 수 있다.
createServer의 인자는 요청(request)과 응답(response)를 받아온다.
즉 req를 통해 요청 값을 받아올 수 있고, res를 통해 응답을 처리할 수 있다.
http 통신에 따라 요청과 응답은 일대일로 대응한다. 그러므로 요청한번에 end는 두번 사용될 수 없다.
요청후 응답을 안보내면 특정시간(30초정도) 후에 브라우저가 자동으로 응답 실패로 처리한다.
프론트서버나 브라우저에서 의 요청을 요청 메서드나 url에 따라 응답하기 위해 라우팅이 필요하다. 주소에 따라 다른 페이지를 보여주는 라우팅을 하기 위해 라우터를 만들어보자. node.js를 사용하면 다음과 같은 모습을 가지게된다.
출저
- https://poiemaweb.com/nodejs-basics
- https://poiemaweb.com/nodejs-npm
- https://poiemaweb.com/nodejs-file-upload-example
- 제로초 노드버드 강의
Node :: morgan, 요청을 서버콘솔에 표시해주는 라이브러리 (0) | 2021.01.02 |
---|---|
Nodejs :: dotenv, 환경변수를 참조하여 데이터의 안정성 높이기 (0) | 2020.12.26 |
Nodejs :: bcrypt_ 비밀번호 암호화 하기 (0) | 2020.12.25 |
Node.js :: nodemon_ 코드 수정 시 자동 재실행하기 (0) | 2020.12.22 |
댓글 영역