본문 바로가기
WEB/Nodejs-express

[Nodejs-express] app.get()

by Ellen571 2020. 8. 7.

[생활코딩] 홈페이지 구현
 
 
Node.js로만 된 코드

var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var pathname = url.parse(_url, true).pathname;
    if(pathname === '/'){
      if(queryData.id === undefined){
        fs.readdir('./data', function(error, filelist){
          var title = 'Welcome';
          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>`
          );
          response.writeHead(200);
          response.end(html);
        });
      } else {
      	fs.readdir('./data', function(error, filelist){
        	...
          response.writeHead(200);
          response.end(html);
        }
      } else if(pathname === ''){
      	...
          response.writeHead(200);
          response.end(html);
      } else {
      response.writeHead(404);
      response.end('Not found');
    }
});
app.listen(3000);
      

 
- http.createServer의 인자로 받은 request와 response가 처음부터 끝까지 공유되고 있음
- 정의된 부분과 사용된 부분의 거리차가 큼
 
 
Express 코드

const express = require('express');
const app = express();
var fs = require('fs');
var template = require('./lib/template');

app.get('/', function(req, res){
  fs.readdir('./data', function(error, filelist){
    var title = 'Welcome';
    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', function(req, res){ 
  return res.send('/page');
});

app.listen(3000, () => console.log('Example app listening on port 3000'));

 
- get이라는 라우트를 이용하면 처리하는 부분에 request, response를 각각 구현
- 필요한 코드끼리 그룹핑이 잘 됨

반응형