在另一个js文件中使用对象
我得到了我的手在node.js,我想了解整个需求/出口的东西。 我有以下主要的app.js文件:
/app.js var express = require('express'), http = require('http'), redis = require('redis'), routes = require('./routes'), var app = express(), client = redis.createClient(); // some more stuff here... // and my routes app.get('/', routes.index);
那么,我有路线文件:
exports.index = function(req, res){ res.render('index', { title: 'Express' }); };
我当然可以在我的app.js文件中使用客户端对象,但是如何在我的路由中使用同一个对象呢?
由于req
和res
已经被Express传递,你可以将client
连接到一个或两个定制的中间件:
app.use(function (req, res, next) { req.client = res.client = client; next(); });
请注意,顺序与中间件app.use(app.router);
,所以这将需要在app.use(app.router);
之前app.use(app.router);
。
但是,您可以在任何路由处理程序中访问client
:
exports.index = function(req, res){ req.client.get(..., function (err, ...) { res.render('index', { title: 'Express' }); }); };
最简单的方法是从您的路由文件中导出一个函数,该函数接受一个客户端,并返回一个包含路由的对象:
exports = module.exports = function (client) { return { index: function (req, res) { // use client here, as needed res.render('index', { title: 'Express' }); } }; };
然后从app.js
:
var client = redis.createClient(), routes = require('./routes')(client);