코딩 공부/React.js 리액트

[3주차 - 1] Node.js 기초

recordmastd 2024. 10. 12. 22:46

Node.js를 배워야 하는 이유

: Node.js 기반으로 동작하는 기술이 많음 (React.js, Next.js, Vue.js ...)

 

Node.js란?

자바스크립트의 런타임(= 실행환경, 구동기)

웹브라우저가 아닌 환경에서도 자바스크립트를 실행시켜준다

 

node.js LTS버전으로 설치 - 모든 체크박스 체크 - 설치완료 후 cmd로 node.js와 npm의 버전 확인

 

프로젝트

: 특정목적을 갖는 프로그램의 단위

 

패키지

: Node.js에서 사용하는 프로그램의 단위

node.js 패키지를 생성하려면 패키지의 뿌리가 될 루트 폴더를 생성해야 한다

패키지 생성하기

루트 폴더 열기 - 터미널 열기(ctrl + j) - npm init으로 초기화 및 생성 - 아직 실습단계이므로 디폴트 상태인 파일을 생성

파일의 경로가 뜨고 기본 정보를 물어본다

생성을 마치면 폴더 내에 json파일이 생성된 것을 확인할 수 있다

json 파일에서 기본 정보 확인 가능

json파일 생성 확인 후 index.js파일을 생성한다

// index.js
console.log("안녕 Node.js")
// 터미널
node index.js 		// 안녕 Node.js가 출력된다

node 뒤에 실행시키고 싶은 파일명을 입력하면 된다

※ 파일명의 경로는 정확히 기입해야 오류 발생이 일어나지 않는다

(scr폴더 내에 index.js파일이 있다면 터미널에서 node scr/index.js 라고 입력해야 함)

 

패키지 스크립트

: script 항목 안에 있는 일종의 매크로, 폴더와 파일이 많아져서 복잡해졌을 때 패키지 스크립트를 사용하면 편리하다

스크립트의 이름인 start로 파일을 터미널에서 명령을 한 번에 실행 가능

(스크립트명은 사용자 임의대로 설정 가능)

스크립트를 사용하여 명령을 실행한 모습


Node.js의 모듈 시스템 (CJS, ESM)

모듈 기본적인 개념

Common JS

모듈이라는 객체에 exports라는 프로퍼티 값으로 모듈을 내보내고, require() 함수를 사용하여 모듈을 가져온다

 

 

 

ES 모듈 시스템 (React에서도 사용)

export 키워드를 사용하여 모듈을 내보내고, import 키워드를 사용하여 모듈을 가져온다

json파일은 주석 입력 불가

"type": moudule을 json파일에 입력하면 해당 폴더(section3)는 앞으로 ES 모듈 시스템을 사용하겠다고 선언한 것이다

 

index.js를 실행하면 나오는 에러 메세지

※CJS와 ESM은 동시에 사용할 수 없으므로 한 가지 방식만 사용해야 한다

 

 

- export를 함수 앞에 붙여도 똑같이 import할 수 있다

- default 설정을 하면 사용자 임의대로 정한 이름에는 default값이 설정된다

(default가 아닌 경우 이름이 동일해야 한다)

- 한 번에 import를 할 수 있다


Node.js 라이브러리

https://www.npmjs.com/ 에서 라이브러리를 다운로드할 수 있다

 

설치하고 싶은 라이브러리를 찾은 후 install항목에 있는 문장을 터미널에 입력하면 라이브러리가 설치된다

npm i randomcolor

설치 후 모습

- dependencies에 randomcolor와 라이브러리의 버전이 추가된다

- package-lock.json(package.json보다 자세하게 라이브러리에 대한 정보가 저장되어 있음)과

node_moudules(설치한 라이브러리가 실제로 저장되는 곳)이 추가된다

package.json에는 대략적인 버전 ^0.6.2 이 명시되어 있음(버전 앞에 ^있는 건 대략적 표기)

 

 

package-lock.json파일이 사라지면 터미널에서 npm install/npm i를 입력하면 package.json의 dependencies의 정보를 기준으로 라이브러리가 다시 설치된다

 

파일을 공유할 때는 무거운 node_moudules을 제외시켜도 상관없다