4 분 소요

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 파일 생성이 된다.

  • ![(/images/2024-07-22-back1/image-20240722234232843.png)

  • 예: node-app 폴더 안에서 npm init 실행 -> node-app에 프로젝트를 만들것이라는 뜻.

    image-20240722234317942

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

image-20240722234338546

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

image-20240730232928861

//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 파일을 실행하는 명령어

실행결과

image-20240722234457664

4.4 npm install moment

  • node_modules (매우 무거운 폴더) 설치하는 명령어

node_modules 폴더 : 명령어에 의해 설치된 실제 노드 패키지 소스들의 물리적 파일 위치 설치된 패키지가 의존하는 다른 패키지들도 함께 설치됨.

node_modules라는 폴더가 생긴것을 확인할 수 있다.

image-20240722234517457


//프로젝트에 설치된 노드 패키지를 참조합니다.
//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)

실행결과

image-20240722234546552

4.5 package.json

package.json 파일 : dependencies 영역 아래 설치된 패키지 이력(패키지명 과 버전)이 기록저장됨

package-lock.json : 설치된 패키지들 간의 의존/종속 관계 정보를 관리해줌

  • package.json파일 안의 dependencies에는 사용하는 패키지가 적혀있다.

    image-20240722234615494

  • 만약 패키지가 삭제되어도 npm install을 입력하면 dependencies에 입력되어있는 필요 패키지를 자동으로 설치해준다.

    image-20240722234649936

4.6 패키지 설치와 일괄 재설치 및 패키지 삭제하기

  • 신규 패키지 설치하기: npm install 패키지명 또는 npm i 패키지명
  • 여러 패키지를 동시 설치: npm install [패키지명] [패키지명] [패키지명]
  • 노드 패키지 전체 재설치: npm install 또는 npm i
  • 설치된 패키지 삭제하기: npm uninstall 패키지명

4.7 npm i dotenv

.env 파일 생성한다.

image-20240722234704708

image-20240722234720096

env파일은 환경 변수를 정의하는 데 사용되는 파일로, 애플리케이션의 설정값들을 저장한다.

.env 파일을 사용하는 이유는 다음과 같다:

  1. 보안: 코드베이스에 민감한 정보를 직접 포함하지 않고, 별도의 파일로 관리하여 보안성을 높인다.
  2. 환경 분리: 개발, 테스트, 운영 환경에서 각각 다른 설정을 쉽게 적용할 수 있다.
  3. 유지보수: 설정값을 한 곳에서 관리하여 유지보수가 용이하다.

//프로젝트에 설치된 노드 패키지를 참조합니다.
//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);

실행결과

image-20240722234745165

4.8 개발용 패키지 설치

  • npm install 패키지명 --save-dev: 실제 프로덕션 배포 시에는 사용하지 않고 개발시에만 사용하는 개발용 패키지 설치 시 사용
  • 예: `npm install nodemon –save-dev

package.json에 추가되었음을 확인할 수 있다.

image-20240722234837096

4.9 npm i -g nodemon

  • 개발 컴퓨터 전역 공간에 전역 패키지 설치하기: npm install –global [패키지명] or npm i –g 패키지명

현재 개발중인 프로젝트 폴더에 패키지들를 설치하지 않고 컴퓨터 전역 공간에 패키지를 설치하여 컴퓨터내 모든 노드 프로젝트에서 사용 및 실행이 가능 함 c:\users\사용자계정\appdata\roamng\npm 경로내 설치 전역으로 설치한 패키지는 package.json파일에 기록되지 않음

5. NVM

5.1 NVM 설치하기

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)

댓글남기기