2

私は小さな node.js/express プロジェクトを構築しており、configure.js にエクスプレス アプリの構成オプションを設定する関数があります。例えば:

サーバー.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 のアプリ インスタンスに変更を加えたいと考えています。どうすればいいですか?

編集:

これが機能しない理由を理解すれば、これをすべて機能させることができると思います。コールバックのタイミングと関係がありますか? 2 番目の 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);
};

サーバー.js

var express = require('express');
var cfg = require('./configure');
var fs = require('fs');

var app = express()

cfg(app)

(config.txt は echo 'server' > config.txt です)

4

2 に答える 2

1

あなたが持っているものは実際に機能するはずです。

複数の関数の使用に関する質問については、それぞれを個別にエクスポートして呼び出すことができます。これは、タイミングが重要な場合に役立ちます (たとえば、 で指定されていない他のセットアップ手順を実行する必要がある場合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.jsserver.jsconfigure.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);
于 2012-10-30T19:37:37.287 に答える
0

私はそれを避けて、jsonオブジェクトを実行します:

app.js

var cfg = require('./config');
app.set('title', cfg.title);

config.js

var config = module.exports = {};
config.title = 'Server';
于 2012-10-30T20:34:12.513 に答える