3

最新バージョンの RequireJS で Bing Maps API を使用するにはどうすればよいですか? リモート スクリプトの URL は次のとおりです。

http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0

こんなシムを入れるだけでいいの?

require.config({
    /* ... */
    paths: {
        'Microsoft.Maps': 'http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0'
    },
    shim: {
        'Microsoft.Maps': {
            deps: [],
            exports: 'Microsoft'
        }
    }
});

そして、次のようにモジュールで使用します。

define(['Microsoft.Maps'], function(Microsoft) {
    /* ... */
});

私の質問は、一般的に RequireJS で名前空間付きコードを使用する方法に関するものだと思います。ドキュメントには、私が見つけた例はありません。

4

2 に答える 2

1

RequireJS に関するドキュメントを見ていると、次の行が見つかりました。

ビルドで CDN の読み込みと shim 構成を混在させないでください。シナリオ例: CDN から jQuery をロードしますが、shim 構成を使用して、jQuery に依存するバックボーンのストック バージョンのようなものをロードします。ビルドを行うときは、必ずビルド ファイルに jQuery をインライン化し、CDN からロードしないでください。それ以外の場合、バックボーンはビルドされたファイルにインライン化され、CDN で読み込まれた jQuery が読み込まれる前に実行されます。これは、shim 構成が依存関係が読み込まれるまでファイルの読み込みを遅らせるだけで、定義の自動ラップを行わないためです。ビルド後、依存関係は既にインライン化されており、shim 構成は、define() されていないコードの実行を後まで遅らせることはできません。定義()' d モジュールは、依存関係が読み込まれるまで実行されない define factory 関数でソースを適切にラップするため、ビルド後に CDN で読み込まれたコードで動作します。したがって、教訓: shim config は、非モジュール コード、レガシー コードの応急処置です。define() されたモジュールの方が優れています。

参照: http://requirejs.org/docs/api.html#config

Microsoft は最初のスクリプト参照 (遅延読み込み) を使用して複数の要素を読み込みます。CDN 読み込みのケースに似ているため、shim を介して別の方法で使用することは明らかに避けてください。

于 2013-04-23T20:41:42.893 に答える