路由之间共享功能?"/>
我如何在expressjs路由之间共享功能?
假设我的expresjss项目中有两条路线:users.js和profiles.js。
users.js:
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
var extra = something_nice();
res.json( { three: 'four', extra: extra } );
});
module.exports = router;
profiles.js:
var express = require('express');
var router = express.Router();
/* GET profiles listing. */
router.get('/', function(req, res, next) {
var extra = something_nice();
res.json( { one: 'two', extra: extra } );
});
module.exports = router;
请注意,我在那里有something_nice()方法,如果这是常规的OOP,例如rails控制器,那么理想情况下,我将在'super class'中定义该方法。
我如何使用node + expressjs做到这一点?我的假设是我应该创建一个新模块,并在此处要求它,但这是最佳实践吗?
回答如下:您以相同的方式解决它。使用课程:
class SomethingCool {
somethingNice() {
return 'cool!';
}
}
module.exports = SomethingCool;
在您的路线上:
var express = require('express');
var router = express.Router();
var SomethingCool = require('./something-cool.class');
const something = new SomethingCool();
/* GET profiles listing. */
router.get('/', function(req, res, next) {
var extra = something.somethingNice();
res.json( { one: 'two', extra: extra } );
});
module.exports = router;
无论语言如何,都应应用相同的原则(只要它们支持类或类对象)。
而且您在这里甚至都不需要上课:
function somethingNice() {
// some logic
}
// inside file1
router.get('/', (req, res, next) => {
const extra = somethingNice();
res.json({ one: 'two', extra });
});
您可以在需要/需要的地方重复使用功能,只需确保已使用module.exports将它们导出(如果在其他文件/模块中使用)。
有时间请仔细阅读:
- https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf
它也许可以回答您以后在不同领域中有关设计,结构和重用逻辑的一些问题。
更多推荐
我如何在expressjs路由之间共享功能?
发布评论