1

application.js アセットと editor.js アセットがあります。どちらも jquery.batchImageLoad.js ライブラリに依存しています。

application.js は Web サイト全体で利用できますが、editor.js は一部のページでしか利用できませんが、時々出会うことがあります。

問題は、jquery.batchImageLoad.js ライブラリが 2 回読み込まれることです。これは正確には望ましくありません。

実際のJavaScriptを変更する以外に、これらが衝突しないようにする方法はありますか?

4

1 に答える 1

2

jquery.batchImageLoad.js を application.js と editor.js の両方のページに配置しても問題ありません。ブラウザが jquery.batchImageLoad.js をキャッシュして、ユーザーがダウンロードするのは一度だけだからです。

重複しないように js ファイルとインクルードを構造化することをお勧めします。これを行うには、application.js を破棄して、次のようにします。

  • editor.js
  • common.js
    • jquery.batchImageLoad.js およびその他の一般的なライブラリが含まれています
  • everything_else.js
    • 以前に application.js にあったもののほとんど

どこにでも common.js を含めてから、必要に応じて editor.js または everything_else.js を含めます。

再構築したくない場合は、include_once 関数を記述できますが、これにより JavaScript のインクルードが予測しにくくなります。

# in application_helper 
@included_javascripts = {}

def javascript_include_tag_once file
   unless @included_javascripts[file]
      javascript_include_tag file
      @included_javascripts[file] = true
   end
end
于 2012-05-31T12:47:31.953 に答える