2017-05-13 14 views
2

リーフレットと呼ばれるAMDモジュールをインストールし、 "L"として正常に使用しました。 次へleaflet.drawというプラグインが必要ですが、依存関係について混乱します。requirejsにサブ依存関係のAMD/legacy依存関係(リーフレット)を追加するには

requirejs.config({ 
    baseUrl: 'bower_components', 
    paths: { 
     leaflet: 'leaflet/dist/leaflet-src', 
     leafletdraw: 'leaflet-draw/dist/leaflet.draw-src' 
     ... 

requirejs(["leaflet", "leafletdraw"], function(L, leafletdraw) { 
    var map = new L.Map('map'); 
    ... 

これは、Leaflet.draw.js:4でreferenceError:Lが定義されていないことを示しています。だから私はそれが依存として、リーフレット(L)を必要と思う、右か?私はシムにそれを追加しようとしましたconfig:

shim: { 
    leafletdraw: { 
     deps: 'leaflet' 
    } 
} 

この結果、「無効な要求コール」が発生します。だから私の質問です:どのように適切に従属性を持つプラグインが必要ですか?

  • モジュールは「亭リーフレットをインストールする」とrespectivily「亭 はリーフレット・ドローをインストール」でインストールされています。しかし、リーフレットドロー がAMD対応であるかどうかはわかりません。なぜreposのドキュメントに記載されていないのですか?デフォルトで が有効になっていると仮定できますか?

  • これは私が達成しようとしているものです: http://codepen.io/osmbuildings/pen/LVJzWwですが、requirejsを付けてください。

答えて

2

解決策:シムリーフレットそのものを「L」にエクスポートします。プラグインにdepsを置くと動作します。私の完全な設定:

requirejs.config({ 
    baseUrl: 'bower_components', 
    paths: { 
     jquery: 'jquery/dist/jquery.min', 
     leaflet: 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet', 
     'leaflet-draw': 'http://cdn.osmbuildings.org/Leaflet.draw/0.2.0/leaflet.draw',   
     OSMBuildings: ['http://cdn.osmbuildings.org/OSMBuildings-Leaflet']  
    },  
    shim: { 
     leaflet: { 
      exports: 'L' 
     }, 
     'leaflet-draw': { 
      deps: ['leaflet'] 
     },   
     OSMBuildings: { 
      deps: ['leaflet'], 
      exports: 'OSMBuildings' 
     } 
    } 
}); 

requirejs(["jquery", "leaflet", "leaflet-draw", "OSMBuildings"], function($, L, dummy, OSMBuildings) { 
    var map = new L.Map('map');