#1 백엔드 개발 시작하기 with node.js
1. 컴파일러 언어와 인터프리팅 언어
1.1 컴파일러 언어
-
예시: C, C++, Go, Java (바이트코드로 컴파일 후 JVM에서 실행)
- 전체 소스 코드를 기계어로 번역한 후 실행한다.
- 실행속도가 빠르다.
1.2 인터프리팅 언어
- 예시: HTML, CSS, Python, JavaScript
- 한 줄 한 줄씩 해석하며 실행한다.
- 실행속도가 느리다.
- 자바스크립트는 프론트와 백엔드에서 모두 활용 가능하다.
2. Node.js
2.1 Node.js란?
- 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임
- 런타임이란 특정 개발 언어로 만든 프로그램을 실행할 수 있는 환경
- 노드는 자바스크립트로 개발된 프로그램을 각종 컴퓨터(서버 포함)에서 실행할 수 있는 런타임 환경 지원
- 2008년 구글이 V8 자바스크립트 엔진을 이용해 크롬 브라우저를 출시, 오픈소스화
- 2009년 V8엔진 기반 노드 프로젝트 시작
2.2 Node.js의 주요 특징
- 이벤트 기반 개발 모델
- 논 블로킹 I/O 모델 제공
- 가볍고 효율적인 백엔드 자바스크립트 기반 개발 프레임워크
- 자바스크립트 오픈소스 라이브러리 저장소(노드 패키지 저장소) 생태계 제공
- NPM(Node Package Manager)을 통한 노드 패키지 저장소 오픈소스 로컬 관리
3. NPM, package.json
3.1 NPM이란?
- Node Package Manager: 각종 Node Package의 설치 및 설치된 패키지들을 관리해주는 소프트웨어
- Node Package: 특정 기능을 제공하는 자바스크립트/노드 모듈들의 집합체
- Node Package 저장소: 세계 최대 재사용 가능한 노드(패키지들)와 자바스크립트 오픈소스 저장소
3.2 package.json
- 해당 패키지의 정보와 버전 및 설치된 각종 패키지 이력 정보를 관리하는 파일
- 노드 프로젝트는 하나의 package.json 파일 생성이 필요
- 프로젝트 시작 전 package.json 파일부터 생성 시작
4. 프로젝트 시작해보기
4.1 npm init
-
실행 후 순차적 정보 입력 후 최종 yes 하면 폴더 또는 프로젝트에 package.json 파일 생성이 된다.
-

npm init 이후 초기 내용을 입력해준다.

4.2 node-app 폴더 밑에 index.js 파일 생성후 작성

//console 객체는 node framework 자체에서 제공하는 내장 객체이다.
//헷갈리지 마세요. console 객체는 웹브라우저 개발자 도구 console의 로그와 다릅니다.
console.log("index.js 모듈이 시작되었습니다.");
var toDate =Date();
var toDate2 = Date.now();
//순수 자바스크리브 날짜 데이터는 기본 숫자형으로 표시된다.
console.log("현재 일시를 출력합니다. - 순수자바스크리브1:",toDate);
console.log("현재 일시를 출력합니다. - 순수자바스크리브2:",toDate2);
//대부분의 자바스크립트 오류는 오탈자입니다.
//초기 자바스크립트 언어 개발시 문제가 있다면 오탈자 또는 대소문자 문제입니다.
//자바스크립트는 대소문자를 가립니다.
4.3 node index.js
index.js파일을 실행하는 명령어
실행결과

4.4 npm install moment
node_modules(매우 무거운 폴더) 설치하는 명령어
node_modules 폴더 : 명령어에 의해 설치된 실제 노드 패키지 소스들의 물리적 파일 위치 설치된 패키지가 의존하는 다른 패키지들도 함께 설치됨.
node_modules라는 폴더가 생긴것을 확인할 수 있다.

//프로젝트에 설치된 노드 패키지를 참조합니다.
//node.js backend에서는 requiree예약어를 이용해 설치된 패키지를 참조합니다.
const moment = require('moment');
//console 객체는 node framework 자체에서 제공하는 내장 객체이다.
//헷갈리지 마세요. console 객체는 웹브라우저 개발자 도구 console의 로그와 다릅니다.
console.log("index.js 모듈이 시작되었습니다.");
var toDate =Date();
var toDate2 = Date.now();
//순수 자바스크리브 날짜 데이터는 기본 숫자형으로 표시된다.
console.log("현재 일시를 출력합니다. - 순수자바스크리브1:",toDate);
console.log("현재 일시를 출력합니다. - 순수자바스크리브2:",toDate2);
//moment 패키지를 통해 숫자 타입 날짜 데이터 포맷을 변경합니다.
var dateFormatedDate = moment(toDate2).format('YYYY-MM-DD HH:mm:ss');
//대부분의 자바스크립트 오류는 오탈자입니다.
//초기 자바스크립트 언어 개발시 문제가 있다면 오탈자 또는 대소문자 문제입니다.
//자바스크립트는 대소문자를 가립니다.
console.log("formatedDate:",dateFormatedDate)
실행결과

4.5 package.json
package.json 파일 : dependencies 영역 아래 설치된 패키지 이력(패키지명 과 버전)이 기록저장됨
package-lock.json : 설치된 패키지들 간의 의존/종속 관계 정보를 관리해줌
-
package.json파일 안의
dependencies에는 사용하는 패키지가 적혀있다.
-
만약 패키지가 삭제되어도
npm install을 입력하면dependencies에 입력되어있는 필요 패키지를 자동으로 설치해준다.
4.6 패키지 설치와 일괄 재설치 및 패키지 삭제하기
- 신규 패키지 설치하기:
npm install 패키지명또는npm i 패키지명 - 여러 패키지를 동시 설치:
npm install [패키지명] [패키지명] [패키지명] - 노드 패키지 전체 재설치:
npm install또는npm i - 설치된 패키지 삭제하기:
npm uninstall 패키지명
4.7 npm i dotenv
.env 파일 생성한다.


env파일은 환경 변수를 정의하는 데 사용되는 파일로, 애플리케이션의 설정값들을 저장한다.
.env파일을 사용하는 이유는 다음과 같다:
- 보안: 코드베이스에 민감한 정보를 직접 포함하지 않고, 별도의 파일로 관리하여 보안성을 높인다.
- 환경 분리: 개발, 테스트, 운영 환경에서 각각 다른 설정을 쉽게 적용할 수 있다.
- 유지보수: 설정값을 한 곳에서 관리하여 유지보수가 용이하다.
//프로젝트에 설치된 노드 패키지를 참조합니다.
//node.js backend에서는 requiree예약어를 이용해 설치된 패키지를 참조합니다.
const moment = require('moment');
//환경설정파일에서 환경변수를 가져오기위해 dotenv 패키지를 참조합니다.
const env = require('dotenv');
//프로젝트 루트에 있는 .env파일에 환경변수정보를 cpu프로세스에서 접근가능하게 구성합니다.
env.config();
//console 객체는 node framework 자체에서 제공하는 내장 객체이다.
//헷갈리지 마세요. console 객체는 웹브라우저 개발자 도구 console의 로그와 다릅니다.
console.log("index.js 모듈이 시작되었습니다.");
var toDate =Date();
var toDate2 = Date.now();
//순수 자바스크리브 날짜 데이터는 기본 숫자형으로 표시된다.
console.log("현재 일시를 출력합니다. - 순수자바스크리브1:",toDate);
console.log("현재 일시를 출력합니다. - 순수자바스크리브2:",toDate2);
//moment 패키지를 통해 숫자 타입 날짜 데이터 포맷을 변경합니다.
var dateFormatedDate = moment(toDate2).format('YYYY-MM-DD HH:mm:ss');
//대부분의 자바스크립트 오류는 오탈자입니다.
//초기 자바스크립트 언어 개발시 문제가 있다면 오탈자 또는 대소문자 문제입니다.
//자바스크립트는 대소문자를 가립니다.
console.log("formatedDate:",dateFormatedDate)
//환경변수중에 DB주소와 사용자 정보를 조회합니다.
console.log("DB HOST IP:",process.env.DB_HOST_IP);
console.log("DB HOST ID:",process.env.DB_USER_ID);
실행결과

4.8 개발용 패키지 설치
npm install 패키지명 --save-dev: 실제 프로덕션 배포 시에는 사용하지 않고 개발시에만 사용하는 개발용 패키지 설치 시 사용- 예: `npm install nodemon –save-dev
package.json에 추가되었음을 확인할 수 있다.

4.9 npm i -g nodemon
- 개발 컴퓨터 전역 공간에 전역 패키지 설치하기:
npm install –global [패키지명]ornpm i –g 패키지명
현재 개발중인 프로젝트 폴더에 패키지들를 설치하지 않고 컴퓨터 전역 공간에 패키지를 설치하여 컴퓨터내 모든 노드 프로젝트에서 사용 및 실행이 가능 함 c:\users\사용자계정\appdata\roamng\npm 경로내 설치 전역으로 설치한 패키지는 package.json파일에 기록되지 않음
5. NVM
5.1 NVM 설치하기
- NVM 설치 링크
nvm-setup.zip다운로드 압축해제 설치
5.2 NVM 주요 명령어
-
NVM버전 확인:
nvm version -
현재 설치된 모든 NODE FRAMEWORK 목록 버전 확인:
nvm ls -
특정 노드 프레임워크 버전 활성화 하기:
nvm use 버전명 -
특정 노드 프레임워크 버전 설치하기:
nvm install 버전명 -
특정 노드 프레임워크 삭제하기:
nvm uninstall 버전명
5.3 NVM 설치 및 사용 예시
PS F:\\\\2024_selfcode\\\\sw7_lecture\\\\Backend> nvm install 18.18.1
PS F:\\\\2024_selfcode\\\\sw7_lecture\\\\Backend> nvm ls
18.18.1
PS F:\\\\2024_selfcode\\\\sw7_lecture\\\\Backend> nvm install 20.15.0
nvm use 20.15.0
PS F:\\\\2024_selfcode\\\\sw7_lecture\\\\Backend> nvm ls
20.15.0
18.18.1
PS F:\\\\2024_selfcode\\\\sw7_lecture\\\\Backend> nvm use 18.18.1
Now using node v18.18.1 (64-bit)
댓글남기기