메뉴 건너뛰기

조회 수 134 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. Node.js

 

  • Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임을 의미한다.
  • 런타임이란 해당 프로그래밍 언어로 작성된 코드가 구동되는 환경을 말한다. 브라우저가 대표적인 JavaScript 런타임이다.
  • 결국 Node.js란 JavaScript 코드가 구동되는 환경을 말하며, 브라우저 외부에서도 JavaScript 프로그래밍이 가능하게 하였다.
  • 다음과 같은 두 가지 방식으로 JavaScript 런타임을 제공한다.
    1. REPL (Read, Evaluate, Print, Loop) : 사용자의 입력을 받아(Read) 그 코드를 평가(Evaluate) 및 실행하고, 그 결과를 화면에 출력(Print)해주는 작업을 반복(Loop)한다. 이는 윈도우의 cmd 혹은 리눅스의 터미널 등에서 사용될 수 있다.
    2. JavaScript로 작성된 소스 파일을 직접 실행할 수 있다. REPL로 한 줄 한 줄 읽어서 실행한 것과 동일하다고 볼 수 있다.
  • 많은 사람들이 Node.js를 장고(Django)나 스프링(Spring)과 같은 백 엔드 어플리케이션으로 간주하는 경향이 있다. 하지만 엄밀히 말하면 이는 잘못된 말이다. Node.js는 단순히 JavaScript 코드가 구동될 수 있는 환경을 말할 뿐이며, 그 환경 하에서 백 엔드 어플리케이션도 만들 수 있을 뿐이다. 예를 들어 백 엔드 어플리케이션에 해당하는 코드를 JavaScript로 작성하고 이를 Node.js 환경에서 실행시키면 그것이 곧 백 엔드 어플리케이션의 역할을 수행하는 것이다. 반면에 Node.js 환경에서는 프론트 엔드 개발도 가능하다. 예를 들어, React를 활용하여 웹을 개발할 때 사용하는 create-react-app(React 프로젝트를 생성할 때 사용), babel(JavaScript 컴파일러), 그리고 webpack(모듈 번들러) 등이 Node.js 환경에서 실행되는 대표적인 프로그램에 해당한다.
  • create-react-app, babel, webpack 등과 같이 Node.js 환경에서 실행될 수 있도록 누군가 JavaScript로 작성해놓은 각종 프로그램들을 Node.js 패키지라고 부른다. 이 용어는 이어서 설명할 npm과 아주 밀접한 관련이 있다.

 

2. npm (node package manager)

 

  • Node.js 패키지들을 쉽게 설치하거나 관리할 수 있도록 돕는 프로그램을 말하며, Node.js 설치 시 함께 설치된다.
  • 예를 들어, JavaScript 컴파일러에 해당하는 babel 혹은 모듈 번들러에 해당하는 webpack의 경우 npm을 이용하면 쉽게 설치하는 것이 가능하다.
  • package.json
    • 반드시 JSON 형식으로 작성되어야 한다. (확장자가 .json이기 때문)
    • 프로젝트의 의존성을 명시한다. 즉, 해당 프로젝트가 필요로 하는 Node.js 패키지들의 목록을 명시한다.
    • "npm install" 명령어는 package.json 파일을 읽어서 해당 프로젝트에서 필요한 Node.js 패키지들을 한 번에 설치해준다.
    • package.json 파일에 대한 자세한 내용(+ package-lock.json 파일에 대한 내용)이 궁금하다면 여기를 참조하자.

 

3. npx (since @npm 5.2.0)

 

  • node_modules/.bin 폴더에 있는 바이너리를 실행시킨다. 만약 이것이 없다면 이를 위한 Node.js 패키지를 임시로 설치한다.
  • 기본적으로, npx는 실행하고자 하는 바이너리를 시스템의 환경 변수인 $PATH에서 먼저 탐색한다. 그런데 여기서 탐색에 실패하게 되면 node_modules/.bin 폴더에서 해당 바이너리를 탐색한다. 그런데도 탐색에 실패하면, 해당 바이너리가 없다는 의미이므로 필요한 Node.js 패키지를 자동으로 임시 설치한다.
  • (--package 혹은 -p 옵션을 사용하지 않았을 때) 바이너리 탐색에 실패하면, 어떤 Node.js 패키지를 설치하게 될까? 이때는 설치해야 하는 패키지의 이름이 해당 바이너리의 이름과 같다고 가정해버린다. 따라서 실행하고자 하는 바이너리의 이름과 패키지의 이름이 다르다면, 반드시 해당 패키지를 먼저 설치해주거나 --package 혹은 -p 옵션으로 해당 패키지 이름을 명시해줘야 한다.
  • 임시 설치라는 것은 설치 후에 바이너리를 실행하고 나면 다시 해당 패키지를 삭제한다는 것을 의미한다. 이는 저장 공간을 절약할 수 있고 항상 최신 버전의 패키지를 사용할 수 있다는 장점이 있다. 따라서 create-react-app 등의 패키지 사용 시에 유용하다.

List of Articles
번호 제목 날짜 조회 수
247 비동기 작업의 원리 (JavaScript 엔진, Web API, Task Queue, Event Loop) file 2023.01.20 138
» Node.js와 npm(+ npx)의 개념 2023.01.20 134
245 바닐라 JS, ECMAScript 개념 file 2023.01.20 109
244 마우스 오른쪽버튼 , 드래그 선택 차단 2023.01.12 118
243 개발자도구 F12키 막기 file 2023.01.12 169
242 패스워드, 확인패스워드가 맞는지 체크 2023.01.12 129
241 문자열 안에 쌍따옴표, 홑따옴표 표시하는 3가지 방법 file 2021.08.20 1782
240 대소문자 변경 (대문자를 소문자로, 소문자를 대문자로) 2021.08.20 259
239 시간 계산하기 (시/분/초/ 더하기, 빼기) 2021.08.20 1707
238 날짜 계산 (Date) 마지막 날짜(말일)/윤달/윤년 처리하기 2021.08.20 1538
237 월의 마지막 날짜 계산하기 2021.08.20 242
236 Date 객체로 원하는 날짜, 시간 표현하기 2021.08.20 223
235 날짜 계산하기 (년/월/일 더하기, 빼기) 2021.08.20 2356
234 3자리 마다 쉼표만 찍어주는 number_format 함수 2021.03.26 225
233 팝업창 맨위로 올라오게 하기 2021.03.26 860
232 폼안에 태그명, 함수명 같을때 오류 2021.03.26 214
231 ajax 사용시 Internal Sever Error 뜨는 경우 2021.03.26 958
230 자주쓰는 것들 2021.03.26 203
229 utf-8일때 alert 한글 깨짐 해결 2021.03.26 3555
228 split, join, replace, replace_all 2021.03.26 204
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved