본문 바로가기

블록체인 기반 핀테크 및 응용 SW개발자 양성과정 일기

[26일차 연습] node.js 란? 노드제이에스를 사용해 간단한 server 서버 구축해보기 node.js 다운로드 방법 node.js 장점 및 특징

반응형

 

 

 

Node.js 란? 

 

Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. Wikipedia

 

 

확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

 

V8 (자바스크립트 엔진)으로 빌드 된 이벤트 기반 자바스크립트 런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.

파이썬으로 만든 트위스티드, 로 만든 펄 객체 환경, 루비로 만든 이벤트 머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, 서버 측에서 실행된다. 일부 CommonJS 명세[3]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.

 

출처 : 위키백과

 

 

어려워....아래 쉬운 풀이

 

 

 

Node.js 란 ?

JavaScript Everywhere 를 위해 

 

Node.js는 JavaScript의 든든한 지원자(?)로 프론트앤드와 백엔드 모두 개발할 수 있게 해주는 소프트웨어 플랫폼.

이 외에도 일반 프로그래밍 언어로 만들 수 있는 것들은 대부분 만들 수 있다고 한다. ex) Visual Studio도 html, node.js 기반 desk-top app 

 

심지어 NASA에서도 node.js를 사용 ex) 우주복 라이프사이클 데이터를 node.js 로 처리한다고 ,, 넷플릭스, 페이스북, 링크드인 등등. 오늘 처음node.js를 접해서 잘 모르지만 사용처가 무궁무진한듯! 

 

 

Node.js 의 특징 및 장점 

 

1. event-driven 방식 

사용자가 이벤트 발생시켰을 때만 작동되어 메모리 효율화 가능

 

2. non-blocking 처리 방식 (비동기 I/O) 

A, B, C 요청을 동시에 효율적으로 처리함 ( 끝낼 것은 끝내고 다음 일을 계속 수행. - 효율성up ) 

!= A를 ㄷ ㅏ~ 처리하고 B를 처리하고 그 다음에 C를 처리하는 방식 (blocking )이 아님 

 

*비동기 I/O 란? 

컴퓨터 과학에서 비동기 입출력(asynchronous I/O) 또는 비순차 입출력(non-sequential I/O)은 데이터 전송을 마치기 전에 기타 프로세스가 계속하도록 허가하는 입출력 처리의 한 형태이다. 출처 :위키백과

 

3. 구글 v8 엔진 

성능 뛰어난 구글의 엔진 + 앞으로 발전 가능성 높음 

 

4. 프론트, 백엔드 모두 ok 

프론트엔드에서도 사용되는 JS를 백엔드에서 동일한 언어로 구현하기 수월한 강점

(개발 시간, 비용 절감)

 

5. NPM (방대한 양의 확립된 라이브러리)

다른 개발자들이 만들어 놓은 라이브러리 소스를 공유받고 쉽게 적용할 수 있다.

ex) react vue 등

 

6. 서버 구현이 타 언어들보다는 쉽다. 그리고 코드가 짧다.  

 

 

 

Node. js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node. js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

 

 

NPM 이란?  

Node Package Manager

 

node.js 관련 패키지를 공유 / 관리해 주는 tool 

 

수업 중 node.js 를 배우는데 갑자기 npm이 나타남. 이게 뭔가 싶었는데 node.js의 라이브러리라고 해서 node.js를 다운로드 받으면 자동으로 함께 설치된다고 함. 

NPM에 등록된 패키지만 100만 개 이상...(ㅎㄷㄷ....) 때문에 직접 개발할 필요없이 설치 -> 바로 사용 가능 이점. 

 

 

위의 내용 참조글

post.naver.com/viewer/postView.nhn?volumeNo=26678816&memberNo=2521903&vType=VERTICAL

 

NASA가 Node.js를 선택한 이유

[BY 가비아] Node.js는 2009년 처음 등장한 자바스크립트 런타임입니다. Node.js가 등장하기 전까지 자...

m.post.naver.com

 

 

 

Node.js 처음 입문 

 

1. node.js 다운로드

Node.js 다운 주소- nodejs.org/ko/

설치까지 끝내면

 

2.  window에 cmd 검색 

node - v  입력 => 버젼 나오면 잘 설치된 것 

 

 

3. NPM 잘 설치되었는지 확인 방법

cmd에 

npm []   또는 

npm -v 입력

버젼 나오면 잘 깔림 ~ 

(안된다면 환경 변경(?) 무언가가 안되어 있다고 함) 

 

node 입력

console.log("hello") 입력

function aa(){console.log("Hello there");} 입력

aa() 입력

( 의문점 : 끝에 ; 를 붙여도 되는데 한 줄짜리 명령어, 마지막 명령리이라 ; 가 없어도 실행 되는건가 ? ? )

 

-> JS 처럼 구동이 된다. 

 

 

* cmd 에서 다시 C:\Users\> 요런 주소로 넘어오고 싶을 땐 : Ctrl + C 

 

 

 

4. NPM 에서 Express 라이브러리 가져오기 

 

4-1) 터미널에 ls 입력

내가 해당 파일에 잘 들어와 있는지 쳌 

 

4-2) npm init 입력 

entry point : (server.js) 에 server.js만 적도 나머지는 일단 다 엔터 ㄱ ㄱ 

 

=> 결과 : package.json 이라는 파일이 생김. 

그 안의 기본 설정값은 방금 엔터엔터한거. 변경 가능하다. 

 

 

----------------------------------------------------------실전---------------------------------------------------------------

위와 같은 오류가 나서

Ctrl + Shift + p 눌러 검색창에 Terminal: Select Default shell -> Command Prompt 클릭 -> 터미널 닫았다가 재실행하면 

 

요렇게 나오지만 왜 package.json 파일이 추가가 안되었을까...................... ( 아 엔터를 안침...........ㅋ) 

 

Is this OK? 에 엔터를 치니 -> package.json 파일 생김 

 

 

 

4-3) express 설치하기 

npm install express 입력

 

=> package-lock.json 파일 1 개와 node_modules 폴더 1개가 생김 

node_modules 안에 express가 있는지 쳌 

 

=> 아까 4-2) npm init 에서 생긴 package.json 파일에 새로운 내용이 추가된 걸 볼 수 있음. 

 

---------------------------------------------------------------실전------------------------------------------------------------

저기 오른 위 검색창에는 항상 powershell로 해놔야하는듯.. 

 node_modules 이라는 폴더와 package-lock.json 이라는 파일이 생겼다. 

node_modules 폴더 안에 찾고자한 express가 있다. express 하나 install 했는데 왜 이렇게 많은 다른 파일들이 딸려오는 이유는 express를 구동시킬 때 필요한 연결이 되어진 아이들이라고 한다. 엄청 많다. 

 

기존에 생긴 package.json의 내용에는 

  "dependencies": {
    "express": "^4.17.1"
  }

요 내용이 추가되었다. 

dependency 의지? 의존? 종속?

 

 

4-4) 터미널에 node server.js 입력 

node server.js 를 무조건 입력하는게 아니고 본인의 package.json 파일 안 "start"부분 에 친절히 나와 있다. 

입력 후 엔터까지 눌러야 브라우저 주소창에 localhost:3000 치면 hello 가 나온다. 

나는 파일 명이 practice.js 여서 아래처럼 입력했다. 근데 package.json에 왜 start 부분이 난 없을까? ? ? 

 

 

 

됏다 ~~~~~~~~~~~~~~~~~~~~~~~~

 

 

4-5) Ctrl + C 입력 (터미널 끄기) 

Ctrl + C 를 입력하면 꺼진게 됨 turned off 

 

 

 

 

간단한 서버 구축하기

const express = require('express'); 
const app = express(); 
const port = 3000;

app.get('/', (요청,응답)=>{   
    응답.send('hello');
});


app.get('/hello', (요청,응답)=>{  
    응답.send('hello2');
});


app.listen(port,()=>{ 
    console.log(`server is listening at localhost ${port}`);
});

 hello2 는 어떻게 해야 나오는건지 아직 모르겟다.

 

이거 공부해야하는데 졸리ㅣ다 낼해야징 

 

 

 

 

 

 

반응형