1

クライアントファイルとサーバーファイルの両方を含む「ウィジェット」があり.coffeeます(クライアントをBackbone.jsモデル/ビュー、サーバーを相関するExpressJSルートと考えてください)。すべてルートプロジェクトの下にあります。

my-node-expressjs3-project/
  src/
    widget1/
      client/
        app.coffee
      server/
        routes.coffee
    widget2/
      client/
        app.coffee
      server/
        routes.coffee
  app/
    widget1/
      client/
        app.js 
      server/
        routes.js
    widget2/
      client/
        app.js 
      server/
        routes.js
  public/

すべての.coffeeファイルはにコンパイルされapp/ます。私はウィジェットを参照的に無傷に保ち、client/フォルダが「ウィジェット」のために提供されることを許可しようとしています。問題1-動作させることができません。問題2-2つのウィジェットに同じapp.jsファイルが含まれている場合、問題を解決しようと思った方法で同じように表示されます。

app.use express['static'](__dirname + '/public')
app.use express['static'](__dirname + '/app/*/client/')

どうすればいいですか?

4

1 に答える 1

0

問題1に関しては、ノードには、グロブを使用してこのようなファイルシステムを検索する組み込みの方法がありません。アプリディレクトリにウィジェット以外のものがある場合は、それらを手動で除外する必要があります。または、すばらしいnode-finditパッケージのようなものを使用することもできます。

問題2に関しては、ウィジェットのリストを取得したら、各ウィジェットのそのsubUrlに静的ミドルウェアをマウントするだけです。このapp.use関数は、オプションのマウントパスを取ります。

var widgetDirs = fs.readdirSync('app');

widgetDirs.forEach(function(widgetDir) {
    app.use(widgetDir, express.static(__dirname + '/app/' + widgetDir + '/client/'));
});
于 2013-01-08T14:21:04.433 に答える