javascript - 如何在es6中导入dojo模块

标签 javascript ecmascript-6 dojo amd

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

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

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

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

现在,我无法解决的第二个问题是加载其他 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]
  });

});

但这不起作用。

某人?

最佳答案

为了使用dojorequire,我们只需要编写window.require就可以了。

没有编写窗口。它在构建过程中失败无法解析'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]
            });
        });
    }
}

关于javascript - 如何在es6中导入dojo模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414055/

相关文章:

javascript - Dgrid 对具有一列的数据源执行更新

javascript - 创建倒数计时器

javascript - 在 JavaScript 中将数组中的项目与表项目进行比较,初学者

javascript - 为什么可以在不提供数据参数的情况下引用此函数?

javascript - 关于链接 es6 Promises、then() 和值消耗

javascript - 如何阻止 dojo 滚动以形成焦点小部件?

javascript - 访问数组内字符串的索引并求和

javascript - 如何在 jquery jquery mobile 中的每一行上创建复选框?

javascript - 替换字符串的最后一部分,javascript

javascript - Dojo FilteringSelect - 将下拉列表中的特定选项动态标记为禁用(灰色且不可选择)