nak*_*nak 12 javascript node.js express
我刚刚开始使用Express(2.5.5)的新版本,默认情况下会创建一个./routes
目录./views
和./public
路线内有一个index.js
文件,其中包含:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
Run Code Online (Sandbox Code Playgroud)
默认情况下(express
从命令行运行后),这是main中的routes部分app.js
:
// Routes
app.get('/', routes.index);
Run Code Online (Sandbox Code Playgroud)
我在main中为redis客户端设置了一个变量app.js
:
var redis = require('redis'),
db = redis.createClient();
Run Code Online (Sandbox Code Playgroud)
我想知道如何访问包含在其中的文件中的方法db
(以及我require
在其中的任何其他模块app.js
)./routes
Mar*_* M. 21
我真的很喜欢Jamund的解决方案,但我会将这个概念扩展到:
// 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();
Run Code Online (Sandbox Code Playgroud)
db on index和其他文件都将获得redis客户端的相同实例
只需在文件顶部调用即可.需要位于共享空间中,因此您可以多次重新请求该文件,并且它将始终引用相同的版本.如果你想要花哨,你可以创建自己的db模块,做类似的事情,以防止双重创建客户端:
// 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8558 次 |
最近记录: |