📁 Node.js
- 백엔드에만 쓰이는 게 아니에요!
- : 넷플릭스, 에어비엔비, 링크드인, 우버, NASA
- : Node.js 기반 리액트, 뷰, ... 프론트엔드 프레임워크
- : 페이팔, 이베이, ...
📌 Node.js란
- Node.js는 자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼 (운동장)
- 즉, 우리는 Node.js를 이용해서 자바스크립트로 백엔드를 구현할 수 있음.
- 특징 : 싱글 스레드, 이벤트 기반, 논블로킹 I/O
- 요리사가 한 명?
싱글 스레드 ⇒ 주문이 계속 밀려들어와도, 한 명이 어떻게든 쳐내야 해요.
- 논 블로킹 I/O ⇒ 한 명이 일을 하는데 요리를 순차적으로 X. 중간 중간 비는 시간이 있으면, 다른 요리를 해요
ex. 라면 1개 (10분 중 물 끓는 시간 5분 : 요리사는 그 물만 쳐다봐요...), 볶음밥(완성 5분)
: 라면 물 끓여놓고 ⇒ 볶음밥 요리 ⇒ 라면 요리
- 이벤트 기반 ⇒ 주문이 들어와야만 일을 합니다. (=주문이 없으면, 일을 안 합니다!)
- cf. 스프링은요? (싱글 스레드가 기본 구조)
- 자바스크립트에서는 모듈을 사용할 수 있음
- 모듈이란? 쉽게 얘기하면, 자바스크립트를 노드 위에서 굴릴 수 있는 순간, 우리는 남들이 만들어 놓은 기능들을 사용할 수 있고, 직접 구현되지 않고도...
- ex)
setTimeout(); → 기본적으로 내장이 되어있는 모듈
setTimeout(second, 2000) → second를 2초 뒤에 실행시킬 거예요
function first() {
console.log("첫 번째")
}
function second() {
console.log("두 번째")
}
function third() {
console.log("세 번째")
}
first();
setTimeout(second, 2000);
third();

📁 모듈이란
📌 모듈?
- 내가 만든 게 아니라, 선배 개발자들이 미리 만들어둔 코드 덩어리
- 그럼 선배들이 만들어둔 모듈을 가져다 쓰고 싶으면..
- 기본적으로 제공하고 있는 모듈 : 내장 모듈 or 표준 모듈 (ex. setTimeout())
- 1) 기본 내장된 거 쓰자
setTimeout()
- 2) 외부 모듈 어떻게 사용하지? NPM
- "Node.js 덕분에 자바스크립트 모듈을 만들 수도 잇게 되었고, 사용도 할 수 있게 되었어요!"
- 모듈 = "라이브러리"
📌 라이브러리 vs 프레임워크
- 라이브러리
- 도서관 : 분류 ⇒ 상세 주변의 한 권의 책을 골라냄! 기준 : "출판사, 작가, 내용, ..."
- 장점 : 내가 원하는 걸 빌릴 수 있고
- 단점 : 고르기가 힘들 수도,, 찾을 시간 오래 걸리고, 도서관 가는 시간...
- = 라이브러리 = 모듈
- cf. 프레임워크 : 내가 만들고 싶은 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 하는 것
(프레임워크는, 필요해보이는 라이브러리(모듈)를 미리 다 틀 안에 넣어뒀습니다)
Node.js는 프레임워크가 아님 (자바스크립트가 구동될 수 있는 환경을 구축해주는 것)
📌 NPM
- npm : 외부 모듈을 우리가 설치할 수 있게 도와주는 친구
- 자바스크립트 모듈들을 잔뜩 모아두고 필요한 것을 찾을 수도 있고 새로 만들 수도 있음.
- npm이 저장소에 "외부 모듈"을 설치를 우리가 원하는 프로젝트에 자동으로 해준다!
- = "프로그램" 설치 파일 다운로드 받아서 더블 클릭
- = npm install 모듈
- (cf. npm은 빠르고 간편하게 삭제도 가능 = num uninstall 모듈)
- npm i 모듈명 -g : 내 컴퓨터에 있는 모든 프로젝트에 해당 모듈을 설치하는 것 // 추천하지 않습니다





var figlet = require("figlet");
figlet("Hello World!!", function (err, data) {
if (err) {
console.log("Something went wrong...");
console.dir(err);
return;
}
console.log(data);
});


📌 콜백 함수
var figlet = require("figlet");
figlet("Hanbirang", function (err, data) {
if (err) {
console.log("Something went wrong...");
console.dir(err);
return;
}
console.log(data);
});
let http = require('http');
function onRequest(request, response) {
response.writeHead(200, {'Content-Type' : 'text/html'});
response.write('Hello Node.js');
response.end();
}
http.createServer(onRequest).listen(8888);
if (true) {
var num1 = 7;
const num2 = 3;
let num3 = 5;
}
console.log(num1)
📌 템플릿 문자열
if (true) {
var num1 = 7;
const num2 = 3;
let num3 = 5;
num3 = 21;
console.log(num1 + " X " + num2 + " = " + num3);
console.log(`${num1} X ${num2} = ${num3}`);
}
console.log(num1)