gpt4 book ai didi

Node.js + Express 传递对象

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:42 26 4
gpt4 key购买 nike

我正在构建一个小型的node.js/express 项目,并在configure.js 中有一个函数可以在我的express 应用程序中设置配置选项。例如:

服务器.js

var express = require('express');
var server = ('./configure');

var app = express();
server.configure(app);

配置.js

exports.configure = function(app) {
app.set('title', 'Server');
};

这不起作用,但我希望它能解释我正在尝试做的事情。我想对 server.js 中的应用程序实例进行更改。我该怎么做?

编辑:

好吧,我想如果我明白为什么这不起作用,我就能让这一切正常工作。这与回调的时间有关吗?未调用第二个 console.log()。

配置.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);
};

服务器.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);

您还可以将单个条目函数定义为 exported object它调用 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);

关于Node.js + Express 传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com