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(8080, function(){ 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