如何访问node.js Express 2.5.5中单独的path文件中的主app.js中声明的variables?

我刚刚开始使用新版本的Express(2.5.5),默认情况下会创build./routes目录以及./views./public

里面的路线有一个index.js文件,其中包含:

 /* * GET home page. */ exports.index = function(req, res){ res.render('index', { title: 'Express' }) }; 

默认情况下(从命令行运行express之后),这是主app.js的路线部分:

 // Routes app.get('/', routes.index); 

我已经为主app.js的redis客户端设置了一个variables:

 var redis = require('redis'), db = redis.createClient(); 

我想知道如何在./routes包含的文件中访问db的方法(以及我在app.jsrequire其他模块)

我非常喜欢Jamund的解决scheme,但是我将这个概念扩展到:

 // db.js var redis = require('redis'); module.exports = redis.createClient(); // index.js var db = require(.'/db') // whatever other file var db = require(.'/db') // do something with db db.disconnect(); 

索引和其他文件上的数据库都将获得相同的redis客户端实例

只需在您的文件的顶部调用这个。 需要在一个共享的空间,所以你可以重新需要多次的文件,它会始终引用相同的版本。 如果你想成为你想创build自己的数据库模块,可以这样做,以防止双重创build客户端:

 // db.js var db var redis = require('redis') exports.connect = function() { if (!db) db = redis.createClient() return db } exports.disconnect = function() { redis.quit() db = null } // index.js var dbHelper = require(.'/db') var db = dbHelper.connect() // whatever other file var dbHelper = require(.'/db') var db = dbHelper.connect() // won't connect twice 

你可以创build一个应用程序全局,并挂起你想要共享的variables,或者你可以在你的路由文件中使用初始化函数

FE

 // app.js var app = express.createServer() , db = require('redis').createClient(); require('./routes').with(app, db); // routes.js module.exports.with = function(app, db) { app.get('/',function(r,s) { s.end('Sweet');}); }