要求文件夹作为模块在另一个文件夹中作为模

时间:2015-11-20 09:39:31

标签: node.js express

server.js 我有以下内容:

app.use( require( './server/rest-api/v1/products' ) );
app.use( require( './server/rest-api/v1/product-categories' ) );
app.use( require( './server/rest-api/v1/measuring-units' ) );
app.use( require( './server/rest-api/v1/inventory' ) );
app.use( require( './server/rest-api/v1/suppliers' ) );
...

我想要的是/server/rest-api/v1一个模块,这意味着它需要一个index.js,但它包含什么,以便我只需要在{{}}执行以下操作{1}}:

server.js

如果有必要了解我的要求,这里有我作为模块的其中一个文件夹:

/server/rest-api/v1/products/index.js

app.use( require( './server/rest-api/v1');

1 个答案:

答案 0 :(得分:2)

您希望/server/rest-api/v1/index.js公开使用子路由器的唯一Router,每个子路由器对应一个文件夹(产品 product_categories 等等。)

<强> /server/rest-api/v1/index.js

var express = require('express'),
    router = express.Router(),
    product_router = require('./products'),
    product_categories_router = require('./product_categories');

router.use(product_router);
router.use(product_categories_router);
// etc.

module.exports = router;

在旁注中,如果您以这种方式处理多条路线,在安装路由器时,定义API入口点一次('/api/v1')可能更方便。通过这种方式,您的“业务”路由器本身不需要知道输入路径(对它们来说无关紧要),如果您需要一天更改该路径,这很方便。

然后,这取决于您以及您希望如何设计服务器:)

示例:

<强> server.js

app.use('/api/v1', require('./server/rest-api/v1'));

<强> /server/rest-api/v1/index.js

var express = require('express'),
    router = express.Router(),
    product_router = require('./products');

router.use('/purchases/products', product_router);
module.exports = router;

<强> /server/rest-api/v1/products/index.js

var express = require('express'),
    router = express.Router(),
    create_product = require('./create-product.controller');

router.route('/new').post(create_product.post);
module.exports = router;