所以乍一看可能听起来很棘手。我将解释我真正想做的事情:我正在使用 NodeJS 和 expressJS 并且我正在尝试对项目进行模块化,这是我想做的事情:让我们说我在主服务器 .js 文件中将 router.get/post/put/delete 等拆分为每种类型的其他文件:例如:
...
app.use(require('./routes/account_method1.js'));
app.use(require('./routes/account_method2.js'));
app.use(require('./routes/games_method1.js'));
app.use(require('./routes/games_method3.js'));
app.use(require('./routes/emails_method5.js'));
...
我执行得非常简单:我只是在主 .js 文件和我刚刚放置的所需文件中使用了上面提到的代码:
module.exports = router;
差不多就是这样。但问题是:现在我想做一些类似的事情:
...
app.use(require('./routes/account/panel.js'));
app.use(require('./routes/games/panel.js'));
app.use(require('./routes/emails/panel.js'));
...
并且在每个 ./routes/x/panel.js 文件中都有需要的特定 .js 文件,仅举个例子在 ./routes/account.panel.js 我想有和工作:
app.use(require('./account_method1.js'));
app.use(require('./account_method2.js'));
假设account_method1.js 和account_method2.js 与特定的panel.js 文件在同一目录下。然后,在主服务器.js 文件中需要这些panel.js 文件。
所以如果现在我有:
Server ---> ./routes/account_method1.js
---> ./routes/account_method2.js
我想做到:
Server ---> ./routes/account/panel.js ---> ./routes/account_method1.js
./routes/account_method2.js
我不会在这里粘贴任何代码,因为这只是导入文件方式的问题,而且我已经提到我如何在主服务器上要求我的 .js 文件。
苏……你怎么看?
编辑 :
我想会告诉你问题出在哪里:
./routes/test.js (这个文件必须添加到应用程序另一个文件,register.js)
const express = require('express');
const router = express.Router();
console.log("BEFORE ROUTER.USE");
router.use(require('./register.js'));
console.log("AFTER ROUTER.USE");
module.exports = router;
./app.js(主 .js 服务器文件)
....
var test = require('./routes/test.js');
app.use(test);
....
./routes/register.js
const express = require('express');
const router = express.Router();
...
//some router.post / get / delete
...
module.exports = router;
当我尝试访问该 register.js 文件中的 URL 时,它们不起作用
更好的方法是使用路由器:
例如: controller/api.js
const express = require('express')
const router = express.Router()
router.get('/', function(req, res) {
//console.log(res.apiData);
res.json({message:'ok'});
});
module.exports = router;
然后
app.use('/api', require('controller/api'))
路由器可以导入到另一个路由器。我在用这个:
主要.js:
app.use(require('./controller'));
控制器/index.js:
const express = require('express')
const router = express.Router()
const isAuth = require('../middlewares/is-auth')
const isValidApiKey = require('../middlewares/is-api-key')
const isAdmin = require('../middlewares/is-admin')
router.use('/auth', require('./auth'));
router.use('/profile', isAuth, require('./profile'));
router.use('/api', isValidApiKey, require('./api'));
router.use('/admin', isAuth, isAdmin, require('./admin'))
如果请求服务代码很长,也可以移到一个单独的文件中,但我认为最好把它分成更小的、可重用的部分,作为中间件使用,例如:
route.all('/:orderId(\\d+)', fileOrderMiddleware, fileAltMiddleware, hasTransferMiddleware, orderServeMiddleware);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句