[英]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.