2017-07-13 59 views
1

我有以下結構不能在快速的應用程序連接路線

project 

-app/ 

--controllers/ 

---home.js 

--models/ 

---home.js 

--views/ 

---home.html 

-db/ 

--db.js 

-index.js 

我控制器home.js看起來是這樣的:

var express = require('express'); 
var router = express.Router(); 
var database = require('../models/home'); 
var path = require('path'); 

router.get("/", function(request, response) { 
    response.sendFile(path.join(__dirname, '../views', 'home.html')); 
}); 

module.exports = router; 

現在我想使這條路線是有用的,所以在我index.js我:

var express = require('express'); 
var app = express(); 
var port = 3000; 

app.use(require('./app/controllers/home')); //<-- this is what I ask for 

app.listen(3000, function(err) { 
    //...... 
}) 

但現在我有更多然後只是路線的「家」,這樣反而

app.use(require('./app/controllers/home')); 
app.use(require('./app/controllers/about')); 
app.use(require('./app/controllers/etc')); 

我讀,我可以使用:

app.use(require('./app/controllers/')); 

,但我得到的錯誤,該模塊不能被發現。你能建議我怎樣才能輕鬆獲得我所有使用的路線?謝謝:)

+1

添加'app/controllers/index.html',它可以導出所有的路由器。這將允許你'require('./ app/controllers')' – Will

+0

'app.use(require('./app/controllers/home'));'這一行似乎不正確。你確定你在跟着嗎? –

+0

@wilusdaman我相信你的意思是'index.js'。是的,這解決了我的問題。但是,我仍然不明白爲什麼'require'('./app/ controllers')'和'require('./app/controllers/index')'工作。我認爲第一個不應該工作..你能解釋我嗎? –

回答

3

如果我理解你的問題,你正試圖路由到不同的相對路徑。 您可以通過將該路徑作爲第一個參數來設置相對路徑。然後,使用app.get/use/...的路由器內的任何路由將從該相對路徑開始。

內index.js

app.use("/home", require('./app/controllers/home')); 
app.use("/about", require('./app/controllers/about')); 
app.use("/etc", require('./app/controllers/etc')); 

內./app/controllers/home等航線

router.get("/", ...) // this will be located at localhost/home 
router.get("/myhouse, ...) // this will be located at localhost/home/myhouse 

另外值得一metioning可以路由路由器路由器內部

router.use("/", require('path/to/another-router.js')) 
+0

不應該這個'app.get(「/」,...)'是'router.get(「/」,...)'? –

+1

是的,你說得對。真正。 –

相關問題