node ch.07 _ Routing 모듈화

  1. /main 으로 접근해서 처리하는 작업을 router로 분리하여 처리할 것임 (app.js에서 분리)

  2. /router 경로 생성

  3. /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를 외부에서 불러올 수 있다

  4. 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 을 타도록 해줌

  5. 이 상태에서 그냥 실행 결과를 확인하면 경로때문에 오류가 발생한다. » 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 함수를 위 코드처럼 입력

  6. 결과 확인

    터미널 창

    웹페이지 화면