230724 Node.js
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를 사용하여 서버를 구현하면 장점 : 서버 하나에 여러 개의 포트를 연결해서 운영할 수 있다.
.. 근데 굳이? 현업에선 사용하지 않는다고 한다.