如何在es6中导入dojo模块

how to import dojo modules in es6

我正在开发一个使用基于 dojo 框架的 ArcGIS 的库。

ArcGIS 有我们包含在 <script> 标签中的主文件。然后我们使用 require('esri/map'....

简单地要求他们的模块

我的es6库有很多模块,其中一部分需要使用ArcGIS模块。

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

现在,我没能解决的第二个问题是加载其他 ArcGIS AMD 模块..

我有我的classMyMap.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]
  });

});

但这不起作用。

有人吗?

为了使用 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]
            });
        });
    }
}