[Node.js] 생활코딩 ~36강

리트리버J

·

2021. 3. 3. 21:38

728x90

cmd에서 node를 입력 후,

javascript에서 사용하는 console.log를 하면 계산 할 수 있다.

나가고 싶을 때는

ctrl + C 혹은 .exit을 하면 된다.

 

__dirname : 경로를 가져온다.

request.url : /1.html, /coding.jpg 등 query string을 나타내준다.

 

url 쿼리 스트링 값을 가져오기.

var url = require('url'); // url이라는 모듈을 사용 할 것이다.

    var queryData = url.parse(_urltrue).query;

    console.log(queryData);

    console.log(queryData.id);

 

    response.end(fs.readFileSync(__dirname + _url));

- 파일을 읽어주는 코드

 

main.js(node명령어로 실행시키는 js파일)에 있는 내용은 수정하면 node명령을 재실행 해야하지만,

data폴더의 text파일은 로드 될 때마다 읽어오는 것이기 때문에 따로 재실행 할필요가 없다.

 

process.argv에 담겨있는 인자들 : 

[0] : 노드의 위치

[1] : 실행 한 js파일의 위치

[2]부터, 입력한 parameter

 

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var http = require('http');
var fs = require('fs'); // file system
var url = require('url'); // url이라는 모듈을 사용 할 것이다.
 
function templateHTML(title, list, body){
  return `
  <!doctype html>
  <html>
  <head>
    <title>WEB1 - ${title}</title>
    <meta charset="utf-8">
  </head>
  <body>
    <h1><a href="/">WEB</a></h1>
    ${list}
    ${body}
  </body>
  </html>
  `;
}
 
function templateList(filelist){
  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>`;
  return list;
}
 
var app = http.createServer(function(request,response){
 
    var _url = request.url;
    var queryData = url.parse(_url, true).query; // 쿼리스트링 : /?id=TEST
    var pathname = url.parse(_url, true).pathname; // 루트경로 : /
    
    var title = queryData.id;
 
    if(pathname === '/'){
      fs.readFile(`data/${queryData.id}`, 'utf8', (err, description) => {
        if(title === undefined){
          title = 'welcome';
          description = 'Hello, Node.js';
        }
        fs.readdir('./data', (error, filelist) => {
          var list = templateList(filelist);
          var template = templateHTML(title, list, `<h2>${title}</h2><p>${description}</p>`);
          response.writeHead(200); // 200 : 파일을 성공적으로 전송 
          response.end(template);
        });
      });
    }else{
        response.writeHead(404); // 404 : 파일 찾지 못함.
        response.end('Not found');
    }
});
app.listen(3000);
cs
728x90

'Node.js' 카테고리의 다른 글

[Node.js] url  (0) 2021.03.03
[Node.js] fs (file System)  (0) 2021.03.03
[Node.js] pm2  (0) 2021.02.11