使用 ESRI Javascript 4.0 API 和 Require JS
Using ESRI Javascript 4.0 API with Require JS
在将我的应用程序从 4.0 ArcGIS Javascript API 的 Beta 3 版本切换到新版本的 4.0 Javascript 时,我 运行 遇到了一些问题API.
我在使用 4.0 的 beta3 版本时有一个工作图 javascript API 并且配置了 Require JS 以像这样使用 beta3 版本正确加载模块
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0beta3/esri",
"dojo": "//js.arcgis.com/4.0beta3/dojo",
"dojox": "//js.arcgis.com/4.0beta3/dojox",
"dijit": "//js.arcgis.com/4.0beta3/dijit",
},
});
但是一旦我从 4.0beta3 切换到 4.0
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
});
我在尝试加载地图时遇到错误,它正在尝试加载此脚本并给出 404
http://localhost:17654/Scripts/moment/moment.js
我相信它正在尝试加载此脚本,因为 ESRI Api 使用它自己的时刻插件,并且由于我已经定义了时刻是什么,它试图查看本地主机而不是加载 esri 模块.
我已经尝试了几种不同的配置要求,有了这个我可以让页面加载而没有 javascript 错误但是没有地图显示
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
map: {
"*": {
"moment/moment": "moment"
}
}
});
我知道 javascript API 使用它自己的 dojo 版本,它应该处理模块加载,所以将它与 require js 混合使用甚至可能是不可能的,但因为它工作正常对于 beta3,我希望找到一种方法让 this moment 插件正确加载并使用 require js 让地图工作。
有没有人有让这两个一起工作的经验?任何帮助深表感谢。谢谢
我想如果你的文件夹中有 Scripts/moment/moment.js 文件,一切都会很好。
它应该能够与 requirejs 一起工作,但是您使用它而不是 esri 的 AMD 加载器是否有特殊原因,后者随 API 一起出现?使用他们的应该会让事情变得更容易,但你可能会 运行 使用他们的加载程序遇到同样的问题,因为 esri 已经暂时定义了 package/alias 。您可以尝试的一件事是为您的路径命名不同的名称。像这样:
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"local-moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
});
这样 esri 仍然可以要求他们的 moment
而您可以要求您的 local-moment
.
在将我的应用程序从 4.0 ArcGIS Javascript API 的 Beta 3 版本切换到新版本的 4.0 Javascript 时,我 运行 遇到了一些问题API.
我在使用 4.0 的 beta3 版本时有一个工作图 javascript API 并且配置了 Require JS 以像这样使用 beta3 版本正确加载模块
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0beta3/esri",
"dojo": "//js.arcgis.com/4.0beta3/dojo",
"dojox": "//js.arcgis.com/4.0beta3/dojox",
"dijit": "//js.arcgis.com/4.0beta3/dijit",
},
});
但是一旦我从 4.0beta3 切换到 4.0
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
});
我在尝试加载地图时遇到错误,它正在尝试加载此脚本并给出 404
http://localhost:17654/Scripts/moment/moment.js
我相信它正在尝试加载此脚本,因为 ESRI Api 使用它自己的时刻插件,并且由于我已经定义了时刻是什么,它试图查看本地主机而不是加载 esri 模块.
我已经尝试了几种不同的配置要求,有了这个我可以让页面加载而没有 javascript 错误但是没有地图显示
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
map: {
"*": {
"moment/moment": "moment"
}
}
});
我知道 javascript API 使用它自己的 dojo 版本,它应该处理模块加载,所以将它与 require js 混合使用甚至可能是不可能的,但因为它工作正常对于 beta3,我希望找到一种方法让 this moment 插件正确加载并使用 require js 让地图工作。
有没有人有让这两个一起工作的经验?任何帮助深表感谢。谢谢
我想如果你的文件夹中有 Scripts/moment/moment.js 文件,一切都会很好。
它应该能够与 requirejs 一起工作,但是您使用它而不是 esri 的 AMD 加载器是否有特殊原因,后者随 API 一起出现?使用他们的应该会让事情变得更容易,但你可能会 运行 使用他们的加载程序遇到同样的问题,因为 esri 已经暂时定义了 package/alias 。您可以尝试的一件事是为您的路径命名不同的名称。像这样:
requirejs.config({
baseUrl: "/App/",
paths: {
"text": "/Scripts/text",
"local-moment": "/Scripts/moment",
"durandal": "/Scripts/durandal",
"plugins": "/Scripts/durandal/plugins",
"transitions": "/Scripts/durandal/transitions",
"esri": "//js.arcgis.com/4.0/esri",
"dojo": "//js.arcgis.com/4.0/dojo",
"dojox": "//js.arcgis.com/4.0/dojox",
"dijit": "//js.arcgis.com/4.0/dijit",
},
});
这样 esri 仍然可以要求他们的 moment
而您可以要求您的 local-moment
.