2016-12-16 105 views
1

我正在學習NodeJS。我有一個nodeJS API項目。我想在路線中使用版本,所以我創建了以下文件夾結構。NodeJS通過一個路由文件傳遞多個路由文件

application/  
    --app.js 
    --routes/ 
    ----V1/ 
    ------routes.js 
    ------users.js 

這裏是我的app.js文件:

var v1 = require('./routes/v1/route'); 

app.use('/api/v1', v1.router); 

這是route.js文件:

var express = require('express'); 
var router = express.Router(); 
router.get('/',function(req,res){  
    res.send("Welcome to Node JS V1"); 
}); 

var courses = require('./users').router; 
-- How to include usres route here 

module.exports.router = router; 

users.js文件:

var express = require('express'); 
var router = express.Router(); 
router.get('/',function(req,res){  
    res.send("Get all users."); 
}); 


module.exports.router = router; 

現在我如何從route.js文件調用用戶。

回答

2

我做了一點比@Shaharyar

不同

routes.js

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

router.get('/', function(req, res) { 
    res.send('Welcome to Node JS V1'); 
}); 

router.use('/users', require('./users').router); 

module.exports.router = router; 

users.js

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

router.get('/',function(req, res){  
    res.send('Get all users.'); 
}); 

router.post('/', function(req, res) { 
    // Create user 
    res.send('Some response.'); 
}); 

module.exports.router = router; 

爲了簡化它,我會在module.exports.router做。

router.use('/users', require('./users')); 

而且同爲route.js文件,然後在你的server.js或其它地方:

router.use('/api/v1', require('./routes')); 
router.use('/api/v2', require('./routes2')); 
+0

正是我想要的方式。謝謝 :)。 – Sid

+0

你的方法看起來很乾淨,但你不覺得你正在創建太多'express'實例嗎?爲什麼只有一個實例才能完成這項工作? – Shaharyar

+0

@Shaharyar模塊緩存在**節點**中。 ** express **模塊暴露了'createApplication'工廠('var app = express()')和其他一些東西,包括'Router'構造函數。 – Jordonias

1

您應該創建一次express實例並將其傳遞到所有模塊中。

route.js文件

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

router.get('/', function(req, res){  
    res.send("Welcome to Node JS V1"); 
}); 

//modules 
require('./users')(router); 
require('./sessions')(router); //added for explaination 
require('./comments')(router); //added for explaination 

//export 
module.exports.router = router; 

模塊文件(任何模塊的用戶,評論等)

//initialize 
module.exports = function (router) { 
    router.get('/users', users); 
} 

//APIs 
function users(req, res) {  
    res.send("Get all users."); 
} 
+0

這表明該模塊中「不能讀取屬性未定義‘得到’」錯誤文件(users.js),用於router.get。 – Sid

+0

立即嘗試,我從裏面引用'router'。 – Shaharyar