0

ある程度の構成を許可しながら、スタンドアロンまたは大規模なサーバーの一部として実行できる Express Web サイトを開発したいと考えています。

たとえば、大規模なメイン サーバーがあり、小さなサービスを提供するためのルートを定義するserver.js別のサーバーを作成するとします。次のいずれかを実行できるようにしたい:app.js/*

  • スタンドアロンで実行しますapp.js。これにより、ルートが提供されますlocalhost:port/
  • server.jsたとえば、リクエストを処理/app/*できるように、このサーバーにマップするルートを定義しapp.jsます。

Smashing Nodeを読んでみると、Express サーバーとそのルートを で定義すると、以下を使用してそのルートを使用app.jsできることがわかりますserver.use('/app', require('app.js')。このアプローチの問題は、構成オプションを に渡す方法がわからないことapp.jsです。

4

1 に答える 1

1

app.jsモジュールを呼び出し可能な関数として記述できます。

var express = require("express");

var app; // <-- note the global

var initialize = function(conf) {
    if (app) {
        return app;
    }

    conf = conf || {};

    app = express();

    // here goes the configutation code, for example:
    if (conf.static) {
        app.use(express.static(conf.static));
    }
    return app;
};

if (require.main === module) {
    // if standalone, fire it
    initialize({ static: __dirname + "/public" });
}

// and export
module.exports = exports = initialize;

そして、他のファイルで:

var app = require("app.js")({ static: __dirname + "/public" });

これはシングルトンであるため、モジュール関数をさらに呼び出すと同じサーバーが返されることに注意してください。

app == require("app.js")();

ニーズに合わせて微調整できると確信しています。

于 2013-07-17T20:59:45.283 に答える