바닥코딩
node.js & npm 본문
노드 JS
WEB의 초창기 시작은 정적인 체계였습니다. 단순히 웹이라는 것은 조회 즉 읽는 기능만을 제공했습니다. 하지만 nescape 라는 웹브라우저가 등장하고 javascript를 통해 웹에 동적인 체계를 탑제하게 되면서 사용자와 상호작용이 가능해 지게 되면서 지금의 동적인 WEB이라는 것이 생겨났습니다.
그렇지만 javascript는 반대로 말해 web 브라우저라는 울타리에 갇힌 언어라고 볼 수 있었고 성능의 한계 떄문에 frot-end 엔지니어 들에게만 사용되는 언어라 여겨 졌지만 2009년 자바스크립트 언어로 구성된 서버 사이드 언어 Node.Js가 개발이 되면서 2008년 구글 개발자들이 chrome의 성능향상을 위해 javascript engine v8을 개발하면서 javascript를 통해 서버사이드와 클라이언트 단을 모두 개발할 수 있는 환경이 마련되었습니다.
web에서의 js와 노드에서의 js 차이
둘 다 javascript의 기본 문법을 따른는 것은 동일 합니다. 그렇지만 함수의 사용에서 둘은 차이를 보이는데 위에 서 언급했던 내용과 연결 되어 정적 WEB -> 동적 WEB(web 1.0 -> 2.0) 으로 발달하는 과정에서 only web에서만 작동하는 함수도 존재하기 떄문에 node.js에서의 서버 사이드에서는 사용할 수 없는 함수가 존재한게 됩니다. 따라서 javascipt를 통해 두가지 모두 제어가 가능한 것이 아니라 각각의 기능을 알아야 이 모두를 제어할 수 있습니다.
node js의 강점
1.V8 engine
= 구글을 엔진을 계속 끊임없이 개발하기 떄문에 성능발전이 지속되고 있으며 지금도 뛰어난 성능을 보이고 있지만 추후 더 훌륭한 퍼포먼스를 보일 것이다 물론 노드가 현업에서 가장 많이 사용되는 Spring에 비해 안정성이 뛰어나지 못하다는 건 부정할 수 없는 사실이지만, 대규모 프로젝트가 아니라면 node와 v8 engine은 기업에 시간대비 훌륭한 퍼포먼스를 제공할 수 있습니다
2. Event-driven 방식
= 사용자가 이벤트를 발생했을때 발생한 이벤트에 대해서만 연결을 해주기 때문에 리소스를 최소화 합니다. 대부분의 웹서버는 사용자가 이벤트가 발생할때 까지 기다리면서 자원을 계속 소비하기 때문에 자원을 소비 하게 되는데 노드의 Event_driven 방식은 리소스 관리에 있어 효울성을 제공합니다
3. Single Thread
= 이것은 장점이라고 보기는 사실 어렵습니다. 하지만 적은 양의 자원으로 일을 처리하는 것이 가능하다는 것에서는 장점이 됩니다. 하자만 만일 어느 한곳의 예외상황 이나 또는 에러가 발생한다면 애플리케이션 전체에 영향이 가는 문제를 초래할 수 있습니다.
NPM
npm은 node package manager의 약자입니다. package라는 것은 모듈이라고도 불리는 데 프로그램이라기 보다는 그것보다 조금 작은 단위들의 기능 집합이라는 의미에 가깝습니다. npm 은 이런 모듈들을 웹에서 설치하고 관리해주는 프로그램입니다. 이 모듈들을 활용했다면 그 이후에 이 모듈을 만든 개발자가 업데이트를 하거나 체크를 통해 알려줄 수 있기 떄문에 버전관리도 쉽게 이루어 질 수 있습니다
node.js는 npm을 사용하기 위해서 꼭 필요하다 node.js는 홈페이지를 방문해서 설치할 수 있습니다. npm을 설치하기 위해서는 에디터에 terminal 창이나 powershell. cmd등을 통해 실행이 되어야 하는데
npm insatall --g webpack
해다 명령어를 통해 설치 하는 것이 가능합니다.
'Node JS' 카테고리의 다른 글
node.js 웹서버 프로젝트 실시간 데이터 dashboard 만들기 4(데이터 베이스 연동) (0) | 2020.01.30 |
---|---|
node.js 웹서버 프로젝트 실시간 데이터 dashboard 만들기 3(ejs & Ajax) (1) | 2020.01.30 |
node.js 웹서버 프로젝트 실시간 데이터 dashboard 만들기 2(express 모듈) (0) | 2020.01.30 |
node.js 웹서버 프로젝트 실시간 데이터 dashboard 만들기 1(Bootstrap4) (0) | 2020.01.30 |
pm2 (0) | 2020.01.05 |