2014-08-31 41 views
0

我想添加一個「關於」頁面到我的新快遞應用程序。快遞4與把手添加新路線

我正在用把手(hbs)運行express 4。

我已經閱讀了大量的教程,但大多數不會添加一個新的路線(或做但不解釋得很好)我主要從這個tutorial工作。

我需要知道要添加到我的app.js和我的路線/文件夾,我有about.hbs準備在視圖中。

這裏是我的app.js(由快遞發生器產生):

var express = require('express'); 
var path = require('path'); 
var favicon = require('static-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hbs'); 

app.use(favicon()); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

/// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

/// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: {} 
    }); 
}); 


module.exports = app; 

和我的路線/文件夾中包含index.js和users.js。

index.js:

var express = require('express'); 
var router = express.Router(); 

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

module.exports = router; 

對不起,問題簡單,但我已經花了3個小時這一點,我feelit可能是一個相當容易的事。

回答

2

我建議你溝一般默認的快速生成的應用程序,並創建一個合適的路由系統。你的app.js文件不應該包含路由,只能包含環境變量。下面是我設置我的項目的方式:

App.js

var express  = require('express'); 
var http  = require('http'); 
var path  = require('path'); 
var compression = require('compression'); 
var app   = module.exports = express(); 
var cacheTime = 86400000*7; //a week 

//all environments 
app.use(compression()); 
app.set('port', process.env.PORT || 3000); 
app.set('views', __dirname + '/views'); 
app.engine('html', require('hogan-express')); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(__dirname + '/public',{ maxAge: cacheTime })); 

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

require('./routes/index.js'); 

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

的路由文件:

var app = require('../app.js'); 

app.get('/Contact', function(req, res) { 
    res.render('contact.html', { /*object*/ }); 
}); 

//continue routes here 

它的可擴展性和對大公司項目的可行選擇。您也可以將路線文件拆分爲分開的部分以更好地組織。注意:您需要將我的一些設置更改爲您的喜好