繁体   English   中英

Node.js + Express传递对象

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM