인프런 : https://www.inflearn.com/course/web2-node-js#
생활 코딩 : https://opentutorials.org/module/3549
소스 : https://github.com/braverokmc79/WEB2-Nodejs
App
41.글생성 UI 만들기
const http = require('http');
const fs = require('fs');
const url = require("url");
function templateHTML(title, menuList, body) {
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>${menuList}</ol>
<a href="/create">create</a>
${body}
</body>
</html>
`;
}
function templateList(filelist) {
let menuList = "";
filelist.forEach(item => {
menuList += `<li><a href="/?id=${item}">${item}</a></li>`;
})
return menuList;
}
//공통 페이지 메뉴
function commonPage(queryData, response, head, body) {
fs.readFile(`../data/${queryData.id}`, 'utf-8', function (err, description) {
let title = queryData.id;
if (head === "main") {
if (queryData.id === undefined) {
title = "Welcome";
description = "Hello, Node.js";
}
body = `<h2>${title}</h2>${description}`;
} else if (head === "create") {
title = "CREATE";
}
const template = templateHTML(title, templateList(fs.readdirSync('../data')), body);
response.writeHead(200);
response.end(template);
});
}
const app = http.createServer(function (request, response) {
const _url = request.url;
const queryData = url.parse(_url, true).query;
const pathname = url.parse(_url, true).pathname;
if (pathname === '/') {
commonPage(queryData, response, "main", "");
} else if (pathname === '/create') {
commonPage(queryData, response, "create", `<form action="http://localhost:300/process_create" method="post">
<p><input type="text" name="title" placeholder=""></p>
<p><textarea name="description" style="width:200px; height:150px" ></textarea></p>
<p><input type="submit"></p>
</form>`);
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
42.POST 방식으로 전송된 데이터 받기
const http = require('http');
const fs = require('fs');
const url = require("url");
const qs = require("querystring");
function templateHTML(title, menuList, body) {
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>${menuList}</ol>
<a href="/create">create</a>
${body}
</body>
</html>
`;
}
function templateList(filelist) {
let menuList = "";
filelist.forEach(item => {
menuList += `<li><a href="/?id=${item}">${item}</a></li>`;
})
return menuList;
}
//공통 페이지 메뉴
function commonPage(queryData, response, head, body) {
fs.readFile(`../data/${queryData.id}`, 'utf-8', function (err, description) {
let title = queryData.id;
if (head === "main") {
if (queryData.id === undefined) {
title = "Welcome";
description = "Hello, Node.js";
}
body = `<h2>${title}</h2>${description}`;
} else if (head === "create") {
title = "CREATE";
}
const template = templateHTML(title, templateList(fs.readdirSync('../data')), body);
response.writeHead(200);
response.end(template);
});
}
const app = http.createServer(function (request, response) {
const _url = request.url;
const queryData = url.parse(_url, true).query;
const pathname = url.parse(_url, true).pathname;
if (pathname === '/') {
commonPage(queryData, response, "main", "");
} else if (pathname === '/create') {
commonPage(queryData, response, "create", `<form action="/create_process" method="post">
<p><input type="text" name="title" placeholder=""></p>
<p><textarea name="description" style="width:200px; height:150px" ></textarea></p>
<p><input type="submit"></p>
</form>`);
} else if (pathname === '/create_process') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
let title = post.title;
let description = post.description;
console.log(post);
});
response.writeHead(200);
response.end("success");
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
43.파일생성과 리다이렉션
const http = require('http');
const fs = require('fs');
const url = require("url");
const qs = require("querystring");
function templateHTML(title, menuList, body) {
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>${menuList}</ol>
<a href="/create">create</a>
${body}
</body>
</html>
`;
}
function templateList(filelist) {
let menuList = "";
filelist.forEach(item => {
menuList += `<li><a href="/?id=${item}">${item}</a></li>`;
})
return menuList;
}
//공통 페이지 메뉴
function commonPage(queryData, response, head, body) {
fs.readFile(`../data/${queryData.id}`, 'utf-8', function (err, description) {
let title = queryData.id;
if (head === "main") {
if (queryData.id === undefined) {
title = "Welcome";
description = "Hello, Node.js";
}
body = `<h2>${title}</h2>${description}`;
} else if (head === "create") {
title = "CREATE";
}
const template = templateHTML(title, templateList(fs.readdirSync('../data')), body);
response.writeHead(200);
response.end(template);
});
}
const app = http.createServer(function (request, response) {
const _url = request.url;
const queryData = url.parse(_url, true).query;
const pathname = url.parse(_url, true).pathname;
if (pathname === '/') {
commonPage(queryData, response, "main", "");
} else if (pathname === '/create') {
commonPage(queryData, response, "create", `<form action="/create_process" method="post">
<p><input type="text" name="title" placeholder=""></p>
<p><textarea name="description" style="width:200px; height:150px" ></textarea></p>
<p><input type="submit"></p>
</form>`);
} else if (pathname === '/create_process') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
let title = post.title;
let description = post.description;
fs.writeFile(`../data/${title}`, description, 'utf8', function (err) {
response.writeHead(302, { Location: `/?id=${title}` });
response.end("success");
})
});
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
44.수정 링크 생성
const http = require('http');
const fs = require('fs');
const url = require("url");
const qs = require("querystring");
function templateHTML(title, menuList, body) {
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>${menuList}</ol>
${body}
</body>
</html>
`;
}
function templateList(filelist) {
let menuList = "";
filelist.forEach(item => {
menuList += `<li><a href="/?id=${item}">${item}</a></li>`;
})
return menuList;
}
//공통 페이지 메뉴
function commonPage(queryData, response, head, body) {
fs.readFile(`../data/${queryData.id}`, 'utf-8', function (err, description) {
let title = queryData.id;
if (head === "main") {
if (queryData.id === undefined) {
title = "Welcome";
description = "Hello, Node.js";
body = `<a href="/create">create</a><h2>${title}</h2>${description}`;
} else {
body = `<a href="/create">create</a> <a href="/update?id=${title}">update</a><h2>${title}</h2>${description}`;
}
} else if (head === "create") {
title = "CREATE";
}
const template = templateHTML(title, templateList(fs.readdirSync('../data')), body);
response.writeHead(200);
response.end(template);
});
}
const app = http.createServer(function (request, response) {
const _url = request.url;
const queryData = url.parse(_url, true).query;
const pathname = url.parse(_url, true).pathname;
if (pathname === '/') {
commonPage(queryData, response, "main", "");
} else if (pathname === '/create') {
commonPage(queryData, response, "create", `<form action="/create_process" method="post">
<p><input type="text" name="title" placeholder=""></p>
<p><textarea name="description" style="width:200px; height:150px" ></textarea></p>
<p><input type="submit"></p>
</form>`);
} else if (pathname === '/create_process') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
let title = post.title;
let description = post.description;
fs.writeFile(`../data/${title}`, description, 'utf8', function (err) {
response.writeHead(302, { Location: `/?id=${title}` });
response.end("success");
})
});
} else if (pathname === '/update') {
response.writeHead(200);
response.end("Not found");
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
45.수정할 정보 전송
const http = require('http');
const fs = require('fs');
const url = require("url");
const qs = require("querystring");
function templateHTML(title, menuList, body) {
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>${menuList}</ol>
${body}
</body>
</html>
`;
}
function templateList(filelist) {
let menuList = "";
filelist.forEach(item => {
menuList += `<li><a href="/?id=${item}">${item}</a></li>`;
})
return menuList;
}
//공통 페이지 메뉴
function commonPage(queryData, response, head, body) {
fs.readFile(`../data/${queryData.id}`, 'utf-8', function (err, description) {
let title = queryData.id;
if (head === "main") {
if (queryData.id === undefined) {
title = "Welcome";
description = "Hello, Node.js";
body = `<a href="/create">create</a><h2>${title}</h2>${description}`;
} else {
body = `<a href="/create">create</a> <a href="/update?id=${title}">update</a><h2>${title}</h2>${description}`;
}
} else if (head === "create") {
title = "CREATE";
} else if (head === "update") {
body = `<form action="/update_process" method="post">
<p><input type="hidden" name="id" value='${title}' ></p>
<p><input type="text" name="title" value='${title}'></p>
<p><textarea name="description" style="width:200px; height:150px" >${description}</textarea></p>
<p><input type="submit" value="수정하기"></p>
</form>`;
}
const template = templateHTML(title, templateList(fs.readdirSync('../data')), body);
response.writeHead(200);
response.end(template);
});
}
const app = http.createServer(function (request, response) {
const _url = request.url;
const queryData = url.parse(_url, true).query;
const pathname = url.parse(_url, true).pathname;
if (pathname === '/') {
commonPage(queryData, response, "main", "");
} else if (pathname === '/create') {
commonPage(queryData, response, "create", `<form action="/create_process" method="post">
<p><input type="text" name="title" placeholder=""></p>
<p><textarea name="description" style="width:200px; height:150px" ></textarea></p>
<p><input type="submit"></p>
</form>`);
} else if (pathname === '/create_process') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
let title = post.title;
let description = post.description;
fs.writeFile(`../data/${title}`, description, 'utf8', function (err) {
response.writeHead(302, { Location: `/?id=${title}` });
response.end("success");
})
});
} else if (pathname === '/update') {
commonPage(queryData, response, "update", null);
} else if (pathname === '/update_process') {
response.writeHead(200);
response.end("succes");
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
46.파일명 변경, 내용 저장
const http = require('http');
const fs = require('fs');
const url = require("url");
const qs = require("querystring");
~
const app = http.createServer(function (request, response) {
~
} else if (pathname === '/update') {
commonPage(queryData, response, "update", null);
} else if (pathname === '/update_process') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
const id = post.id;
const title = post.title;
const description = post.description;
fs.rename(`../data/${id}`, `../data/${title}`, function (err) {
fs.writeFile(`../data/${title}`, description, 'utf8', function (err) {
response.writeHead(302, { Location: `/?id=${title}` });
response.end("success");
})
})
});
} else {
response.writeHead(400);
response.end("Not found");
}
});
app.listen(3000);
47.삭제버튼 구현
~
body = `<a href="/create">create</a>
<a href="/update?id=${title}">update</a>
<form method="post" >
<input type="hidden" name="id" value='${title}' >
<input type="submit" value="delete" style="">
</form>
<h2>${title}</h2>${description}`;
~
48.삭제버튼 구현
} else if (pathname === '/delete_proecess') {
let body = "";
request.on("data", function (data) {
body = body + data;
});
request.on("end", function (data) {
const post = qs.parse(body);
const id = post.id;
fs.unlink(`../data/${id}`, function (error) {
response.writeHead(302, { Location: `/` });
response.end("success");
});
});
}
JavaScript 객체
49.형식
50.반복
for in 반복문과 for of 반복문의 차이점
- for in 반복문 : 객체의 모든 열거 가능한 속성에 대해 반복
- for of 반복문 : [Symbol.iterator] 속성을 가지는 컬렉션 전용 배열 전용
Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};
var iterable = [3, 5, 7];
iterable.foo = "hello";
for (var key in iterable) {
console.log(key); // 0, 1, 2, "foo", "arrCustom", "objCustom"
}
for (var value of iterable) {
console.log(value); // 3, 5, 7
}
var members = ['egoing', 'k8805', 'hoya'];
console.log(members[1]); // k8805
var i = 0;
while (i < members.length) {
console.log('array loop', members[i]);
i = i + 1;
}
var roles = {
'programmer': 'egoing',
'designer': 'k8805',
'manager': 'hoya'
}
console.log(roles.designer); //k8805
console.log(roles['designer']); //k8805
for (var key in roles) {
console.log('object => ', key, 'value => ', roles[key]);
}
for (var value of members) {
console.log('array => ', value);
}
51.객체 값으로서 함수
52.데이터와 처리 방법을 담는 그릇으로서 객체













댓글 ( 4)
댓글 남기기