我如何在expressjs路由之间共享功能?

编程入门 行业动态 更新时间:2024-10-07 16:21:38

我如何在expressjs<a href=https://www.elefans.com/category/jswz/34/1771390.html style=路由之间共享功能?"/>

我如何在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路由之间共享功能?

本文发布于:2024-05-07 10:30:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755836.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:路由   功能   如何在   expressjs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!