http에 담아보내는 나의 목적 = http method
(중요)
(번외)
// HEAD, OPTIONS, CONNECT, TRACE
cf.PATCH : 일부 변경, 부분 수정일 경우에 씀 EX) 마이 페이지 : 연락처, 이메일, 집주소, 이름.. 이 있을때 보통 한두개의 요소만 바꿈 => 부분 수정을 들어간다.
..사실 PATCH가 까다로워서..현직에서는 PUT을 다들 자유롭게 쓰는 편이다.
백엔드에만 쓰이는게 아니에요!
: 넷플릭스, 에어비앤비, 링크드인, 우버, NASA에서 node.js를 씀
: 페이팔, 이베이 ..
: node.js 기반 리액트, 뷰 .. = 프론트엔드 만드는 프레임워크
node.js란
node.js는 자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼(운동장)입니다. 즉, 우리는 node.js를 이용하여 자바스크립트로 백엔드를 구현할 수 있습니다.
node.js 특징 : 싱글 스레드, 이벤트 기반, 논블로킹 I/O
싱글 스레드
: 예시 - 주방에 요리사가 한 명인 것. 주문이 밀려들어와도, 한 명이 어떻게든 쳐내야 함.
주문이 없다면? 일 안함. 주문이 들어와야만 일을 함.
이벤트 기반 : 일이 발생해야만 일을 함
논블로킹 I/O : 라면을 끓인다면, 요리사는 물 끓는 시간 동안 할 일이 없다. 볶음밥 주문이 들어온다면 요리사는 물 끓는 시간동안 볶음밥 요리를 하면 된다.
정리 : 한 명이 일을 할 때 요리를 무조건적으로 순차적으로 하지 않고 중간중간 비는 시간이 있다면 그 시간에 다른 요리를 한다.
cf. 스프링은요? : 기본적으로 싱글 스레드 구조.
실습 하면서 논블로킹 특징에 대해 알아봄
파일 : node-base/non-blocking-demo.js
모듈?
내가 만든 게 아니라, 선배 개발자들이 미리 만들어 둔 코드 덩어리
그럼, 선배들이 만들어둔 모듈을 가져다 쓰고 싶으면,,
1) 기본 내장된 것 쓰자 setTimeout() <- 내장 모듈 (아무것도 선언하지 않아도 기본으로 내장되어 있는 함수)
2) 외부 모듈 어떻게 사용하지? -> npm
도서관 : 분류 => 상세 주제의 한 권의 책을 골라냄! 기준: "출판사, 작가, 내용, ..."
=> 라이브러리 = 모듈
내가 만들고 싶은 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 하는 것
(대조 : 라이브러리 - 내가 원하는 기능을 내가 찾아서 씀
프레임워크 - 필요해보이는 라이브러리(모듈)을 미리 다 틀 안에 넣어뒀습니다.)
node.js는? 웹 브라우저에서만 구동되던 자바스크립트가 vscode에서 구현하고 작동할 수 있게 마련한 런타임(운동장, 플랫폼). 프레임워크라고 말할 수 없다.
node.js 덕분에 자바스크립트 모듈을 만들 수도 있게 되었고,
사용도 할 수 있게 되었다.
npm : 외부 모듈 사용할 수 있게 함
npm 사이트 가서 figlet 검색하고 남이 짠 코드 이용해보기
var figlet = require("figlet");
figlet("OH!!", function (err, data) {
// 첫 번째 매개변수 "OH"라는 문자열을 받아서,
// "아스키 아트를 만든 다음에"
// 두 번째 매개변수 function함수를 실행 = 콜 백
if (err) {
console.log("Something went wrong...");
console.dir(err);
return;
}
console.log(data);
});
require() -> 가져오다
예시 : setTimeout(second, 2000);
// 2초 뒤에 second함수를 실행합니다.
// 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것!
// == "콜백 함수"
매개변수에 함수가 들어간 케이스 : function(err, data){}
// function(err, data) : 함수 이름 없이 익명으로 씀
// = 이 함수를 쓸 일이 다른 곳에는 없어서..
// figlet 만든 사람이, 매개변수로 함수를 받기로 했기 때문
자바스크립트에서 문자열 쓸 때
// 2015년 이전의 자바스크립트 문자열 나타내기
console.log(num1 + " X " + num2 + " = " + num3);
// 이후 좀 더 편하게 쓰고자 고안된 템플릿 문자열
console.log(`${num1} X ${num2} = ${num3}`);
if(true){
var num1 = 7;
const num2 = 3; // 블록 {} 스코프, 초기화 이후 값을 못 바꾼다.
let num3 = 5; // 블록 {} 스코프, 초기화 이후 값 바꿀 수 있다.
num3 = 21;
// 2015년 이전의 자바스크립트 문자열 나타내기
console.log(num1 + " X " + num2 + " = " + num3);
// 템플릿 문자열
console.log(`${num1} X ${num2} = ${num3}`);
}
피글렛 삭제!
npm uninstall figlet -> 이걸로 지우면?
package.json을 확인해보면 {}가 뜸
다시 npm install figlet으로 설치하면
package.json을 다시 확인해보면
이렇게 뜬다.
key : value방식으로 작성해짐
dependencies : (내가 곧 사용할 것)이라고 이해해도 무방함
.json : 자바스크립트가 생긴 객체
npm install -g(전역으로/전체로) (뒤에 오는 파일을 설치하겠다)
: -g는 잘 안씀 (굳이 전체로 설치할 필요가 없기 때문임)
외부 모듈을 내 프로젝트에 설치하여 사용할 수 있게 함
npm이 저장소에 "외부 모듈"을 설치를 우리가 원하는 프로젝트에 자동으로 해준다
= 프로그램 설치 파일 다운로드 받아서 더블 클릭
= npm install 모듈
npm uninstall 모듈 하면 삭제 가능