首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >app.js中的全局变量是否可在路由中访问?

app.js中的全局变量是否可在路由中访问?
EN

Stack Overflow用户
提问于 2012-03-19 12:59:18
回答 8查看 166.5K关注 0票数 101

如何在app.js中设置变量并使其在所有路由中都可用,至少在routes中的index.js文件中可用。使用express框架和node.js

EN

回答 8

Stack Overflow用户

发布于 2014-01-15 17:13:37

实际上,使用express对象上可用的"set“和"get”方法很容易做到这一点。

示例如下,假设您有一个名为config的变量,其中包含您希望在其他地方可用的与配置相关的内容:

在app.js中:

代码语言:javascript
复制
var config = require('./config');

app.configure(function() {
  ...
  app.set('config', config); 
  ...
}

在routes/index.js中

代码语言:javascript
复制
exports.index = function(req, res){
  var config = req.app.get('config');
  // config is now available
  ...
}
票数 108
EN

Stack Overflow用户

发布于 2016-02-08 19:07:15

要做到这一点,一种很好的方法是使用Express本身提供的app.localsHere是文档。

代码语言:javascript
复制
// In app.js:
app.locals.variable_you_need = 42;

// In index.js
exports.route = function(req, res){
    var variable_i_needed = req.app.locals.variable_you_need;
}
票数 71
EN

Stack Overflow用户

发布于 2012-03-19 15:38:18

要声明一个全局变量,你需要使用global对象。比如global.yourVariableName。但这不是一种真正的方式。要在模块之间共享变量,请尝试使用如下的注入样式

someModule.js:

代码语言:javascript
复制
module.exports = function(injectedVariable) {
    return {
        somePublicMethod: function() {
        },
        anotherPublicMethod: function() {
        },
    };
};

app.js

代码语言:javascript
复制
var someModule = require('./someModule')(someSharedVariable);

或者,您可以使用代理对象来执行此操作。比如hub

someModule.js:

代码语言:javascript
复制
var hub = require('hub');

module.somePublicMethod = function() {
    // We can use hub.db here
};

module.anotherPublicMethod = function() {
};

app.js

代码语言:javascript
复制
var hub = require('hub');
hub.db = dbConnection;
var someModule = require('./someModule');
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9765215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档