2017-05-13 5 views
2

리플릿이라는 AMD 모듈을 설치하고이를 "L"로 사용했습니다. 다음 나는 leaflet.draw라는 플러그인이 필요하지만 종속성에 대해 혼란스러워합니다. 다음 코드를 고려하십시오.requirejs에 하위 종속성이있는 AMD/레거시 종속성 (리플릿)을 추가하는 방법

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'); 
    ... 

이렇게하면 referenceError : L이 Leaflet.draw.js : 4에 정의되어 있지 않습니다. 그래서 저는 그것이 전단계 (L)가 의존성으로 필요하다고 생각합니까? 나는 그 다음 shim config에 그것을 추가하려고 시도했다 :

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

결과는 "Invalid require call"이된다. 그래서 내 질문은 : 어떻게 적절하게 하위 종속성과 플러그인을 필요합니까?

  • 모듈은 "정자가 전단지를 설치"하고 respectivily "이물 이 전단지 그리기를 설치"와 함께 설치됩니다. 그러나 이 리플릿으로 AMD를 사용할 수 있는지 확실하지 않습니다. 왜 그 repos 문서에 명시된 이유는 무엇입니까? 이 기본적으로 사용 설정되어 있다고 가정 할 수 있습니까?

  • 이것은 내가 시도하려고하는 것입니다 : http://codepen.io/osmbuildings/pen/LVJzWw,하지만 requirejs가 있습니다.

답변

2

해결 방법 : shim 전단지 자체에 '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');