본문 바로가기

WINK-(Web & App)/Express.js (Node.js) 스터디

[2024 Node.js 스터디] 이지원 #4주차

반응형

 

3장. 노드 기능 알아보기

 

 

JavaScript는 Python과 같은 스크립트 언어이기 때문에 컴파일하지 않고 실시간으로 인터프리터가 코드를 읽어 실행하는 구조이다.

 

REPL

Read

Eval

Print

Loop

 

코드를 읽고(Read), 실행(Eval)하고, 결과를 반환(Print)하는 과정을 반복(Loop)한다고 해서 REPL(Read Eval Print Loop)이라고 한다.

 

JS 파일 실행

Python 실행과 같이 인터프리터 프로그램에 실행할 파일을 인자로 넘겨주면 된다.

 

node <fileName>

 

 

 

모듈

2개의 모듈 사용법이 사용되고 있다.

 

 

CommonJS

표준 모듈이 나오기 이전 사용되던 방식이다.

module.exports와 require("<fileName>")을 사용하여 import/export를 수행한다.

 

ECMAScript

공식 JavaScript 모듈 형식이다.

import 구문과 export 구문을 사용하여 동작한다.

 

 

차이점 CommonJS 모듈 ECMAScript 모듈
문법 require('./a');
module.exports = A;
const A = require('./a');
exports.C = D;
const E = F; exports.E = E;
const { C, E } = require ('./b');
import './a.mjs';
export default A;
import A from './a.mjs';
export const C = D;
const E = F; export { E };
import { C, E } from './b.mjs';
확장자 js
cjs
js(package.json에 type: "module" 필요)
mjs
확장자 생략 가능 불가능
다이내믹 임포트 가능(3.3.3절 참고) 불가능
인덱스(index) 생략 가능(require('./folder')) 불가능(import './folder/index.mjs')
top level await 불가능 가능
__filename, __dirname, require, module.exports, exports 사용 가능(3.3.4절 참고) 사용 불가능(__filename 대신 import.meta.url 사용)
서로 간 호출 가능

 

 

Node 내장 객체

 

global

- 브라우저 환경에서의 window와 같은 전역 객체

- 모든 파일에서 접근 가능

 

 

console

- console 출력을 수행할 수 있는 객체

- 디버깅 용도로 주로 사용된다.

 

 

타이머 함수

- global 객체 내부에 들어있음

- 코드의 실행을 예약하거나 EventLoop과 관련된 작업 예약을 수행할 때 사용된다.

- setTimeout

- clearTimeout

- setInterval

- clearInterval

- setImmediate

- clearImmediate

 

 

process

- 현재 실행되고 있는 Node 프로세스와 관련된 정보를 담고 있는 객체

 

 

 

 

 

 

4장. http 모듈로 서버 만들기

 

 

웹 어플리케이션 및 웹 페이지는 HTTPRequest와 HTTPResponse의 교환으로 동작한다.

 

HTTPRequest: 요청

HTTPResponse: 응답

 

Server: HTTPRequest를 수신하고 HTTPResponse를 반환한다.

Client: HTTPRequest를 전송하고 HTTPResponse를 반환받는다.

 

 

 

 

REST API

 

REST

- REpresentational State Transfer

 

 

HTTP 메소드 종류 및 권장 사용 방식

GET 서버 자원을 요청
POST 서버에 자원을 등록
PUT 서버의 자원을 수정
PATCH 서버 자원의 일부를 수정
DELETE 서버의 자원을 삭제
OPTIONS 요청 이전 통신 옵션을 설정

 

 

 

쿠키와 세션

Cookie

- 웹 서버가 Cookie를 반환하면 브라우저는 Cookie를 저장하고 이후 동일한 웹 서버에 요청을 보낼때 Cookie를 동봉하여 보낸다.

- 웹 서버는 Cookie를 이용하여 사용자를 식별하고 인증할 수 있다.

- 이러한 특성을 이용하여 로그인 등의 기능을 구현할 수 있다.

 

 

 

HTTP/HTTPS

 

HTTP

- Hyper Text Transfer Protocol

- 웹 서버 / 웹 브라우저 간의 통신에 사용되던 전통적인 방식

- 통신 데이터가 암호화되지 않아 보안에 취약하다.

 

 

HTTPS

- Hyper Text Transfer Protocol Secure

- HTTP의 단점을 보완하여 HTTP 통신에 TLS(SSL)을 이용한 암호화 기능을 추가한 프로토콜

- 현대의 웹 서버 / 웹 브라우저의 통신에 주로 사용된다.

- 구현을 위해 웹 서버의 SSL 인증서가 필요하다.

 

 

Cluster

- 요청이 많을 경우 하나의 Node Process로는 성능이 부족할 수 있다.

- 현대의 CPU는 대부분 멀티코어로 설계되어있다.

- Node 프로세스를 여러개 실행하여 CPU의 코어들을 많이 활용하고 개별 프로세스마다의 부하를 줄일 수 있다.

- cluster 모듈을 활용하여 Node 프로세스를 여러개 실행하고 관리할 수 있다.

 

 

 

5장. 패키지 매니저

 

npm

- Node Package Manager

- Node 환경에서의 패키지를 설치/삭제/관리할 수 있도록 도와주는 패키지 관리자이다.

- Python의 pip와 비슷한 역할을 수행한다.

 

 

 

package.json

- 현재 Node 환경에 설치된 패키지 목록과 버전을 기록하는 파일이다.

- 추후 소스코드만 복사하여 다른 환경에서 실행할 경우 package.json을 활용하여 실행 환경에 필요한 패키지를 재설치할 수 있다.

- Python의 requirements.txt와 비슷한 역할을 수행한다.

 

 

npm 명령어

 

npm install <packageName>

- <packageName> 패키지를 설치한다.

 

npm uninstall <packageName>

- <packageName> 패키지를 제거한다.

 

npm update

- 현재 환경의 모든 패키지를 업데이트한다.

 

npm update <packageName>

- <packageName> 패키지를 업데이트한다.

반응형