node ch.07 _ Routing 모듈화
-
/main 으로 접근해서 처리하는 작업을 router로 분리하여 처리할 것임 (app.js에서 분리)
-
/router 경로 생성
-
/router/main.js 파일 생성
var express = require('express'); var app = express(); var router = express.Router(); router.get('/', function(req,res){ res.sendFile(__dirname + "/public/main.html") }) module.exports = router;
위 코드에서 router.get은 app.js 에 있던 app.get 을 가져와서 router로 사용하도록 바꿔준것임
module.export 작업으로 해당 router를 외부에서 불러올 수 있다
-
app.js 에서 /router/main.js 에 정의되어있는 router를 사용할 수 있도록 처리
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var mysql = require('mysql'); var main = require('./router/main'); // DATABASE SETTING (Google Cloud SQL) var connection = mysql.createConnection({ host : '35.189.176.97', port : 3306, user : 'root', password : 'root', database : 'jsman' }); connection.connect(); app.listen(3000, function() { console.log("start@ on port 3000"); }); app.use(express.static('public')) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({extended:true})) app.set('view engine', 'ejs') app.use('/main', main) app.get('/', function(req,res){ console.log('test'); res.sendFile(__dirname + "/public/main.html") }) app.post('/email_post', function(req,res){ console.log(req.body.email) //res.send("<h1>Welcome!" + req.body.email + "</h1>") res.render('email.ejs', {'email' : req.body.email}) }) app.post('/ajax_send_email', function(req, res){ var email = req.body.email; var responseData = {}; var query = connection.query('select name from user where email="' + email + '"', function (err, rows) { if (err) throw err; if (rows[0]) { console.log(rows[0]) responseData.result = "ok"; responseData.name = rows[0].name; } else { responseData.result = "none"; responseData.name = ""; } res.json(responseData) }) })
var main = require(‘./router/main’); 으로 main을 선언 해주고,
app.use(‘/main’, main) 구문으로 /main으로의 접근은 main 을 타도록 해줌
-
이 상태에서 그냥 실행 결과를 확인하면 경로때문에 오류가 발생한다. » main.js 수정
var express = require('express') var app = express() var router = express.Router() var path = require('path') router.get('/', function(req,res){ console.log('main.js loaded') res.sendFile(path.join(__dirname + "/../public/main.html")) }); module.exports = router;
var path = require(‘path’) 로 path를 설정해주고
res.sendFile(path.join(__dirname + “/../public/main.html”))
path.join 함수를 위 코드처럼 입력
-
결과 확인
터미널 창
웹페이지 화면