2013-08-29 4 views
14

私はこの質問が広すぎるとは思わないが、この特定のrequire.js/ESRIの例で起こっている馴染みのない構文がたくさんあり、誰かが私にこのことのいくつかを説明できることを望んでいる。誰かがこのrequire.jsの例に含まれる構文を説明できますか?

まず、このコードは動作します(つまり、私が期待することを行います)。ベースマップを作成し、マップサービスから取得したFeatureLayerを追加します。これは、ESRI Javascript APIページから抜粋した例です。特定の質問のために今

var map; 
    var featureLayer; 

    require(["esri/map", "dojo/domReady!", "esri/layers/FeatureLayer"], function (Map) { 
     map = new Map("map", { 
      basemap: "topo", 
      center: [-100.195, 39.567], // long, lat 
      zoom: 4 
     }); 

     featureLayer = new esri.layers.FeatureLayer(
      "http://my-server-url.com/arcgis/rest/services/Projects/MapServer/0", 
      { 
       mode: esri.layers.FeatureLayer.MODE_ONDEMAND 
      } 
     ); 

     map.addLayer(featureLayer); 

    }); 

:ここでは、コードですか?これは([...]は、関数(引数){}構文やって必要である何

  1. 私にはありませんこれを読む方法を知っていてもrequire.jsの関数呼び出しですか?角括弧内には何が入りますか?関数の引数は何ですか?

  2. 他の例では、通常は1つの関数引数require.jsの呼び出しにインクルードしますここで、FeatureLayerの引数を追加すると、機能しません。

  3. "dojo/domReady!" includeはどの例でも対応する引数を持っていないようです。これは感嘆符に関連していますか?感嘆符は何を意味しますか?

  4. 誰でも私にUSEFULのrequire.jsリファレンスを教えてもらえますか? requirejs.orgのウェブサイトは、ユーザーマニュアルよりも技術仕様のようなものです。 ESRIのウェブサイトでは、requireの使い方を知っているようです。

そして、はい、私はグーグルでされている - 問題は、それが句読点を取り除き以来、Googleはコンピュータの文法の質問を検索で素晴らしいではないということである、として安っぽいのためのようなメイク「javascriptの構文を必要とする」ので(広範囲にわたる)検索用語。

+0

@SLaks: "that"はあなたのコメントの中で何を参照していますか? – Klay

+0

@Ricardo:多分あなたは質問4号を見逃していました。私は文書を読んでみることを指定しましたが、それは役に立たないと分かったので、他の参考文献を求めています。 – Klay

+0

@Klay: '[...]' – SLaks

答えて

25
  1. require([...], function(args) { }構文は、「モジュールのリストを読み込み、そして、彼らはすべてのロードされていると、引数としてこれらのモジュールの戻り値で、この関数を呼び出す」を言っています。角括弧の中には、スクリプトファイルへのパス(.jsを除いたパス)またはrequire.config paths sectionを使ってマップされたモジュールIDの配列があります。コールバック関数の引数は配列内のパス/モジュールに対応しますが、次の質問で気づいたように、すべてのモジュールが有用な値を返すわけではありません。...

  2. FeatureLayerの引数を追加すると機能しません引数をスキップすることはできません。しかし、多くのモジュールが実際に使用される値を返さないことに注意してください。 jQueryプラグインでは、モジュールの読み込みによってプラグインがjQueryに登録されますが、呼び出し元には値は返されません。私はESRIを知らないのですが、コードスニペットから、FeatureLayerをロードするように見えるだけで、FeatureLayerがesri.layersグローバルオブジェクトに追加されます。

  3. 感嘆符の構文はpluginsのために予約されています。通常、感嘆符の後ろには、プラグインがロードするリソースを示す何か他のものがあります。 text!myTemplate.htmlがありますが、domReady!の場合、プラグインはコールバック関数を呼び出す前にDOMがロードされるまで待つ方法と同じように存在しますので、感嘆符に続く必要はありません。外部リソースの

  4. 勧告リストは、オフトピックStackOverflowのためであるが、ここで私は基本的な概念を得ることに役に立った一つだ:http://aaronhardy.com/javascript/javascript-architecture-requirejs-dependency-management/

+2

パーフェクト!ありがとうございました。私はあなたに徹底的に答える時間を割いていただき、ありがとうございます。 – Klay

0

requirejsドキュメントのこのセクションでは、どのような感嘆符の手段を記載しますdomReadyのコンテキストで:http://requirejs.org/docs/api.html#pageload

DOMの準備ができて、一般的なアプリケーションであるので、上記のAPIでネストされた関数を避けることができ、理想的に、必要があります。 domReadyモジュールはLoader Plugin APIも実装しているため、require()コールバック関数が実行前にDOMが待機するのを待たせるために、loaderプラグイン構文(domReadyの依存関係に注意してください)を使用することができます。

関連する問題