2016-10-17 5 views
0

私のrequireJSスクリプトは、私のプログラムを最初からハングする約500のHTTPリクエストです。私はgulpとgulp-requirejs(オプティマイザ)を使用していますが、HTTPリクエストの数を減らす方法はほとんどわかりません(ほとんどArcGIS JS 4.0 APIを使用しています)。私はこれをどのように制限することができるか、誰にも分かりますか?RequireJS:複数のHTTPリクエストを作成するonload

私はこの質問を見ているが、私は実際にrequirejsでこれを達成するかどうかはわかりません:https://gis.stackexchange.com/questions/33182/does-the-arcgis-javascript-api-let-me-build-package-my-application-using-dojo

コンフィグコード:

私のモジュールの1つにArcGISのJS 4.0 APIを使用して
requirejs.config({ 
    paths: { 
     "jquery": 'https://code.jquery.com/jquery-3.1.0.min', 
     'moment/moment': 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment', 
     "esri": 'http://js.arcgis.com/4.0/esri', 
     "dojo": 'http://js.arcgis.com/4.0/dojo', 
     "dojox": 'http://js.arcgis.com/4.0/dojox', 
     "dijit": 'http://js.arcgis.com/4.0/dijit' 
    }, 
    shim: { 
     ... 
     "map": { 
      deps: [ 'jquery', 'esri', 'dojo'] 
     }, 

    } 
}); 

define('map',["jquery","esri/Color", 
    "esri/geometry/Point", 
    "esri/geometry/Polygon", 
    "esri/symbols/SimpleFillSymbol",..],function(...){ 

}); 

UPDATE: だから、(イサキを使用)のArcGIS JS APIを構築した後、I I main.js(見つかったdistフォルダ)をプロジェクトにncludedします。しかし、APIのローカルコピーは私にエラーを与えます:

XMLHttpRequestはhttp://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer?f=jsonをロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。 Origin 'http://localhost:4000'はアクセスできません。応答にHTTPステータスコード501がありました。

代わりに、arcgis jsライブラリがこの呼び出しを行っています。私はarcgis js APIをビルドするときにgrunt configに含まれていたはずのライブラリを忘れていますか?

のArcGIS JS APIのための面倒なファイルの設定:

... 
include: [ 
      'requirejs/require', 
      'esri/layers/FeatureLayer', 
      'esri/layers/TileLayer', 
      'esri/layers/support/LabelClass', 
      'esri/layers/graphics/controllers/SnapshotController', 
      'esri/portal/support/layersCreator', 
      'esri/views/3d/layers/TiledLayerView3D', 
      'esri/views/layers/GraphicsLayerView', 
      'esri/views/3d/webgl-engine/lib/FloatingBoxLocalOriginFactory', 
      'esri/views/3d/webgl-engine/lib/Layer', 
      'esri/views/3d/webgl-engine/lib/MaterialCollection', 
      'esri/views/3d/webgl-engine/lib/Octree', 
      'esri/views/3d/webgl-engine/lib/TextTextureAtlas', 
      'esri/views/MapView', 
      'esri/views/2d/layers/GraphicsLayerView2D' 
      ], 
      exclude: [ 
      'dojo/domReady', 
      'dojo/has', 
      'dgrid', 
      'dojo/i18n', // some methods not available with RequireJS 
      ], 
... 

答えて

0

のEsri APIのデフォルトのファイル(init.js)、require実装が含まれていますし、また、それは、基本モジュールのキャッシュのほとんどを持っています。これは、最初のローディング時間を短縮するために行われます。しかし、esri require(init.jsファイルをロードする)を使用していないので、キャッシュされたモジュールはすべて使用できません。したがって、各モジュールはHTTP要求を介してダウンロードされています。

Bowerを使用してESRIスクリプトのカスタムビルドを構築しようとしています。どのように自分のウェブサイトでそれを行うには詳細。

私は正確にあなたの質問に答えていないことを知っています。それが助けてくれることを願っています。

+0

私はrequirejsのカスタムビルドを試してみましたが、私はarcgis js apiのすべてのフォルダを持っていますが、次に何をすべきかわかりません。 init.jsを使いたければどうすればいいですか?これを解決するにはどうすればいいのか分かりますか? – mddev

+0

init.jsファイルについては、私はこの質問http://gis.stackexchange.com/questions/133795/running-arcgis-api-for-javascript-locallyに記載されているように以下の設定を行っていますが、どのように参照するのですか私のrequirejsアプリケーションで? – mddev

+0

@mddev githubであなたのアプリケーションを共有できますか?あなたがこれまで行ってきたことを見てみることができます。実際のアプリケーションではなく、単純なアプリケーションにすることができます。 –

関連する問題