메뉴 건너뛰기

조회 수 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 'Array', 배열 및 다차원 배열 선언에 대해 알아보자! 2015.02.03 11110
246 'blur', 이미지 클릭시 테두리를 없애자! file 2015.02.03 7353
245 'button', 클릭한 횟수 알아내기! file 2015.02.03 10757
244 'checkbox', 체크박스 모두체크 그리고 모두해제! file 2015.02.03 7492
243 'focus', 엔터 누르고 이동하자! file 2015.02.03 12857
242 'onmouseover', 마우스 오버 효과 - 글씨 바꾸기! file 2015.02.03 9436
241 'open', 새창을 열어보자! file 2015.02.03 6036
240 'opener', 부모창과 자식창의 텍스트를 교환하자! file 2015.02.03 7308
239 'setInterval', 타이머를 사용하자! ==setTimeout 2015.02.03 6223
238 'setTimeout', 타이머를 사용하자! file 2015.02.03 7033
237 '레이블', 반복문을 제어하자! file 2015.02.03 5540
236 '문자 ↔ 숫자', 타입을 바꿔보자! 2015.02.03 6207
235 (소스)jqury 롤오버 버튼 쉽게 만들기 file 2014.03.01 5785
234 2단계 트리메뉴 마우스오버(mouseover), 온포커스(onfocus) 구현 2015.04.06 8204
233 3자리 마다 쉼표만 찍어주는 number_format 함수 2021.03.26 225
232 3자리마다 콤마찍기 2014.02.27 5755
231 5초 후에 해당페이지로 url 옮기기 2014.02.27 10485
230 5초후 자동으로 창닫기 2015.02.03 9034
229 == / === / != / !== 차이 2018.11.07 1443
228 ajax 사용시 Internal Sever Error 뜨는 경우 2021.03.26 960
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved