https://opentutorials.org/course/3332/21028
생활코딩님의 Node.js강의를 참고하였습니다.
1.본문 파일생성
data 폴더에 본문파일을 작성한다.
2.파일 읽기
data/ 디렉터리에서 title에 해당하는 파일을 읽어,
그 내용을 동적으로 생성된 HTML 페이지에 포함하여 응답합니다.
// 해당 파일 읽기 (title에 해당하는 파일)
fs.readFile(`data/${title}`, 'utf-8', function(err, description) {
// HTML 템플릿 생성 및 파일 내용 포함
var template =`
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ol>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.end(template); // 응답 전송
});
// HTTP, 파일 시스템, URL 모듈 로드
var http = require('http');
var fs = require('fs');
var url = require('url');
// 서버 생성
var app = http.createServer(function(request, response) {
var _url = request.url; // 요청된 URL
var queryData = url.parse(_url, true).query; // 쿼리 데이터 파싱
var title = queryData.id; // 쿼리에서 'id' 추출
console.log(queryData);
if (_url == '/') { // 루트 요청 처리
title = 'Welcome';
}
if (_url == '/favicon.ico') { // favicon 요청 무시
return response.writeHead(404);
}
response.writeHead(200); // 성공 응답 헤더
// 해당 파일 읽기 (title에 해당하는 파일)
fs.readFile(`data/${title}`, 'utf-8', function(err, description) {
// HTML 템플릿 생성 및 파일 내용 포함
var template =`
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ol>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.end(template); // 응답 전송
});
});
// 서버가 3000번 포트에서 요청을 대기함
app.listen(3000);
반응형
'BackEnd > Node.js' 카테고리의 다른 글
[Node.js] NotFound 구현 (0) | 2024.08.14 |
---|---|
[Node.js] 파일 읽기 (0) | 2024.08.14 |
[Node.js] 동적으로 웹 생성 (0) | 2024.08.14 |