반응형
const express = require('express');
const app = express();
const fs = require('fs');
const template = require('./lib/template.js');
app.get('/', (req, res) => {
fs.readdir('./data', (err, filelist) => {
var title = 'Welcome home!';
var description = 'Hello, Node.js';
var list = template.list(filelist);
var html = template.HTML(title, list,
`<h2>${title}</h2>${description}`,
`<a href="/create">create</a>`
);
res.send(html);
});
});
app.get('/page', (req, res) => res.send('/page로 들어왔습니다.'));
app.listen(3000, () => console.log('Example app listening on port 3000!'));
톺아보기
1. fs
const fs = require('fs');
fs(file system) 모듈에 있는 readdir() 함수로 디렉토리에 파일들을 읽어오기 위해서 모듈을 require한다.
2. template
const template = require('./lib/template.js');
본인이 정의한 template 모듈을 require하는 코드. template는 html 형식을 만들어주는 함수이다.
template.js
module.exports = {
HTML : function(title, list, body, control) {
return `
<!doctype html>
<html>
<head>
<title>WEB - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
${list}
${control}
${body}
</body>
</html>
`;
},
list : function(filelist) {
var list = '<ul>';
var i = 0;
while (i < filelist.length) {
list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
i = i + 1;
}
list = list + '</ul>';
return list;
}
};
3. fs.readdir()
app.get('/', (req, res) => {
fs.readdir('./data', (err, filelist) => {
var title = 'Welcome home!';
var description = 'Hello, Node.js';
var list = template.list(filelist);
var html = template.HTML(title, list,
`<h2>${title}</h2>${description}`,
`<a href="/create">create</a>`
);
res.send(html);
});
});
fs.readdir(path, callback(error, filelist))는 첫번째 인자에 디렉토리 경로, 두번째 인자에 콜백함수를 넣으면 해당 경로 디렉토리에 파일들의 목록을 콜백함수의 filelist 인자에 넣어준다. 그 후 template 함수로 html 형식을 만들었다.
res.send(html);은 res.writeHead(200);과 res.end(html);을 합친 것이다.
반응형
'프로젝트 > 니랑내랑' 카테고리의 다른 글
Express 5. 미들웨어 사용하기 body-parser (0) | 2020.02.19 |
---|---|
Express 4. 생성, 수정, 삭제 (0) | 2020.02.19 |
pm2 패키지 (0) | 2020.02.19 |
Express 3. 상세보기 페이지 구현 (0) | 2020.02.19 |
Express 1. Hello World (0) | 2020.02.19 |