1

一連の依存関係を取得して、シリアルおよびパラレル アクションとしてモデル化するにはどうすればよいですか?

例えば:

U1 は U2 に依存する

のシリアル表現である可能性があります

S: [U1, U2]

U1 と U2 が依存していない場合は、並列表現になります。

P: [U1, U2]

S はシリアル、P はパラレルを意味します。この例では、U はリソースを指す URL を参照します。

並列リソースでは、順序は重要ではありません。シリアル リソースでは、順序が重要です。

リソースローダーを構築しようとしています。

ローカルサーバーでのみ動作する必要があります。また、Ajax get リクエストのみを使用してリソースをロードします。

しかし、依存リソースの複雑さをモデル化する言語/構文が必要です。

説明と例

これは学習/後で実装するためのものです。ロードに使用する構文を質問に関連付けることができない限り、外部ライブラリはありません。

例 1

Jqueryui は jquery に依存しています。これは次のように表されます...

S: [U-jquery, U-jqueryui]

例 2

jquery.js は underscore.js に依存しません。これは次のように表されます...

P: [U-jquery, U-underscore]

例 3

backbone.js は underscore.js と jquery.js の両方に依存しています

P:[U-underscore, U-jquery] // group1
S:[some_notation to represent group1, U-backbone.js]
4

2 に答える 2

1

ロードに使用する構文を質問に関連付けることができない限り、外部ライブラリはありません。

require.jsと、それが依存関係をどのように指定しているかを確認することをお勧めします。MediaWiki のResourceLoaderも非常に興味深いものです。JS 依存関係マップは PHP スクリプトによって動的に生成されますが、その構造は関連している可能性があります。

Jqueryui は jquery に依存しています。これは次のように表されます...

S: [U-jquery, U-jqueryui]

可能です。ただし、依存関係を管理するために独自の DSL を作成する必要があるかどうかはわかりません。標準のJSON/オブジェクトリテラルに固執したい場合は、依存関係を宣言し、値としてリストするモジュールにオブジェクトのキーを使用することを提案します。

deps = {
    "U-jqueryui": /*depends on*/ ["U-jquery" /*and nothing else*/]
};

jquery.js は underscore.js に依存しません。これは次のように表されます...

P: [U-jquery, U-underscore]

理解できない。なぜそれを明示的に宣言する必要があるのですか?関係のないもの ([明示的に] 相互に依存していないもの) はすべて、既定で順序付けされていない読み込み/実行に設定する必要があります。そうしないと、独立したモジュールの P 宣言が指数関数的に増加します。1つ逃した場合はどうなりますか?

backbone.js は underscore.js と jquery.js の両方に依存しています

P:[U-underscore, U-jquery] // group1
S:[some_notation to represent group1, U-backbone.js]

例 1 と同じ形式を使用します。

deps = {
    "U-backbone.js": /*depends on*/ ["U-underscore", /*and*/ "U-jquery"]
};

何かのグループが本当に必要な場合は、本体のないモジュールのようにグループを作成できます。これは、すべての依存関係をロードして提供するだけです。次に、ローダー コードで、(maybe? で始まらない名前に基づいて) いくつかの例外を作成し、U-実際の ajax リクエストを起動しないようにします。最終的な依存オブジェクトは次のようになります

deps = {
    "U-jqueryui": ["U-jquery"],
    "group1": ["U-underscore", "U-jquery"],
    "U-backbone.js": ["group1"]
};
于 2013-04-03T12:53:45.993 に答える
-1

チェックModernizr.load:

現在、スクリプトのダウンロード速度にそれほど不満を感じていない可能性は十分にありますが、Modernizr.load によって速度が低下することはなく、スクリプトを非同期にロードすることでパフォーマンスがわずかに向上し、並行して。この領域には考慮すべき変数がたくさんあるため、特定の状況で最大のパフォーマンスが得られるように、いくつかのことを試してみることをお勧めします。

http://modernizr.com/docs/

于 2013-03-30T23:09:01.833 に答える