메뉴 건너뛰기

조회 수 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
번호 제목 날짜 조회 수
167 Location 객체 - URL 파싱 - URL에서 전달인자 추출하기 함수 작성 file 2015.06.19 8523
166 location.href 로 새창 여는 방법 (target=_blank 효과) 2015.06.19 9390
» Node.js와 npm(+ npx)의 개념 2023.01.20 134
164 onkeypress 키보드 이벤트 처리하는 법 – text, textarea 2016.09.21 7001
163 opener 값전달, 함수실행.(자식창에서 부모창으로 값전달, 함수실행) 2021.03.26 1437
162 response.setHeader 2016.12.22 7358
161 select 당일 날짜 출력 file 2014.03.01 5780
160 SelectBox에서 선택된 항목의 텍스트, 값 가져오기 선택 옵션 넣기. 2018.07.04 4014
159 setTimeout 대체 스크립트 함수 (일시멈춤) 2016.12.22 6241
158 setTimeout() / clearTimeout() / setInterval() 2016.12.22 8162
157 span - 동적으로 글자 바꾸기, 보이기 안보이기 2019.01.16 1446
156 split, join, replace, replace_all 2021.03.26 204
155 Textarea 글자수 체크 2014.03.01 5651
154 textarea의 글자수 제한 2014.02.27 6161
153 top 부분이 고정되는 슬라이딩 메뉴입니다 file 2014.03.01 5752
152 utf-8일때 alert 한글 깨짐 해결 2021.03.26 3555
151 [INPUT BOX] 텍스트박스(INPUT 박스) 가 동적으로 추가,삭제됩니다 2017.02.19 8526
150 [jQuery] textarea 글자수 카운트 2014.03.01 7420
149 [jQuery] 상위부터 차례로 지역 선택하기 2014.03.01 45959
148 [jQuery] 실시간 검색어 순위 순서대로 보여주기 2014.03.01 12017
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved