5

複数のプロジェクトで使用するフレームワークを作成しています。すべてのプロジェクトは、require.js を使用してモジュールと依存関係を管理します。

理想的には、r.js オプティマイザーを使用して、フレームワークを、それを使用するアプリケーションに提供できる単一のファイルにコンパイルしたいと考えています。そのファイルには、フレームワークのすべてのモジュールが含まれているため、アプリケーションで次のようなコードを記述できます。

define(["framework/util/a", "framework/views/b"], function(A, B) {
  var a = new A();
  // etc...
});

しかし、このアプローチには 2 つの問題があるようです。

  1. に応じて、framework/util/arequire.js にロードする必要があることを伝えませんframework.jsutil/a
  2. framework.js最適化ツールは、次のようなものに含まれるすべてのモジュールの名前を生成しdefine("util/a", function() { ... } ); ますframework.jsutil/aframeworkframework/util/a

フレームワークをCommonJSパッケージとして構築し、 require.jsのpackages構成オプションを使用するためのより良いアプローチがありますか?

4

1 に答える 1

2

Re: 1. 遅延読み込みはファイル パスに依存するため、r.js の最適化は部分的な依存ツリーを最適化するようには設計されていないようです。たとえばpath/to/module、実際にロードpath/toするように要求することは、ハックのように思えます。framework-built.js1 つの解決策は、遅延読み込みをやめて、アプリケーション コードの上にインクルードすることです。

framework-built.jsRe: 2. したがって、完全なパスが必要になります。framework1 つの方法は、たとえばのすべてを必要とするダミーの親を作成することdummy-framework.jsです。そうすればdummy-framework-built.js、完全なパスが定義frameworkされ、遅延ロードされていない場合は正常に機能するはずです。

免責事項:私はrequire.jsをそれほど使用していませんが、それは私の最善の努力です:)

于 2012-08-19T15:02:35.583 に答える