2016-12-16 69 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