Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- slow and steady
- database
- sql
- setTimeout()
- JS #ํ๋ก์ ํธ
- callback
- mysql
- db
- js
- ajax
- prj
- https://m.blog.naver.com/tt2t2am1118/221010125300
- promise
- webpack
- ๊ฒ์
- ๋๊ธฐ
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- Import
- addEventListener
- Porject
- ํผํ
- async
- execCommand
- ๋น๋๊ธฐ
- await
- json
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- object
- eport
- Project
Archives
- Today
- Total
C-log
๐Nodejs : plus Alpha - ๋ถ์ํ๊ธฐ ๋ณธ๋ฌธ
728x90
์ด๋ฒ ์๊ฐ์๋ ์ง๋ ํฌ์คํ ์์ ๋งํ๋ ์ฝ๋๋ฅผ ๋ถ์ํ๋ ์๊ฐ์ ๊ฐ์ ธ ๋ณผ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ถ์ํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค. section26๋ถ๋ถ์ ์ค์ฌ์ผ๋ก ๋๋ฌ ๋ณด๋ ค๊ณ ํ์ผ๋ ํจ์๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ section24์ ์๋ 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) {
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 {
response.writeHead(404);
response.end('Not found');
}
});
app.listen(3000);
URL
๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
var http = require('http');
var fs = require('fs');
var url = require('url');
- http ๋ชจ๋์ HTTP ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- fs ๋ชจ๋์ ํ์ผ ์์คํ ์ ์ ๊ทผํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- url ๋ชจ๋์ URL์ ํด์ํ๊ณ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์๋ฒ ์์ฑ
var app = http.createServer(function (request, response) { ... }
- http.createServer ํจ์๋ ์๋ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์ด ํจ์๋ ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค ์คํ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค. ์ฌ๊ธฐ์ request๋ ์์ฒญ ์ ๋ณด๋ฅผ, response๋ ์๋ต์ ๋ค๋ฃจ๋ ๊ฐ์ฒด์ด๋ค.
์์ฒญ URL ๋ถ์
//var app = http.createServer(function (request, response) { ~
// ~ function (request, response){ ~
var _url = request.url;
var queryData = url.parse(_url, true).query;
var pathname = url.parse(_url, true).pathname;
if (pathname === '/') {...}
- request.url์ ํตํด ์์ฒญ๋ฐ์ URL์ ๊ฐ์ ธ์จ๋ค.
- url.parse() ํจ์๋ฅผ ์ด์ฉํ์ฌ URL์ ํ์ฑํ๊ณ ์ด๋ true ์ต์
์ ์ฃผ๋ฉด ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ฒด๋ก ๋ณํํ๋ค. query๋ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง ๋ถ๋ถ, pathname์ URL์ ๊ฒฝ๋ก ๋ถ๋ถ์ ๋ํ๋ธ๋ค.
- ์ฌ๊ธฐ์ request๋ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์,๋ธ๋ผ์ฐ์ )๋ก ๋ถํฐ ๋ฐ๋ ์์ฒญ(request)์ ์๋ฏธํ๋ค.
pathname '/'
//function (request, response){ ~
if (pathname === '/') {...}
- ์์ฒญ๋ฐ์ ๊ฒฝ๋ก๊ฐ ๋ฃจํธ('/')์ธ ๊ฒฝ์ฐ์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
์ฟผ๋ฆฌ ๋ฐ์ดํฐ์ 'id' ํ๋๊ฐ ์๋ ๊ฒฝ์ฐ
// if (pathname === '/') { ~
if (queryData.id === undefined) {...}
- ์ง๊ธ๊น์ง์ url์ 'localhost:3000/(pathName:'/')(quesryString:undfiend)'์ธ ์ํ๋ฅผ ์๋ฏธํ๋ค. ์ฆ, URL์ด 'localhost:3000/'์ธ ๊ฒ์ด๋ค.
data ๋๋ ํ ๋ฆฌ ์ฝ๊ธฐ
(์๋ฒ ๊ฐ๋ฐ ํ ๋ ๊ผญ ์ฌ์ฉ๋๋ ๋ถ๋ถ์ ์๋๋ค.)
// if (queryData.id === undefined) { ~
fs.readdir('./data', function (error, filelist) {
- fs.readdir() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ./data ๋๋ ํฐ๋ฆฌ์ ํ์ผ ๋ฆฌ์คํธ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๋๋ค. ์ฝ๊ธฐ ์๋ฃ ํ ์ฝ๋ฐฑ ํจ์๊ฐ ์คํ๋๋ค.
HTML ๋ชฉ๋ก ์์ฑ
// fs.readdir('./data', function (error, filelist) { ~
var title = 'Welcome';
var description = 'Hello, Node.js';
var list = '<ul>';
// ./data ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ ๋ฆฌ์คํธ๋ฅผ while๋ฌธ์ผ๋ก ์ฝ์ด ๋ธ๋ค.
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 = `~`
- ๊ธฐ๋ณธ ์ ๋ชฉ๊ณผ ์ค๋ช ์ ์ค์ ํ๋ค.
- <ul> ํ๊ทธ๋ก ์์ํ๋ ๋ชฉ๋ก์ ์ด๊ธฐํํ๊ณ ๋๋ ํฐ๋ฆฌ์ ๊ฐ ํ์ผ์ ๋ํด <li> ํ๊ทธ์ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ฌ ๋ชฉ๋ก์ ๊ตฌ์ฑํ๋ค.
HTML ํ ํ๋ฆฟ ์์ฑ ๋ฐ ์๋ต
// fs.readdir('./data', function (error, filelist) { ~
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);
- HTML ํ ํ๋ฆฟ์ ๋ฌธ์์ด๋ก ์์ฑํฉ๋๋ค.
- response.writeHead(200)์ผ๋ก HTTP ์ํ ์ฝ๋ 200(์ฑ๊ณต)์ ์๋ต ํค๋์ ์ค์ ํฉ๋๋ค.
- response.end(template)์ผ๋ก ์์ฑ๋ HTML ํ ํ๋ฆฟ์ ์๋ต ๋ณธ๋ฌธ์ผ๋ก ์ ์กํฉ๋๋ค.
404 ์ค๋ฅ ์ฒ๋ฆฌ
// if (pathname === '/') { ~
} else {
response.writeHead(404);
response.end('Not found');
}
- ๊ฒฝ๋ก๊ฐ ๋ฃจํธ(/) ์ด์ธ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์์ฒญ๋์์ ๊ฒฝ์ฐ ์คํ๋๋ค.
- response.writeHead(404)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ํค๋์ HTTP ์ํ ์ฝ๋ 404๋ฅผ ์ค์ ํ๋ค. ์ด ์ํ ์ฝ๋๋ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์ ๋ ์ฌ์ฉ๋๋ค.
- response.end('Not found')๋ก ์๋ต ๋ณธ๋ฌธ์ "Not found"๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉฐ ์๋ต์ ๋ง์น๋ค.
์๋ฒ ๋ฆฌ์ค๋
// var app = http.createServer(function (request, response) { ~
});
app.listen(3000);
- ์์์ ์์ฑํ ์๋ฒ(app)๋ listen ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ 3000์์ ๋คํธ์ํฌ ์์ฒญ์ ์์ ํ๊ธฐ ์์ํ๋ค. ์ด๋ ์๋ฒ๊ฐ 3000๋ฒ ํฌํธ๋ฅผ ์ด๊ณ ํด๋น ํฌํธ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ๊ธฐ๋ค๋ฆฐ๋ค๋ ์๋ฏธ์ด๋ค.
- ํฌํธ 3000์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํฌํธ ์ค ํ๋๋ก ์ค์ ์ด์ ํ๊ฒฝ์์๋ ๋ค๋ฅธ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค.
728x90
'๐Nodejs > โกver.0' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐Nodejs : section30~33 - form ๊ทธ๋ฆฌ๊ณ response (0) | 2024.06.24 |
---|---|
๐Nodejs : section28(1~3) - ๋๊ธฐ์ ๋น๋๊ธฐ (0) | 2024.06.24 |
๐Nodejs : section26 - ํจ์๋ฅผ ์ด์ฉํด์ ์ ๋ฆฌ ์ ๋ํ๊ธฐ (0) | 2024.06.17 |
๐Nodejs : section24 - readdir์ผ๋ก ํ์ผ๋ชฉ๋ก ๋ง๋ค๊ธฐ (0) | 2024.01.11 |
๐Nodejs : section19 - NotFound์ฒ๋ฆฌ์ ํํ์ด์ง ์ ์๊ตฌํ (0) | 2024.01.11 |
Comments