개발

node.js, NPM은 무엇인가

pizzaYami 2023. 11. 28.

 

 

처음으로 개발을 시작할 때 node.js와 NPM을 깔아서 시작을 하라고 해서 시키는 대로하고 왜 이것을 설치해야되는지 몰랐다.

개발을 어느정도 공부한 지금이라도 이 두 가지에 대해서 아무것도 모르면 안 될 것 같아서 글을 작성하게 되었다.

 

Node.js가 만들어진 배경

https://www.facebook.com/javascript4u/posts/how-to-make-a-website-using-html-css-and-javascript-step-by-step-httpsmoriohcomp/1499183006955896/

 

웹 페이지를 만들기위해서는 뼈대가 되는 HTML, 꾸며주는 CSS, 동작하게 하는 JS가 필요하다.

여기서 JS는 HTML 조작과 변경을 위해서 만들어진 언어이다. JS를 해석하고 동작하게 하기 위해서는 엔진이 필요하다. 과거에는 브라우저의 엔진을 통해서 실행을 시켰고 반드시 JS는 브라우저를 통해서 실행하는 방법밖에 없었다.

 

브라우저를 통해서만 JS를 실행하면 다음과 같은 불편함이 있었다.

  • 자바스크립크의 빠른 발전보다 웹 브라우저의 지원 속도가 늦다.
  • 브라우저와 무관한 프로그램을 만들 수 없었다. (핸드폰, 태블릿)
  • 프론트와 백엔드가 사용하는 언어가 달랐다. 웹에서 보여주는 부분은 반드시 JS를 사용하고, 서버는 Reby, Java 등 다른 언어를 써서 만들었어야 했다.

이러한 불편함을 없애기 위해서 Node.js가 만들어졌다.

 

Node.js는 JS를 브라우저 내에서 말고도 다른 환경에서도 실행이 가능하도록 하였다.

브라우저가 없어도 Node.js만 있으면 JS문법이 실행이 되었다. 덕분에 JS를 프로그래밍 언어처럼 사용하기 시작하였으며 server도 JS로 만들 수 있게 되었다. 마침내 한 가지 언어로 전체 웹 페이지를 만들 수 있게 된 것이다.

 

Node.js란 무엇인가

Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다.

 

 

각 브라우저는 엔진을 가지고 있다고 하였는데 Chrome의 엔진인 V8엔진을 가져와 서버쪽에서 JS 구동되도록 환경을 만든 것이 Node.js이다. 

JS런타임이라는 것은 자바스크립트가 구동되는 환경을 이야기한다. 그러므로 Node.js를 활용해서 자바스크립트를 구동시킬 수 있는 환경을 만들어주는 것이다.

 

Node.js를 왜 사용해야 하는가?

 

1. 최신 스펙으로 개발

자바스크립트 스펙의 빠른 발전에 비해 브라우저의 지원 속도가 느리다. 최신 스펙이 업데이트 되더라도 브라우저에 맞는 환경으로 변환해줘야하는데 이 때 바벨이나 웹팩이 없으면 불가능하다.이런 바벨, 웹팩과 같은 도구들은 Node.js 위에서 돌아가기 때문에 Node.js가 뒷바침 되어야 한다. 마찬 가지로 TypeScript, SASS를 사용하려면 전용 트랜스파일러(;소스 코드를 한 프로그래밍 언어에서 다른 프로그래밍 언어로 변환해주는 도구)가 필요하다. 이것도 Node.js환경이 뒷받침이 되어야한다.

 

2. 빌드의 자동화

개발이 완료되면 파일을 압축하고, 폴리필(;브라우저가 지원하지 않는 JS코드를 지원 가능하도록 변환한 코드)을 추가하고, 코드를 난독화하고 일련의 단계를 진행한 뒤 배포를 진행한다.Node.js는 이러한 일련의 빌드 과정을 이해하는데 적지 않은 역할을 한다. 뿐만 아니라 라이브러리 의존성을 해결하고, 각종 테스트를 자동화하는데도 사용된다.

 

3. 개발 환경 세팅

React를 예로 들면, CRA(create-react-app)이라는 명령어를 사용해서 손쉽게 React 개발환경을 구축할 수 있다. 하지만 경우에 따라 CRA를 사용하지 못할 수도 있는데 이런 상황에서 Node.js에 대한 이해가 없다면 개발 환경 세팅에 애를 먹을 수 있다.

 

NPM은 무엇인가.

 

NPM은 Node package manager의 약자로, 말 그대로 Node.js 개발자들이 패키지(모듈)의 설치 및 관리를 쉽게 하기 위해 도와주는 매니저(관리 도구)이다.

 

각 언어와 OS에 따라서 패키지 매니저를 가지고 있는데 다른 유명한 패키지 매니저로는

 

  • Python의 pip
  • Java의 Maven, Gradle
  • PHP의 Composer
  • Ruby의 RubyGems

Linux환경에서는 

  • 레드햇 계열의 rpm, yum
  • 데비안 계열의 dpkg, apt
  • 맥 OS의 Homebrew

 

Node.js가 많이 사용됨에 따라 Node.js의 패키지 매니저인 NPM 또한 많이 사용되었다.(node.js를 깔면 NPM이 자동으로 깔림)

 

npm의 사용하는 이유

  • 프로그램 제작시 어떤 기능을 구현할 때 자신이 직접 프로그래밍하지 않아도 동일한 기능을 남이 만든 코드를 쉽게 사용가능하다.
  • 코드의 재사용성이 높아지고 유지 보수가 쉽고 형상관리가 용이하다.
  • 패키지 관리: NPM은 Node.js 환경에서 여러 모듈들을 패키지화하여 관리하는 저장소 같은 역할을 한다. 패키지를 직접 만들어 배포할 수 있고 다른 사람이 배포한 여러 패키지 모듈들을 설치해 프로젝트에 적용시킬 수도 있다
  • 버전 관리: 프론트엔드 프로젝트에서는 필수적인 도구로, Vue, React와 같이 자바스크립트 프레임워크를 사용하는 경우에는 NPM으로 쉽게 프로젝트의 버전 관리를 할 수 있습니다.

 

cjy0029 - 프론트엔드 개발자 Node.js 알아야할까?

김정환블로그 - 프론트엔드 개발환경의 이해: npm

Deprecated - [Node.js] npm 소개와 설치 및 사용법

댓글