GitHub에서 소스를 다운 받았는데 사용하려니 npm 설치가 필요하다.
NPM에 대해 알아보니 Node.js 라는것이 나온다. 쉽게 오픈소스 받아서 적용하려고 한건데.. 뭔가 일이 커지고 있다.
* Node.js 와 NPM
NPM은 Node.js에서 사용되는 모듈을 패키지로 모아 놓은 것이다.
Node.js는 JavaScript로 개발이 가능하기 때문에 새로운 언어를 배워야 하는 부담이 적다.
하지만, 우리가 흔히 알고 있는 JavaScript로 모든것을 개발할 수 있냐면 그렇지 않다.
예를 들어 파일에 접근하려면 기존의 JavaScriptㅇ로는 힘들다. 다른 방법이 있겠지만, JavaScript 만으로는 거의 불가능하다. 그것을 해결하기 위해서는 JQuery나 PHP 등을 사용할수 있다.
위와 같이 JavaScript 만으로 해결하지 못하는 문제들을 지원하는 모듈을 통해서 해결할수 있다면, 좀 더 쉽게 프로그래밍이 가능하다.
node.js 에서는 위와 같이 JavaScript 만으로 구현하기 힘든 부분을 모듈로서 해결 할 수 있다.
* Node.js 란?
NodeJS 는 구글 크롬의 자바스크립트 엔진 (V8 Engine) 에 기반해 만들어진 서버 사이드 플랫폼이다. 2009년에 Ryan Dahl에 의해 개발되었으며 현시점 (2017-05-28) 최신 버전은 v7.10.0 이다. NodeJS 공식 사이트에서 제공되는 정보는 다음과 같다.
Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.
(출처: https://nodejs.org/ko/)
Node는 웹서버가 아니다?
Node는 웹서버가 아니다. Node 자체로는 아무것도 하지 않는다 – 아파치 웹서버처럼 HTML 파일 경로를 지정해주고 서버를 열고 그런 설정이 없다. 단, (일부 라이브러리의 도움을 받으면서) HTTP 서버를 직접 작성해야한다. Node.js 는 그저 코드를 실행할 수 있는 하나의 방법에 불과한 그저 JavasScript 런타임일 뿐이다.
* Node.js 의 특징
- 비동기 I/O 처리 / 이벤트 위주: Node.js 라이브러리의 모든 API는 비동기식이다. 멈추지 않는다는거다 (Non-blocking). Node.js 기반 서버는 API가 실행되었을때, 데이터를 반환할때까지 기다리지 않고 다음 API 를 실행한다. 그리고 이전에 실행했던 API가 결과값을 반환할 시, NodeJS의 이벤트 알림 메커니즘을 통해 결과값을 받아온다.
- 빠른 속도: 구글 크롬의 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행을 제공한다.
- 단일 쓰레드 / 뛰어난 확장성: Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용한다. 이벤트 메커니즘은 서버가 멈추지않고 반응하도록 해주어 서버의 확장성을 키워준다. 반면, 일반적인 웹서버는 (Apache) 요청을 처리하기 위하여 제한된 쓰레드를 생성한다. Node.js 는 쓰레드를 한개만 사용하고 Apache 같은 웹서버보다 훨씬 많은 요청을 처리할 수 있다.
- 노 버퍼링: Node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력한다.
- 라이센스: Node.js 는 MIT License가 적용되어있다.
* Node.js 사용 예제
Node.js 를 실제 사용해보면서 어떤것인지 더 알아봐야 할 필요성이 있다. 다음에 관련 조사를 시작하려고 한다.
* NPM이란 무엇인가?
npm이란 Node Package Modules의 약자다. Node.js에서 사용 가능한 모듈들을 패키지화시켜 모아 놓은 것이다. 이를 통해 웹에서 필요로 하는 특정기능들을 일일이 개발하지 않아도 이미 누군가가 만들어서 올려놓은 모듈을 다운로드 받는 것으로 대신할 수 있어 개발을 쉽게 할 수 있는 것이다. 물론 Github에 올라가있는 모듈을 다운로드받아 빌드하고 사용해도 되지만 어떤 모듈들이 있는지 알 수도 없고 버전관리 등에도 불편함이 생길 수 밖에 없다. 그래서 Isaac Z. Schlueter라는 개발자가 만든 npm은 Node.js 개발자들에게 이제 필수로 자리잡은 상황이다
'프로그래밍 > Web' 카테고리의 다른 글
웹 기획을 위한 툴 - 파워목업(Power Mockup) (0) | 2022.08.29 |
---|---|
NPM에서 SASS(scss) 파일을 CSS로 컴파일(node-sass) (0) | 2017.05.28 |
Ruby를 이용한 SASS 설치 (SCSS to CSS 변환) (0) | 2017.05.28 |