오도원입니다.

건강과 행복을 위하여

프로젝트/니랑내랑

Express 2. 홈페이지 구현

오도원공육사 2020. 2. 19. 11:50
반응형

Express 1. Hello World 참고

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