[英]Node.js + Express passing an object
我正在构建一个小型的node.js / express项目,并在configure.js中有一个功能可以在我的express应用程序中设置配置选项。 例如:
server.js
var express = require('express');
var server = ('./configure');
var app = express();
server.configure(app);
configure.js
exports.configure = function(app) {
app.set('title', 'Server');
};
这是行不通的,但我希望它能解释我正在尝试做的事情。 我想对server.js中的应用程序实例进行更改。 我该怎么做呢?
编辑:
好吧,我想我可以使所有这些工作正常,如果我了解为什么这不起作用的话。 与回调的时间有关吗? 第二个console.log()不被调用。
configure.js
var fs = require('fs');
var StringDecoder = require('string_decoder').StringDecoder;
var decoder = new StringDecoder('utf8');
function configure(app) {
var config = module.exports = {};
fs.readFile('config.txt', function (err, data) {
if (err) throw err;
config.title = decoder.write(data)
console.log(config.title)
});
if(config.title) console.log(config.title);
//app.set('title', config.title)
}
module.exports = function (app) {
configure(app);
};
server.js
var express = require('express');
var cfg = require('./configure');
var fs = require('fs');
var app = express()
cfg(app)
(config.txt是echo'server'> config.txt)
您所拥有的应该真正起作用。
关于使用多个功能的问题,可以分别导出和调用每个函数。 当计时很重要时(例如,如果需要执行其他未在configure.js
指定的设置步骤),这将很有用:
// configure.js
exports.configure = function (app) {
// ...
};
exports.attachMiddlware = function (app) {
// ...
};
// server.js
var express = require('express');
var server = require('./configure');
var app = express();
server.configure(app);
server.attachMiddlware(app);
您还可以将单个入口function
定义为导出的对象 ,该函数调用configure.js
所需的函数。 通过隔离configure.js
的维护,这可以使server.js
更加干净:
function configure(app) {
// ...
}
function attachMiddleware(app) {
// ...
}
module.exports = function (app) {
configure(app);
attachMiddleware(app)
};
var express = require('express');
var configure = require('./configure');
var app = express();
configure(app);
我会避免这种情况,只做一个json对象:
app.js
var cfg = require('./config');
app.set('title', cfg.title);
config.js
var config = module.exports = {};
config.title = 'Server';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.