본문 바로가기
HELLO_WORLD/node.js

[지식공유] node.js 를 활용해 보자

by 해피한 김과자블루스웨터 2019. 1. 17.














Node.js의 사용 #2





node.js 플러그인의 사용






node.js 의 장점중 하나는 각종 플러그인을 통해 더 쉽고 편한 구현이 가능하다는 것입니다.

이번에는 session 과 express 를 사용한 예제 입니다.



// express 와 express-session 모듈을 사용한 예제

// node.js를 더 편리하게 사용하기 위해 express를 사용하죠.

// express는 아래와 같은 라우터 형태를 가지게 됩니다



1
2
3
4
5
app.get('/', function(req, res){
 
    res.send('Hello home page');
 
});
cs



//app.get get방식 메서드 일경우 제어권을 가지게 됩니다.

//당연히 post도 있겠죠?

//fs.readFile 를 사용해서 정적 파일을 로드할수도 있는데요.

//그리곤 response.send를 통해 client단에 전송하게됩니다. 

//한가지 재밌는 구현을 해보았습니다. 동적 html의 구현을 위해선 어떻게 할까? 고민하다가

//아래와 같이 야매로 구현하게 됩니다. ^^; 이렇게도 가능하다는것만 참고해주세요


//html 의 #lis# 부분을 서버단의 계산 로직이 끝난후 

//dynamicContent.toString().replace('#lis#', lis);

//이부분을 통해 바꿔버렸습니다^^;



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
<!DOCTYPE html>
 
<html>
 
<head>
 
  <meta charset="utf-8">
 
</head>
 
<body>
 
  hello Dynamic html~~!
 
      <ul>
 
          #lis# <!--문자열 내에서 변수 사용-->
 
      </ul>
 
      ...
 
</body>
 
</html>
cs




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//동적파일 서비스---------------------
 
app.get('/dynamictest'function(req, res){
 
  var lis = '';
 
  for(var i = 0; i <5; i++){
 
      lis += '<li>coding ' + i + '</li>';
 
  }
 
  // 자바스크립트 새로운 표준 formatted text 기능
 
  // ` `(grave accent) 사용을 통해서 JS에서 여려줄의 코드를 넣을 수 없는 문제를 해결할 수 있다
 
var output = dynamicContent.toString().replace('#lis#', lis);
 
  res.send(output);
 
});
 
//동적파일 서비스---------------------
cs




//세션 사용의 경우 


1
2
3
var session = require('express-session');
 
var sess = '';
cs



//모듈을 가져옵니다. 그리고 세션객체를 가져오고 초기화 합니다.


1
2
3
4
5
6
7
8
9
10
11
//세션객체생성
 
app.use(session({
 
 secret: '@#@$MYSIGN#@$#$',
 
 resave: false,
 
 saveUninitialized: true
 
}));
cs




//저같은 경우 index에서 sess에 저장했습니다.

1
2
3
4
5
6
7
8
9
app.get('/index', function(req, res){
 
    console.log('-------------index-----------');
 
    sess = req.session;
 
    //...
 
});
cs




//그리곤 사용할때 set 하거나 get 해서 쓰는거죠.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//set!
 
sess = req.session;    
 
sess.userId = jsonContent.id;
 
sess.userName = jsonContent.username;
 
sess.profilePic = jsonContent.profile;
 
 
 
//get
 
sess.userId 
cs


//그냥 꺼내면 됩니다. 너무 쉽죠잉?

//소스보시면 더 잘 이해가 되실겁니다 




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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
var http = require('http');
var fs = require('fs');
var url = require('url');
var express = require('express');
var session = require('express-session');
var app = express();
var dir1 = './public/dynamic/dynamicHTML.html';
var dynamicContent = '';
fs.readFile(dir1, function (err, data) {
      if (err) {
         console.log(err);
      }else{
         dynamicContent = data.toString();
         console.log("200");
      }
   });
//express 사용--------------------------------------------
//정적파일 서비스---------------------
app.use(express.static('public'));
app.get('/'function(req, res){
    res.send('Hello home page');
});
app.get('/route'function(req, res){
    res.send('Hello Router, <img src="/route.png">');
});
app.get('/login'function(req, res){
    res.send('<h1>Login please</h1>');
});
//정적파일 서비스---------------------
//동적파일 서비스---------------------
app.get('/dynamictest'function(req, res){
  var lis = '';
  for(var i = 0; i <5; i++){
      lis += '<li>coding ' + i + '</li>';
  }
  // 자바스크립트 새로운 표준 formatted text 기능
  // ` `(grave accent) 사용을 통해서 JS에서 여려줄의 코드를 넣을 수 없는 문제를 해결
var output = dynamicContent.toString().replace('#lis#', lis);
  res.send(output);
});
//동적파일 서비스---------------------
app.listen(8080function(){
    console.log('-------------Conneted 8080 port!-----------');
});
//원래 사용--------------------------------
//서버 생성
/*
http.createServer(function (request, response) {
   // URL 뒤에 있는 디렉토리/파일이름 파싱
   var pathname = url.parse(request.url).pathname;
   
   console.log("Request for " + pathname + " received.");
   
   // 파일 이름이 비어있다면 index.html 로 설정
   if(pathname=="/"){
       pathname = "/index.html";
   }
   
   // 파일을 읽기
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // 페이지를 찾을 수 없음
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
         console.log("404");
      }else{    
         // 페이지를 찾음      
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});    
         
         // 파일을 읽어와서 responseBody 에 작성
         response.write(data.toString());        
         console.log("200");
      }
      // responseBody 전송
      response.end();
   });   
}).listen(8080);
console.log('Server running at localhost');
*/
cs






'HELLO_WORLD > node.js' 카테고리의 다른 글

[지식공유] node.js 를 활용해 보자  (0) 2019.01.17
[지식공유] node.js 를 사용해보자!  (0) 2019.01.17

태그

댓글0