1

ExpressJS では、次のようにルーティング モジュールを登録します。

app.use(app.router);

そして、次のようなルートを作成します。

app.get('/user/:id', function(req, res){
  ...
});

問題は、ルーティング モジュールを登録する前にルートを作成すると、すぐに登録されることです。

私にとっては、ルートを作成する NPM モジュールを構築しているため、これは問題です。現時点では、ユーザーの知らないうちにルーティング モジュールを登録するという不幸な副作用があります。したがって、静的ファイル ハンドラーを登録する前に私のモジュールが必要になると、すべてが台無しになります。

私の質問は、ルーティングモジュールを自動的に登録せずにルートを登録するにはどうすればよいですか?

4

1 に答える 1

1

あなたのモジュールは、ユーザーがアプリに渡す必要があると思います。次のようなものです。

module.exports = function(userApp) {
    userApp.get(...);
    ...
}

代わりに、新しい Express アプリを作成してエクスポートします。

var express = require('express'),
    app = express();

app.get(...);
...

module.exports = app;

そして、ユーザーに自分のアプリを渡してもらう代わりに、useエクスポートしたアプリを渡してもらいます。

var express = require('express'),
    yourModule = require('your-module'),
    userApp = express();

userApp.use(express.static(...));
userApp.use(yourModule);
于 2013-09-19T04:10:10.100 に答える