gpt4 book ai didi

node.js - 需要文件夹作为模块在另一个文件夹作为模块

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:55 24 4
gpt4 key购买 nike

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,但它会包含什么,这样我只需在 server.js 中执行以下操作:

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

这是我拥有的作为模块的文件夹之一,如果有必要理解我的要求:

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

module.exports = (function () {

var express = require( 'express' ),
router = express.Router(),
create_product = require( './create-product.controller.js' ),
list_product = require( './list-product.controller.js' ),
detail_product = require( './detail-product.controller.js' ),
update_product = require( './update-product.controller.js' );

router.route( '/api/v1/purchases/products/new' )
.post( create_product.post );

router.route( '/api/v1/purchases/products/list' )
.get( list_product.get );

router.route( '/api/v1/purchases/products/detail/:id' )
.get( detail_product.get );

router.route( '/api/v1/purchases/products/update' )
.put( update_product.put );

return router;

})();

最佳答案

您希望 /server/rest-api/v1/index.js 公开一个使用子路由器的唯一 Router,每个子路由器对应于您的一个文件夹(productsproduct_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;

关于node.js - 需要文件夹作为模块在另一个文件夹作为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com