반응형
객체를 파일 단위로 관리하면 유지보수에 큰 도움이 된다.
파일화의 유무에 따른 차이점을 명확히 확인하려면 아래 소스 코드의 if(_url =='/')문에 집중하면 된다.
이 if문 안의 내용 외에는 달라진 것이 없다.
<template에 담겨있는 html코드를 파일화하지 않았을 경우>
var http = require('http');
var fs = require('fs');
var qs = require('querystring');
var app = http.createServer(function(request,response){
var _url = request.url;
if(_url == '/'){
var template=`
<html>
<form action="/delete_test" method="post">
<input type="text" name="title" placeholder="title">
<input type="submit" value="delete">
</form>
</html>
`;
response.writeHead(200);
response.end(template);
}
else if(_url=='/favicon.ico') console.log(' ');
else if(_url=='/delete_test'){
var querystring = '';
request.on('data',function(data){
querystring+=data;
})
request.on('end',function(){
var a = qs.parse(querystring);
var title = a.title;
fs.unlink(`../number/${title}`,function(){
response.writeHead(302,{Location: '/'});
response.end();
})
})
}
});
app.listen(3000);
<template에 담겨있는 html코드를 파일화 했을 경우>
(이 소스 코드와 동일 디렉토리에 있는 template.js에 html코드를 옮겨 담았다)
var http = require('http');
var fs = require('fs');
var qs = require('querystring');
var templates = require('./template'); //동일 디렉토리의 template 파일에서 export한 객체를 templates에 담기
var app = http.createServer(function(request,response){
var _url = request.url;
if(_url == '/'){
response.writeHead(200);
response.end(templates);
}
else if(_url=='/favicon.ico') console.log(' ');
else if(_url=='/delete_test'){
var querystring = '';
request.on('data',function(data){
querystring+=data;
})
request.on('end',function(){
var a = qs.parse(querystring);
var title = a.title;
fs.unlink(`../number/${title}`,function(){
response.writeHead(302,{Location: '/'});
response.end();
})
})
}
});
app.listen(3000);
response.end 함수의 매개변수로 이 templates를 넣어주면 파일 연동이 완료 된다.
매우 간단한 예제라 파일화로 인한 폭발적인 효과는 없지만, 큰 프로젝트일 수록 파일 단위 관리는 빛을 발휘할 것이다.
마지막으로 필자가 조금 별난 실험을 해봤는데
이렇게 module.exports를 한 파일에 2개 이상을 하게 되면
제일 마지막에 export한 문장만 유효하다.
즉 template2만 export 된다는 것이다.
어쩌고 보면, module.exports도 하나의 객체만을 담을 수 있는 객체이므로 이러한 결과가 나오는것은 당연한 것이다.
반응형
'Node.js > Node.js Basic' 카테고리의 다른 글
[Node.js] request, cheerio를 이용한 웹크롤링 (0) | 2020.10.21 |
---|---|
[Node.js] 파일 삭제 (0) | 2020.10.15 |
[Node.js] 파일생성/파일명변경, redirection (0) | 2020.10.14 |
[Node.js] URL의 query string 추출 (POST방식) (0) | 2020.10.13 |
[Node.js] 파일 조회/읽기/parse (File path 간단 설명) (0) | 2020.10.06 |
댓글