서버에 맞게 다시 작성된 자바스크립트이다. 

웹 브라우저 없이 사용이 가능하다.

일렉트론 : html css js만 가지고 pc 응용 프로그램을 만들 수 있다.

npm 패키지는 세계에서 가장 큰 오픈 소스 라이브러리

 

npm이란 Javascript로 개발된 각종 모듈의 설치, 업데이트, 구성, 제거 과정을 자동화하여 관리해주는 기능이다.

 

Node.js 설치

LTS를 설치해야한다 오른쪽은 계속해서 업그레이드하는 버전이고 LTS는 안정화된 버전이다.

 

설치 후 설치 되었는지 확인하는 방법은 cmd 창에 node -v를 검색하여 설치한 버전이 뜨는지 확인해보면 된다.

npm도 npm -v로 버전 확인을 할 수 있다.

터미널에서 바로 실행도 가능하다

이를 노드의 REPL 콘솔이라고 한다.

테스트 용도로 사용한다.

 

npm

노드 패키지를 저장하는 저장소이다

즉 노드 패키지를 관리해주는 틀이다.

이미 만들어진 것을 가져와서 사용하는 것이다.

직접 만들고 싶다면 코드를 만들어 npm 저장소에 올리면 다른 사람의 나의 패키지를 사용할 수 있다.

 

npm을 통해 package.json을 생성할 수 있고, package.json이란  패키지들이 서로 의존되어 있어, 문제가 발생할 수 있는데 이를 관리하기 위해 필요하고 프로젝트에 대한 정보와 사용 중인 패키지 이름 및 버전 정보 가 담겨 있는 파일이다.

 

“name” : 패키지 이름

“version” : 패키지의 버전

“main” : 자바스크립트 실행 파일 진입점 ( 문답식에서의 entry point )

“description” : 패키지에 대한 설명

“scripts” : npm run 을 이용해 정해놓는 스크립트 명령어(이를 통해 다른 컴퓨터엣도 run으로 설치하여 그대로 사용할 수 있다.)

“license” : 해당 패키지의 라이센스

 

Node.js의 특징

1. js 사용

2. 하나의 스레드를 사용한다.

싱글스레드는 에러를 처리하지 못할 경우 멈추기 때문에 예외처리가 정말 중요하다.

 

3. Non-blocking I/O

I/O 작업 : 파일 시스템 접근 ( 읽기, 쓰기, 만들기 등 ), 네트워크 요청

Node.js는 표준 라이브러리의 모든 I/O 메서드를 비동기 방식으로 제공한다.

 

4. Event-Driven

이벤트 리스너와 콜백 함수 사용 가능

 

Call Stack ( 호출 스택 ) LIFO(Last In Frist Out) 방식이다.

 

Event Loop

https://www.korecmblog.com/node-js-event-loop/ 

 

Node.js 이벤트 루프(Event Loop) 샅샅이 분석하기

글에 들어가기에 앞서 Node.js의 이벤트 루프의 경우 공식 문서에 설명이 부족하고 이에 따라 여러 사람들이 각자 나름대로 분석한 글이 많아 무엇이 이벤트 루프의 정확한 동작인지 알기 힘듭니

www.korecmblog.com

 

Node.js의 역할 

• 간단한 로직

• 대량의 클라이언트가 접속하는 서비스 ( 입출력이 많은 서비스 )

• 빠른 개발 요구

• 빠른 응답시간 요구

• 비동기 방식에 어울리는 서비스 ( 스트리밍 서비스, 채팅 서비스 등 )

 

모듈

모듈이란 

특정한 기능을 하는 함수들이나 변수들의 집합

재사용 가능한 코드 조각

코드 추상화/ 코드 캡슐화/ 코드 재사용/ 의존성 관리

 

클래스와 거의 유사하다.

 

모듈은 다음과 같이 만든다.

 

자바스크립트 자체 모듈 시스템 문법 -> package.json 에

“type”: “module” 을 추가해 사용

이 경우에 require을 사용할 수 없다

 

 

추가적으로 중간에 객체를 알려주셨는데

키 : 값

이 형태에서 키와 값이 같다면 키만 적어줘도 작동하고 키와 값이 다르면 키와 값을 같이 작성해야한다.

즉 

const aba = "a";라고 하고 이를 

module.exports = {a : abc}; 에 넣을때 이렇게 넣어줘야 하는 것이다.

만약에 변수가 a라면 a만 적어줘도 불러올 수 있다.

 

서버만들기

http 모듈

• 웹 서버를 구동하기 위한 node.js 내장 웹 모듈

• server 객체, request 객체, response 객체를 사용한다.

• server 객체 : 웹 서버를 생성할 때 사용하는 객체

• response 객체 : 응답 메시지를 작성할 때 두 번째 매개변수로 전달되는 객체

• request 객체 : 응답 메시지를 작성할 때 첫 번째 매개변수로 전달되는 객체

 

const http = require("http");

const server = http.createServer((request, responce)=>{
    responce.writeHead(200);
    responce.write("<h1>Hello</h1>");
    responce.end("<p>End</p>");
});

server.listen(8000, function(){
    console.log("localhost : 8000포트로 실행")
});

listen(port, callback) 서버를 첫번째 매개변수의 포트로 실행한다.

Response 객체

writeHead : 응답 헤더 작성

write : 응답 본문 작성

end : 응답 본문 작성 후 응답 종료

 

localhost

• localhost는 컴퓨터 내부 주소 (127.0.0.1 )

• 자신의 컴퓨터를 가리키는 호스트이름(hostname)

Port

• 서버 내에서 데이터를 주고받는 프로세스를 구분하기 위한 번호

• 기본적으로 http 서버는 80번 포트 사용 ( 생략 가능, https는 443 )

 

html 파일 전송은 try catch 문으로 작성한다.

http 응답

• 1XX : 처리중

• 100: Continue, 102: Processing
• 2XX : 성공 • 200: OK, 201: Created, 202: Accepted

• 3XX : 리다이렉트(다른 페이지로 이동)

• 4XX : 요청 오류 • 400: 잘못된 요청, 401: 권한 없음, 403: 금지됨 • 404: 찾을 수 없음(Page not found)

• 5XX : 서버 오류

 

 

+ Recent posts