
-패키지 찾기: npm.jsorg
-패키지 설치: npm i 패키지이름
-패키지 관리 파일(관리자): package.json
*초기화: 터미널 창> cd.. (가장 상위 폴더로 이동) > npm init
템플릿 리터럴
백틱을 사용해 변수 삽입 → ${변수}
*문자열과 변수를 연결해서 사용할 때는 백틱을 사용하자!
📩폴더 이동 (터미널):
-cd 폴더명
-cd 후 폴더 끌어다 놓기(절대 경로)
함수 선언 방식
선언적 함수: function 함수이름(매개변수) {}
함수 표현식: let greeting = function(name) {}
즉시 실행 함수: (function(a, b) { ... })(100, 200);
화살표 함수: let 변수 = () => {} (return 생략 가능)
▪️앞에 괄호: 어떠한 값을 받는지 매개변수를 나타냄 , 받을 인자가 있으면 입력
▪️중괄호: return 값 입력 {return '안녕하세요'} ==> return을 생략하고 '안녕하세요'; 로만 나타내도 됨.
매개변수와 인수의 차이
-매개변수: 함수 선언 시 받는 값
-인수: 함수 호출 시 전달하는 값
함수 중간에 시간이 지연되는 작업이 포함되어 있을 경우
-> 빨리 처리할 수 있는 작업부터 하고, 시간이 걸리는 작업은 나중에 처리함.
자바는 동시작업되지 않는 언어이기 때문.
비동기 처리와 콜백 함수
시간이 걸리는 작업(예: 파일 읽기)은 비동기적으로 실행
콜백 함수: 특정 함수가 실행된 후 실행될 함수를 매개변수로 전달
function displayB(callback) { console.log("B 실행"); callback(); } displayB(displayC);

▪️CommonJS (Node.js 기본 모듈 시스템)
▪️ES 모듈 시스템 (ECMAScript 표준)
▪️path 모듈: 경로 관련 기능 제공
__dirname → 현재 파일의 경로
path.join() → 경로 합치기

fs 모듈: 파일 시스템 관리
Node.js의 fs(File System) 모듈은 파일을 읽고 쓰거나, 디렉토리를 관리하는 기능을 제공함.
const fs = require('fs');
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});readdir) fs.readdir('./', (err, files) => {
if (err) throw err;
console.log(files);
});readFile) fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});writeFile) fs.writeFile('example.txt', 'Hello, Node.js!', (err) => {
if (err) throw err;
console.log('파일 저장 완료!');
});Node.js의 http 모듈을 이용하면 간단한 웹 서버를 만들 수 있음.
Ctrl + Shift + I 개발자 도구에서 네트워크 요청 확인 가능 const http = require("http");
const server = http.createServer((req, res) => {
console.log("요청 발생");
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello, World!");
});
server.listen(3000, () => {
console.log("서버가 3000번 포트에서 실행 중...");
});
localhost:3000 접속 시 "Hello, World!" 응답 확인 가능 Ctrl + C 라우팅이란 클라이언트가 요청한 URL에 따라 적절한 응답을 보내는 것.
req.url: 요청 경로
req.method: 요청 방식 (GET, POST 등)
예제 (http 모듈 사용)
const server = http.createServer((req, res) => {
console.log(`요청 경로: ${req.url}, 요청 방식: ${req.method}`);
res.end();
});
server.listen(3000);
const server = http.createServer(({ url, method }, res) => {
if (url === "/" && method === "GET") {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("홈페이지");
} else {
res.writeHead(404);
res.end("페이지를 찾을 수 없음");
}
});
server.listen(3000);
Express는 Node.js의 웹 프레임워크로, HTTP 서버를 쉽게 만들 수 있음.
npm i express
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello, Express!");
});
app.listen(3000, () => {
console.log("서버가 3000번 포트에서 실행 중...");
});
nodemon은 서버를 자동으로 재시작해주는 도구 npm i nodemon --save-dev -gnodemon app.jsapp.get("/", (req, res) => res.send("홈페이지"));
app.post("/submit", (req, res) => res.send("데이터 제출됨"));
app.put("/update", (req, res) => res.send("데이터 수정됨"));
app.delete("/delete", (req, res) => res.send("데이터 삭제됨"));
:id처럼 변수를 URL에 포함 가능 app.get("/user/:id", (req, res) => {
res.send(`사용자 ID: ${req.params.id}`);
});localhost:3000/user/123 요청 시 "사용자 ID: 123" 응답 미들웨어는 요청과 응답 사이에서 특정 기능을 수행하는 함수.
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => res.send("홈페이지"));
router.get("/about", (req, res) => res.send("소개 페이지"));
module.exports = router;
const express = require("express");
const app = express();
const router = require("./routes");
app.use(router);
app.listen(3000, () => {
console.log("서버 실행 중...");
});
미들웨어는 요청을 가로채 처리하거나 응답을 수정할 수 있음.
app.use(express.json()); // JSON 요청을 받을 수 있도록 설정
app.use(express.urlencoded({ extended: true })); // 폼 데이터 처리
app.use((req, res, next) => {
console.log(`요청 경로: ${req.url}`);
next(); // 다음 미들웨어로 전달
});
