哑巴/新问题......
我正在学习/使用Node / Express4中的API,我想将我的路由分成另一个模块。我使用下面的代码,但是我继续使用 require('express')语句似乎很尴尬...有没有办法从中移动更多的代码routes.js文件到server.js并仍然在路由模块中保留我的.get和.post语句?提前谢谢!
server.js:
'use strict';
var express = require('express');
var routes = require('./routes');
var app = express();
app.use('/api', routes);
app.listen(3000, function() {
console.log('Listening);
});
routes.js
var express = require('express'); // how do I get rid of this line?
var router = express.Router(); // can I move this to server.js?
var apiRoute = router.route('');
apiRoute.get(function (req, res) {
res.send('api GET request received');
});
module.exports = router;
答案 0 :(得分:2)
你走在正确的轨道上。每次需要时重用var express = require('express');
语句实际上很酷。导入(需要)模块是模块化开发的基石,允许您在项目文件中保持关注点的分离。
就模块化添加路线而言:问题是routes.js
具有误导性。
为了模块化地分离你的路线,你应该使用几个名为<yourResource>.js
的模块。这些模块将包含所有路由代码以及任何其他配置或必要的功能。然后你将它们附加在app.js中:
var apiRoute = router.route('/api');
apiRoute.use('/<yourResource', yourResourceRouter);
例如,如果您有资源bikes
:
在app.js
或甚至模块api.js
中:
var apiRoute = router.route('/api')
, bikeRoutes = require('./bikes');
apiRoute.use('/bikes', bikeRoutes);
然后在bike.js:
var express = require('express');
var router = express.Router();
var bikeRoutes = router.route('/');
bikeRoutes.get(function (req, res) {
res.send('api GET request received');
});
module.exports = bikeRoutes;
从那里可以很容易地看出,你可以构建许多不同的资源并不断地嵌套它们。