카테고리 없음

230724 Node.js

hyerin1201 2023. 7. 24. 19:24

Node.js: 크롬 v8엔진으로 만들어진 자바스크립트의 런타임.(실행환경)

노드의 특징 

노드: JS 속성을 가짐.

자바스크립트 : 싱글스레드 : 동기적 프로그래밍 언어

노드 역시  : 싱글스레드이며 논 블라킹 시스템을 가진 동기적 프로그래밍 언어 (마치 비동기 언어처럼 보인다)

논 블라킹 시스템: 먼저 도착한 실행문의 작업시간이 오래 걸릴경우  뒤늦게 도착한 실행문이 먼저 처리되었을 시, 해당 결과를 먼저 리턴함

 

npm : 노드 패키지 매니저

 

 

node.js 실습1 : 레플 (REPL)

*Read Evaluate Print Loop

*터미널을 활용해 출력 - 렌더  - 구현하는 것


 

vsCode의 터미널 (Cmd) 사용..

노드를 사용해 자바스크립트 코드 구현하기

> node

ctrl + C 두 번 누르면 Node에서 밖으로 나옴


 

실행하고자 하는 js파일 앞에 node를 붙여야 한다.

(파일명을 입력할 때. js 생략가능)


자바스크립트 코드를 모듈로 만들 수 있음.

-모듈: 특정한 기능을 하는 함수 및 변수들의 집합.

-반복적으로 사용되는 기능을 모듈로 만들어 놓음으로써 여러 복수의 프로그램에서 재 사용이 가능하다.

(.. 공통 컴포넌트)

 


NPM*

다른 사람들이 만들어 놓는 소스 코드 저장소

타인의 코드 활용해서 개발 가능

 

*Package.json 파일 속성

1. name : 패키지 이름(root폴더이름이 디폴트값);

2. version : (버전이 3 자릿수인 이유:  Major(하위버전과 호환되지 않은 큰 수정사항) + Minor(하위 버전과 호환되는 작은 수정사항) + Patch(패키지 내 기능적인 버그 해결(디버깅))

3.description :작업 중인 노드 패키지 설명

4. main : 루트폴더에 있는 index.js파일을 기본파일로 인식.

5. type: cjs / es 모듈 타입 정의.

6. script: 반복적인 실행문을 실행시킬 수 있는 키워드 설정

7. author : 노드 패키지 제작자 닉네임

8. license: 저작권 및 특허 소속되어 있는 경우 표기

 

외부패키지 매니저 설치 시 npm install " " / npm i " "

외부 라이브러리 모듈 설치시 해당 모듈도 npm에 속한 하나의 패키지 이기 때문에, 해당 패키지가 의존하고 있는 또 다른 모듈 역시 프로젝트 안에 같이 설치됨.

 

서버구현 라이브러리

npm i express

npm i body-parser

npm i cookie-parser

 


npm i -D nodemon

* -D 가 붙은 건 개발용 모듈 (효율성 점검 등)

npm i -g rimraf

*-g 명령어 형식으로 사용할 수 있는 모듈 타입,  (-g 형식의 설치방식 비공식적으로 기피하는 경우가 많음)

따라서

npm i -D rimraf

(npx rimraf node_modules) 

npx: node package execute : 해당 노드 패키지를 전역 요소에 실행시킨다.

 

npm i ~~@latest : 최신버전 설치

npm search ~~ : 해당 키워드 npm을 찾아줌

npm info ~~: 해당 패키지의 정보를 찾아줌


*package-rock.json 파일은?

설치한 외부라이브러리의 의존 라이브러리의 상세한 버전들까지 볼 수 있음.

 


클라이언트(서버에 데이터를 요청하는 주체) : 웹브라우저 

서버: 데이터를 전송해 주는 주체

데이터베이스(db):

포트: 서버 내 db를 요청할 수 있는 접점..

*일반적인 웹사이트 https 프로토콜로(우편번호) 시작 (443 포트)

http는 (80 포트)


localhost : 컴퓨터의 내부 주소

내부주소를 사용해서 서버를 구현해 보자 (외부 접속 불가)

 

서버를 만들기 위한 기본적인 함수

 

정석..에러메세지까지

 

노드 js를 사용하여 서버를 구현하면 장점 : 서버 하나에 여러 개의 포트를 연결해서 운영할 수 있다.

.. 근데 굳이? 현업에선 사용하지 않는다고 한다.