네, 좋습니다! 이제 설치도 마쳤으니, 드디어 첫 Node.js 애플리케이션을 만들어보는 시간입니다.
Hello Node.js! - 첫 애플리케이션 작성 👋
가장 간단한 형태로 Node.js 애플리케이션을 만들고 실행해보면서 Node.js의 기본적인 작동 방식을 경험해보겠습니다. 우리는 "Hello World"를 출력하는 간단한 HTTP 서버를 만들어 볼 것입니다. Java로 서블릿을 이용해 "Hello World"를 출력하는 것과 비교해보시면 재미있을 겁니다.
1. 프로젝트 폴더 생성 및 파일 작성
먼저, 작업할 폴더를 하나 만들고 그 안에 hello.js 라는 이름으로 파일을 생성합니다.
- 터미널이나 파일 탐색기를 이용하여 원하는 위치에 node-hello (또는 다른 원하는 이름) 라는 폴더를 만듭니다.
- VS Code와 같은 텍스트 편집기를 열고, node-hello 폴더 안에 hello.js 파일을 생성합니다.
이제 hello.js 파일에 다음 코드를 입력하세요.
// 1. http 모듈을 가져옵니다. Java의 import와 유사합니다.
const http = require('http');
// 2. 서버가 실행될 호스트 이름과 포트 번호를 설정합니다.
const hostname = '127.0.0.1'; // localhost와 동일합니다.
const port = 3000;
// 3. http.createServer() 메소드를 사용하여 서버 객체를 생성합니다.
// 이 메소드는 요청(request)과 응답(response) 객체를 인자로 받는 콜백 함수를 필요로 합니다.
const server = http.createServer((req, res) => {
// 4. 클라이언트 요청에 대한 응답을 설정합니다.
res.statusCode = 200; // HTTP 상태 코드 200 (성공)
res.setHeader('Content-Type', 'text/plain'); // 응답 헤더 설정 (텍스트 평문)
res.end('Hello, World!\n'); // 응답 본문 작성 및 전송 완료
});
// 5. 서버가 특정 포트와 호스트 이름에서 요청을 수신하도록 합니다.
server.listen(port, hostname, () => {
// 6. 서버가 시작되면 콘솔에 메시지를 출력합니다.
console.log(`Server running at http://${hostname}:${port}/`);
});
코드 설명:
- const http = require('http');
- Node.js의 내장 모듈인 http 모듈을 불러옵니다. 이 모듈은 HTTP 서버 및 클라이언트 기능을 제공합니다. Java에서 특정 기능을 사용하기 위해 import java.net.HttpURLConnection; 처럼 패키지를 가져오는 것과 비슷하다고 생각하시면 됩니다. require() 함수는 CommonJS 모듈 시스템의 일부입니다.
- const hostname = '127.0.0.1'; const port = 3000;
- 서버가 실행될 IP 주소(여기서는 로컬호스트)와 포트 번호를 변수로 설정합니다.
- const server = http.createServer((req, res) => { ... });
- http.createServer() 메소드를 호출하여 HTTP 서버 객체를 생성합니다.
- 이 메소드에는 함수가 인자로 전달되는데, 이 함수는 클라이언트로부터 HTTP 요청이 올 때마다 실행됩니다. 이 함수를 요청 리스너(request listener) 또는 콜백 함수(callback function) 라고 부릅니다.
- req 객체는 클라이언트의 요청에 대한 정보(URL, 헤더, 요청 본문 등)를 담고 있습니다. (Java Servlet의 HttpServletRequest와 유사)
- res 객체는 클라이언트에게 보낼 응답을 생성하는 데 사용됩니다. (Java Servlet의 HttpServletResponse와 유사)
- res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n');
- res.statusCode = 200;: HTTP 응답 상태 코드를 200 (OK, 성공)으로 설정합니다.
- res.setHeader('Content-Type', 'text/plain');: 응답의 콘텐츠 타입을 텍스트 평문(text/plain)으로 설정합니다.
- res.end('Hello, World!\n');: 응답 본문에 "Hello, World!" 문자열을 쓰고 응답 전송을 완료합니다. 이 메소드가 호출되어야 클라이언트에게 응답이 전달됩니다.
- server.listen(port, hostname, () => { ... });
- 생성된 server 객체가 지정된 port와 hostname에서 클라이언트의 연결 요청을 수신 대기하도록 합니다.
- 세 번째 인자로 전달된 함수는 서버가 성공적으로 리스닝을 시작했을 때 한 번 실행되는 콜백 함수입니다.
- console.log(\Server running at http://{port}/`);`
- 서버가 시작되면 터미널에 서버 주소를 출력하여 사용자에게 알려줍니다.
2. Node.js 애플리케이션 실행
이제 작성한 hello.js 파일을 실행해 봅시다.
- VS Code를 사용 중이라면, 내장 터미널을 엽니다. (단축키: Ctrl + ` (백틱))
- 터미널에서 hello.js 파일이 있는 node-hello 폴더로 이동합니다. (VS Code에서 폴더를 열었다면 이미 해당 경로일 것입니다.)
- 다음 명령어를 입력하여 Node.js 애플리케이션을 실행합니다.명령어를 실행하면 터미널에 다음과 같은 메시지가 출력될 것입니다.
-
Server running at http://127.0.0.1:3000/ -
Bash
node hello.js
3. 웹 브라우저에서 확인
이제 웹 브라우저를 열고 주소창에 http://127.0.0.1:3000/ 또는 http://localhost:3000/ 을 입력한 후 Enter 키를 누릅니다.
브라우저 화면에 "Hello, World!"라는 텍스트가 표시되면 성공입니다! 🎉
4. 서버 종료
터미널에서 실행 중인 Node.js 서버를 종료하려면 Ctrl + C 키를 누릅니다.
어떠셨나요? 몇 줄 안 되는 코드로 간단한 웹 서버를 만들어보았습니다. Java로 동일한 기능을 구현하려면 서블릿 클래스를 만들고, web.xml에 매핑하거나 어노테이션을 사용하고, WAS에 배포하는 등의 과정이 필요했을 텐데, Node.js는 상대적으로 간결하게 느껴지실 수 있습니다.
이 예제를 통해 Node.js가 어떻게 모듈을 사용하고, 이벤트를 처리하며 (HTTP 요청이라는 이벤트), 콜백 함수를 통해 비동기적으로 응답하는지에 대한 아주 기본적인 감을 잡으셨기를 바랍니다.
다음 섹션에서는 Java와 Node.js의 서버 사이드 패러다임을 좀 더 비교해보면서 Node.js의 특징을 더 깊이 이해해보도록 하겠습니다.
첫 애플리케이션 작성에 성공하셨나요? 궁금한 점이나 막히는 부분이 있다면 언제든지 말씀해주세요!
'프로그래밍 > NODEJS 강좌 BY GEMINI' 카테고리의 다른 글
| 2️⃣ Node.js 핵심 모듈: 강력한 기본기 다지기 (0) | 2025.05.28 |
|---|---|
| Java vs. Node.js: 서버 사이드 패러다임 비교 🔄 (0) | 2025.05.28 |
| NODE 툴 (0) | 2025.05.27 |
| NODE 개념 (1) | 2025.05.27 |
| 시작 전 목차 (0) | 2025.05.27 |