0

私がやろうとしているのは、エクスプレスを使用するときにアセットを手動で処理することです。私が言いたいのは、すべてのページにすべてのスタイルシート/JavaScript ファイルを配置する必要がないということです。そのため、別の JavaScript ファイルを使用するかどうかを各ルートで指定できるようにしたいと考えました。元:

app.get('/testing',function(req,res,next){
      assets.addJS('my-javascript-file');
      res.render('testing');
});

したがって、テンプレートがレンダリングされると、ローカル変数に追加されたすべての JavaScript ファイルが必要になります。レンダリングの呼び出しごとにそれらを渡したくありません。なぜなら、他の場所に JavaScript を追加したいからです。テンプレートに何かを送信する必要がないため、誤って渡してしまうことはありません。実装したいもう 1 つのことは、キャッシュです。デフォルトでは、アセットを取得すると変更されていない 304 が返されることはわかっていますが、そのリクエストを作成したくないので、最後に変更されたときにファイルが出力されるときに、ファイルに対してクエリ文字列を実行したいと考えていました。そうすれば、それらを変更すると、ユーザーのブラウザに最新のファイルを取得するように自動的に指示されますが、それ以外はそれらをキャッシュして帯域幅/リクエストを節約します(これらにはAmazon s3の料金がかかります)。誰かが私を正しい方向に向けることができる場合、またはこのためのプラグインが既に存在する場合はお知らせください。ありがとう。

4

1 に答える 1

1

これを中心にアセットマネージャーを構築できます:

app.get(function(req, res) {
  res.locals.files = [ 'somefile.js', 'somefile2.js' ];
  res.render('someview');
});

ビューは複数のスクリプト ファイルを作成するだけです。

head
  each file in files
    script(src=base_url + '/' + file)

ファイルを 1 つのリクエストにマージしたい場合は、おそらくこれをさらに拡張する必要があります。ファイルの配列を取り、リクエストごとにそれらをマージできるルートを作成できます。res.sendFile でファイルを提供できます。私の記憶が正しければ、これですべてのヘッダーとキャッシュが処理されます。

于 2012-10-25T15:15:18.707 に答える