因為Express把所有路由規則寫在app.js中,若網站不斷長大會造成維護難度不斷加強
所以先將路由規則分離出去,由routes中的index.js統一掌管

此做法可以把app.js中的app.get方法搬到route/index.js中,可以維持app.js的簡潔性

首先進到app.js

app.use(app.router); //刪除這行
Routes(app); //加上這行

再app.js中往下捲,刪除所有app.get開頭的路由參數

//刪除以下內容
App.get(‘/’, routes.index)
App.get(‘/hello’, routes.hello)
App.get(‘/time’, routes.time)

整個app.js長這樣

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));

routes(app); //增加這行

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

接下來進到routes/index.js檔案,編輯如下

//index.js

/*
 * GET home page.
 */
module.exports = function(app){
  app.get('/',function(req,res){
    res.render('index', { title: 'Express' });
  });

  app.get('/hello',function(req, res){
    res.render('hello', { world: 'Hello World'});
  });

  app.get('/time',function(req, res){
    res.send('Current time is ' + new Date().toString());
  });
};

這樣就完成路由控制由index.js管理的目的

 

Django 方面就無需變更,因為本身的路由就是由專門的urls.py檔案管理,不會與setup.py混合

arrow
arrow
    文章標籤
    node.js express
    全站熱搜

    長風破浪會有時 發表在 痞客邦 留言(0) 人氣()