## 🟢 NodeJS, 질문하며 배우기

서버 사이드 JavaScript · 선행: 네트워크 · 로컬에서 node 실행

## 수업 진행

🤖

### 질문

프롬프트를 LLM에 복사

💻

### 실행

터미널에서 node / npm

👩‍🏫

### 리뷰

비동기·라우팅 정리

앞: 모듈·콜백 · 뒤: Express·EJS·실전 프로젝트

### 1. NodeJS란?

🤖 AI에게 물어보자

    NodeJS가 무엇인지, 비동기 I/O와 단일 스레드의 의미를 초보자용으로 설명해줘. MIME type과 Content-Type 관계도 한 단락으로.

👩‍🏫 선생님 리뷰

1. 요청 응답을 기다리지 않고 다음 일을 처리 → 이벤트 알림으로 결과 전달
2. text/html, application/json 등이 Content-Type 헤더로 전달됩니다

### 2. 작업환경 · HelloWorld

🤖 AI에게 물어보자

    Windows와 Linux에서 NodeJS 설치 확인(node -v) 방법과, 최소 Hello World 서버(http 모듈) 코드를 보여줘.

    const http = require('http');
    http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello NodeJS');
    }).listen(3000);

### 3. 어플리케이션 만들기

🤖 AI에게 물어보자

    Node http 서버에서 URL 경로별로 다른 HTML을 응답하는 최소 예제를 짜줘.

### 4. REPL

터미널에서 `node` 만 실행하면 대화형 셸(REPL)이 열립니다. AI에게 “Node REPL에서 자주 쓰는 단축키”를 물어보세요.

### 5. NPM

🤖 AI에게 물어보자

    npm init, package.json, npm install express --save 흐름을 설명해줘. node_modules 역할도.

### 6. fs · url 모듈

🤖 AI에게 물어보자

    Node fs로 파일 읽기/쓰기, url 모듈로 pathname 파싱하는 예제를 보여줘.

### 7. 콜백함수와 이벤트 루프 고급

🤖 AI에게 물어보자

    콜백 함수와 이벤트 루프를 초보자용으로 설명하고, events.EventEmitter 최소 예제를 보여줘.

### 8. Express 프레임워크 고급

🤖 AI에게 물어보자

    Express로 라우터를 분리하고 static 파일을 서빙하는 최소 프로젝트 구조를 제안해줘. app.js와 router/main.js 예시 포함.

    const express = require('express');
    const app = express();
    app.use(express.static('public'));
    app.get('/', (req, res) => res.send('Hello Express'));
    app.listen(3000);

### 9. Express + EJS

🤖 AI에게 물어보자

    Express에서 EJS 템플릿으로 변수 전달하고 include로 header/body를 나누는 예제를 보여줘.

### 자기주도 — 뉴스 수집(감성분석)

🤖 AI에게 물어보자

    Express + MySQL로 뉴스 목록을 조회해 EJS 테이블로 보여주는 구조를 제안해줘. 라우터와 모듈 분리 포함.

### 자기주도 — 게임 데이터 페이지

🤖 AI에게 물어보자

    외부 게임 API를 Node에서 호출해 Express 페이지에 랭킹을 표시하는 흐름을 짜줘. API 키는 환경변수로.