2017-06-07 100 views
1

我正在开发一个使用基于dojo框架的ArcGIS的库。如何导入es6中的dojo模块

ArcGIS有我们包含在<script>标记中的主文件。然后我们简单地要求他们的模块使用require('esri/map'...

我的es6库有一些模块,部分需要使用ArcGIS模块。

我正在使用webpack和babel捆绑和转换代码。我没有将ArcGIS捆绑到我的库单个文件中。我期待我的客户将esri加入<script>,然后使用<script>包含我的捆绑软件。 在那里,我已经遇到了一个障碍 - dojo multiple define ...所以我已经做了另一个js排除在加载我的包文件使用dojo require已经存在(因为arcgis已经启动并加载dojo)的bundle文件。

现在,我不设法解决第二个问题是加载其他ArcGIS AMD模块..

我有我的课MyMap.js

export default MyMap { 
    constructor() { 
     // Adding here code to create ArcGIS Map 
     // this.map = new esriMap.... 
    } 
} 

esriMap不存在,必须加载。在一个简单的应用程序,我们会这样做,以使其发生

require([ 
    "esri/Map", 
    "esri/views/MapView" 
], function(Map, MapView) { 

    var map = new Map({ 
    basemap: "streets" 
    }); 

    var view = new MapView({ 
    container: "viewDiv", 
    map: map, 
    zoom: 4, 
    center: [15, 65] 
    }); 

}); 

但这是行不通的。

有人吗?

+0

你见过这[线程](https://geonet.esri.com/thread/180988)? – barbsan

+0

我以前见过这个,但是我看到它是打字稿,那里的链接被打破了 - 所以我放弃了它。但是现在,在你发送它之后,我已经挖了更多,并且在github中找到了用户,所以他开发esri-loder ..我检查了他的代码,发现当我们编写'window.require'时,它确实使用'dojo require' ..所以解决方案很简单..现在我将编写一个解决方案(感谢推@ barbsan) –

+0

我也发现了一些东西 - 检查[this](https://stackoverflow.com/questions/32805234/import-existing-amd-module-into-es6-module)。但是这个解决方案使用吞咽。 – barbsan

回答

1

对于使用dojorequire我们只需要编写window.require,它将工作。

无需编写window.它在构建过程Can't resolve 'esri/Map'

未能对ESRI谁想要使用一些不错的装载机用户 - 看看这个one

代码示例:

export default class myMap { 
    constructor(div) { 
     window.require(['esri/Map', 'esri/views/MapView'], (esriMap, esriMapView) => { 
      const map = new esriMap({ 
       basemap: "streets" 
      }); 

      const view = new esriMapView({ 
       container: div, 
       map: map, 
       zoom: 4, 
       center: [15, 65] 
      }); 
     }); 
    } 
}