1️⃣ method

2️⃣ method의 기본
cf. PATCH: 일부 변경, 부분 수정 ex. 마이페이지에서 연락처, 이메일, 주소, 이름 중 부분만 수정
1️⃣ Node.js란?


Node.js의 등장은 Java Script를 웹 브라우저로부터 독립시켜 서버 구현을 가능케 했습니다. 여기서 런타임이란, 특정 언어가 구동되는 환경을 뜻합니다. 과거 Java Script의 런타임이 웹 브라우저였다면 Node.js로 인해 서버 구현까지 가능한 새로운 런타임이 생기게 된 것입니다.
2️⃣ Node.js 특징
cf. 스프링은?
3️⃣ 논블로킹 실습, setTimeout하면서 모듈 얘기로 넘어감
❯ node -v // 버전확인
v22.4.1
❯ node // node 실행
Welcome to Node.js v22.4.1.
Type ".help" for more information.
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.editor Enter editor mode
.exit Exit the REPL
.help Print this help message
.load Load JS from a file into the REPL session
.save Save all evaluated commands in this REPL session to a file
Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL
> .exit // 나가기
function first (){
console.log("첫 번째")
}
function second (){
console.log("두 번째")
}
function third (){
console.log("세 번째")
}
first();
setTimeout(second, 2000); // second 함수를 2초뒤에 실행
third();
// 논블로킹의 예시: 위와 같은 함수를 실행했을 때 첫번째, 세번째가 먼저 실행되고 2초뒤 두번째가 실행됨
4️⃣ 모듈(라이브러리)이란?
Node.js의 등장으로 JavaScript가 VSCODE에서 돌아가는 덕분에 모듈을 만들고 사용할 수 있게 됨
5️⃣ 라이브러리 VS 프레임워크
cf. 프레임워크: 내가 원하는 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 하는 것
(프레임워크는 서비스를 완성하는데 필요해 보이는 라이브러리(모듈)를 미리 다 틀 안에 넣어둔 것
react는 프레임워크?
1️⃣ npm, figlet 사용하기
npm install figlet // figlet(다른 사람이 작성한 코드, 피글렛필체 표현하기) 설치
var figlet = require("figlet");
figlet("Oh my god!!", function (err, data){
if (err) {
console.log("Somthing went wrong...");
console.dir(err);
return;
}
console.log(data);
});
[Running] node "/Users/joseph/Documents/webStudy/node-base/figlet-demo"
___ _ _ _ _
/ _ \| |__ _ __ ___ _ _ __ _ ___ __| | | |
| | | | '_ \ | '_ ` _ \| | | | / _` |/ _ \ / _` | | |
| |_| | | | | | | | | | | |_| | | (_| | (_) | (_| |_|_|
\___/|_| |_| |_| |_| |_|\__, | \__, |\___/ \__,_(_|_)
|___/ |___/
[Done] exited with code=0 in 0.955 seconds
2️⃣ 콜백함수 확인하기
var figlet = require("figlet"); // figlet을 requre(외부 모듈을 호출)
figlet("Oh my god!!", function (err, data){ // figlet의 매개변수에는 아스키코드로 출력할 문자열과 에러표출 함수
// 함수이름이 없음, 익명의 함수를 쓰는 이유 = 이 함수를 다른 곳에 쓸 일이 없기 때문, figlet 만든 사람이, 매개변수로 함수를 받기로 했기 때문
// 첫번째 매개변수 "Oh my god!!"라는 문자열을 받아서,
// "아스키 아트를 만든 뒤"
// 두번째 매개변수 function 함수를 실행 = 콜백
if (err) {
console.log("Somthing went wrong...");
console.dir(err);
return;
}
console.log(data);
});
// 매개변수로 전달할 수 있는 것은 변수, 값, 함수(전달하는 값에 적용하는 경우) 모두 들어갈 수 있음
function second (){
console.log("두 번째")
}
setTimeout(second, 2000); // 논블로킹의 예시: 위와 같은 함수를 실행했을 때 첫번째, 세번째가 먼저 실행되고 2초뒤 두번째가 실행됨
// 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것
// 이를 "이를 콜(부른다) 백(나중에) 함수"라 부름
3️⃣ let, const 값 변경 가능 , 템플릿 문자열
if (true){
var num1 = 7;
const num2 = 3; // 블록{} 스코프이기 때문에 'num3 is not defined'에러 발생
let num3 = 5; // 블록{} 스코프이기 때문에 'num3 is not defined'에러 발생
}
console.log(num1)
console.log(num2)
console.log(num3)
블록 스코프는 지역변수라고도 부름, 반대로 중괄호 구분 없이 모든 함수들이 다 쓸 수 있으면 전역변수
템플릿 문자열(Template String)을 사용하면 문자 표현이 쉬워짐
if (true){
var num1 = 7;
const num2 = 3; // 블록{} 스코프이기 때문에 'num3 is not defined'에러 발생
let num3 = 5; // 블록{} 스코프이기 때문에 'num3 is not defined'에러 발생
num2 = 10; // const는 상수이기 때문에 처음 지정한 값에서 바꿀 수 없음, 이대로 실행 시 에러 발생
num3 = 21; // 초기화 이후 값을 바꿀 수 있음
console.log(num1 + " X " + num2 + " = " + num3);
// 2015년 이전 js는 이렇게만 문자열 표현히 가능했음
console.log(`${num1} X ${num2} = ${num3}`);
// 지금은 템플릿 문자열 사용
}
console.log(num1)
console.log(num2)
console.log(num3)
4️⃣ http 모듈 뜯어보면서 콜백 함수 다시 확인하기
let http = require('http'); // 매개변수로 http 모듈(내장모듈)을 가져와서 http 변수에 정의함
function onRequest(request, response) {
response.writeHead(200, {'content-Type' : 'text/html'});
response.write('Hello node.js');
response.end();
}
http.createServer(onRequest).listen(8989);
// http 모듈에 createServer 함수에서 할 일을 다 한 다음에
// onRequest 콜백 함수를 실핼 시켜달라고 매개변수로 던진 것
5️⃣ npm 좀 더 뜯어보기(-g, uninstall, package.json 뜯어보기)
👉 npm은 모듈을 내 프로젝트에 설치할 수 있도록 도와줌, 저장소에 외부모듈 설치를 우리가 원하는 프로젝트에 자동으로 해줌
npm uninstall figlet
Error: Cannot find module 'figlet'
{
"dependencies": {
"figlet": "^1.7.0" // figlet의 설치를 확인할 수 있음
}
}
npm install figlet -g