当前位置: 首页 > 面试题库 >

Express:如何将应用程序实例传递到来自其他文件的路由?

叶明辉
2023-03-14
问题内容

我想将路由分为不同的文件,其中一个文件包含所有路由,另一个文件包含相应的操作。我目前有一个解决方案来实现此目的,但是我需要使应用程序实例成为全局实例,以便能够在操作中对其进行访问。我当前的设置如下所示:

app.js:

var express   = require('express');
var app       = express.createServer();
var routes    = require('./routes');

var controllers = require('./controllers');
routes.setup(app, controllers);

app.listen(3000, function() {
  console.log('Application is listening on port 3000');
});

route.js:

exports.setup = function(app, controllers) {

  app.get('/', controllers.index);
  app.get('/posts', controllers.posts.index);
  app.get('/posts/:post', controllers.posts.show);
  // etc.

};

控制器/index.js:

exports.posts = require('./posts');

exports.index = function(req, res) {
  // code
};

控制器/posts.js:

exports.index = function(req, res) {
  // code
};

exports.show = function(req, res) {
  // code
};

但是,此设置存在一个大问题:我需要传递给操作(controllers /
*。js)的数据库和应用程序实例。我能想到的唯一选择是将两个变量都设置为全局变量,这并不是真正的解决方案。我希望将路线与操作分开,因为我有很多路线,并且希望将它们放在中央位置。

将变量传递到动作但将动作与路线分开的最佳方法是什么?


问题答案:

使用req.appreq.app.get('somekey')

通过调用创建的应用程序变量在express()请求和响应对象上设置。

参见:https
:
//github.com/visionmedia/express/blob/76147c78a15904d4e4e469095a29d1bec9775ab6/lib/express.js#L34-L35



 类似资料:
  • 我在一个组件中有一个按钮,单击我想转到另一个组件并将状态传递给该组件。 是这样的: 但它不起作用。单击“我去添加新问题url”,但组件AddNewQuestionPage不会呈现。若我不把路线放在AddQuestions组件中,而是放在应用程序组件中,它就可以工作。它是整个应用程序的主要组件,使用Switch,还设置了其他路由。 但是,如果状态问题是从应用程序组件呈现的,我不知道如何将其传递给Ad

  • 我想用SharingContent将声音从原始文件夹共享到另一个应用程序 我使用此代码共享文本和字符串

  • 我的Spring boot应用程序中有以下文件应用程序属性文件。所有属性文件都位于src/main/resources文件夹中,Spring boot版本为2.1.6 application.propertiesapplication-dev.propertiesapplication-tst.properties 应用属性应用。name={app.name}app。common=common v

  • 我有一些spring服务可以提交一些AWS批处理作业。这是调用外部服务请求的简单spring批处理作业。并且我想通过将“org.springframework.cloud:spring-cloud-starter-sleuth”lib包含到classpath中,将在我的服务中生成的traceId传播到这个作业中,并将“traceRestTemplateInterceptor”拦截器添加到用这个tr

  • 问题内容: subprocess.call([“/home/myuser/run.sh”, “/tmp/ad_xml”, “/tmp/video_xml”]) 现在,我有了运行的脚本。当我运行它并到达此行时,它开始打印内容,因为run.sh中有打印内容。 如何将其也管道传输到文本文件?(如果可能,还可以打印) 问题答案: 如果要将输出写入文件,可以使用stdout -argument of 。 它

  • 问题内容: 我正在这样运行我的JavaFX应用程序: 类扩展。在特殊的FX线程中启动JavaFX窗口,但是在我的main方法中,我什至没有类的实例。 如何将非字符串参数(在我的情况下为 控制器 )传递给实例?它是有缺陷的设计吗? 问题答案: 通常,除了传递给您的主程序的程序参数外,无需将参数传递给主应用程序。想要这样做的唯一原因是创建一个可重用的对象。但这并不需要是可重用的,因为这是组装您的应用程