웹 브라우저가 아닌 환경에서도 자바스크립트 코드를 실행시켜주는 자바스크립트 실행환경(Run Time, 구동기)
자바스크립트 : 웹 페이지 내부에 필요한 아주 단순한 기능만을 개발하기 위해 만들어짐
매우 유연하고 생산성이 높았다.
이 자바스크립트를 웹 브라우저 밖에서도 사용하고 싶다는 바람이 현실화 된 것이 Node.js
=> Node.js를 이용해 자바스크립트로 웹서버, 모바일 앱, 데스크톱 앱 개발 가능해짐
Node.js는 라이브러리나 언어가 아닌 컴퓨터에 직접 설치해서 사용하는 프로그램
https://nodejs.org/ko
LTS: Long Term Support 의 약자
웬만하면 설치 경로는 수정하지 않고 기본값을 그대로 두는 것이 좋다.
이렇게 설치가 완료 되었다는 창이 뜨면 명령 프롬프트를 열어 정말 설치가 완료 되었는지 확인해본다.
Node.js의 프로그램 단위인 패키지를 관리하는 도구
Ctrl
+ J
: vscode 하단 터미널 열어주기
새로운 패키지를 생성해달라/초기화 해달라는 의미 npm init
새로운 패키지를 생성하기 위한 몇 가지 정보를 물어본다.
package name: (section03)
을 보면 알 수 있듯이 패키지 이름이 기본값으로 설정되어있는 것을 확인할 수 있다.
이 이름 그대로 두기로 하고 enter를 눌러보면
package name: 패키지 이름 설정
version : 패키지 버전 설정 (배포할 때 유의미)
description : 패키지에 대한 설명
나머지 설정 사항도 모두 패스해주었다.
패키지를 생성할 때 설정한 기본적인 정보들이 잘 저장되어있음을 확인할 수 있다.
자바스크립트 코드를 웹 브라우저가 아닌 Node.js를 이용해 실행시켜보자.
node index.js
만약 경로가 변경되면 해당 경로를 명시해야 내가 실행하고자 하는 파일을 정상적으로 찾을 수 있다.
패키지 내부 경로가 복잡해지면 scripts 안에 매크로를 미리 만들어 둘 수 있다.
npm run
+ start
모듈을 생성하고 불러오고 사용하는 등의 모듈을 다루는 다양한 기능을 제공하는 시스템을 이야기 한다.
종류는 다양한데 Common JS (CJS)과 ES Module (ESM)을 사용해 실습을 진행했다.
ESM을 사용하기 위해서는 추가적인 설정이 필요하다.
패키지 파일을 열어 "type": "module"
설정을 추가해준다.
이는 SECTION03 패키지는 ESM 모듈을 사용하겠다는 것을 의미한다.
이때, Commom JS과 ESM은 함께 사용할 수 없기 때문에 ESM 모듈 설정을 추가하고 npm run start
를 터미널에서 실행해보면 그림과 같은 오류가 발생한다.
따라서 이와 비슷한 오류가 발생한다면 모듈을 잘못 사용한 것은 아닌지 확인해볼 수 있겠다.
여기서 주의해야 할 점은 ESM 모듈을 사용할 경우, 모듈을 import 할 때, 파일의 확장자까지 함께 기재해주어야 한다는 것이다.
import {add, sub} from "./math.js";
참고로 export를 이용해 함수를 내보내줄 때, 함수를 선언할 때 바로 export 해줄 수도 있다.
라이브러리는 프로그램을 개발할 때 필요한 다양한 기능들을 미리 만들어 모듈화 해놓은 것을 말한다.
node.js 라이브러리계의 백화점 https://www.npmjs.com/
간단한 라이브러리를 설치해서 이용해보도록 하자.
검색창에 randomcolor
검색을 하면 검색어와 정확히 일치하는 항목이 최상단에 뜨게 되는데 그 라이브러리를 선택해준다.
이때 화면 오른쪽을 보면 해당 라이브러리를 설치하기 위한 명령어가 나와있는데 이를 복사하고 터미널에서 실행시켜주면 설치가 완료된다.
패키지가 성공적으로 추가되었다는 말이 뜨면,
package.json 파일에서 dependencies가 추가된 것을 확인할 수 있다. 이때 dependencies에는 방금 다운 받은 randomcolor 라이브러리에 대한 버전 정보가 담겨있다.
^0.6.2
에서 ^
표시는 version range 를 의미하며 버전의 대략적인 범위를 나타낸다.
(정확한 버전은 package-lock.json 파일에서 확인할 수 있다.)
이렇게 random한 colour값이 잘 불러와지는 것을 확인할 수 있다.
추가적으로 node_modules와 package-lock.json 파일이 삭제되면 실제로 라이브러리 코드를 보관하는 node_modules 폴더가 사라지기 때문에 해당 라이브러리를 사용하려고 할 때 오류가 발생하게 된다.
이때 package.json의 정보만 가지고 있어도 원래 설치되었던 것처럼 라이브러리를 다시 설치할 수 있다.
npm intall
또는 npm i
package.json의 dependencies 기준으로 모든 패키지, 모든 라이브러리를 다시 설치해준다.