Share
Sign In

Ch10. 파일 목록 알아내기 - Node.js

만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.
자 이제 공식문서에 다음 함수를 검색해보자.
공식문서를 살펴보면 2~3개의 파라미터를 받는데 path, option, callback이다.
var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); })
이 코드를 실행시켜 보면 결과는 다음과 같았다.
WebstormProjects\web_study>node syntax/readdir.js [ 'CSS', 'HTML', 'JavaScript' ]
이렇게 특정 디렉토리에 있는 파일 목록을 배열로 전달하는 형식을 가지고 있는 것이다.
APP에 적용하기
우리의 Main.js 를 다시 살펴보자.
var http = require('http'); var fs = require('fs'); var url = require('url'); 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){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); } else { fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
우선 fs.readdir() 함수를 만들고 그안으로 템플릿을 넣어보자. 다음은 main.js의 일부만 떼어낸 것이다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
이때 중앙의 <li> 태그로 묶인 부분은 파일목록을 읽어올 것이므로 과감하게 제거해버리자.
그리고 templete 변수가 시작하기전, list 변수로 반복문을 사용하여 목록을 불러올 것이다. 그리고 원래 있던 자리엔 templete literal을 사용하여 반복문이 들어갈 수 있도록 ${list}를 넣어준다.
fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; // 반목문을 통해 파일 목록 불러오기 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>' var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) }
밑에도 이와 같이 수정해주면 다음의 결과를 얻을 수 있다
var http = require('http'); var fs = require('fs'); var url = require('url'); 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 = '<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>'; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }) } else { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; 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>'; fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ var title = queryData.id; var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> ${list} <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); }); } } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
Node.js 홈으로 돌아가기
Node.js / Express.js
메인으로 돌아가기
만약 글목록이 수정된다면 우리는 main.js 의 템플릿에 있는 목차를 매번 수정해야 할것이다. 이는 엄청나게 불필요한작업이며 어떻게하면 컴퓨터가 대신할 수 있을지 생각해보자.
파일 목록 알아내기
인터넷에 nodejs read directory list를 검색해보면 fs.readdir() 함수 키워드를 얻을 수 있다.