是什么
esri-loader是一个JavaScript库(包/模块,Web模块化编程的概念),用于在非Dojo框架的Web页面中加载ArcGIS API for JavaScript 3.x或4.x。
以上是esri-loader的定义。
如何安装
对当下热门的Web生态写法来说,你需要知道NodeJs和npm工具,它们把前端编程后端化了,把js文件拆分成各种模块,颇具面向对象的思想,而npm则能管理(增删改)这些模块,不需要自己更新js包,只需要一行代码就可以管理整个大型的Web项目。
esri-loader可以这样安装:
npm install esri-loader --save //等价写法 npm i esri-loader -S //等价写法 npm i esri-loader //等价写法 npm install esri-loader
如果你用的包管理工具是yarn,则需要这样安装
yarn add esri-loader
注意!
如果前端框架用的是Ember或者AngularJs 1.x,那么esri-loader就不能用了,请使用另外的库:
为什么需要安装esri-loader?直接用Dojo框架不行吗?
事实上,Dojo 1.x官方自己都嫌弃了,早期版本乱七八糟。
Dojo 1.x不支持npm的管理机制,用的是bower包管理工具(Dojo 2.x终于支持npm了),Dojo那个库除了IBM和Esri,估计有名一些的公司都没怎么用了,NodeJS火是不争的事实,我觉得Esri迟早会重构WebAPI的。
以下是官方文档:
开发者不能用npm直接在项目里安装ArcGIS API for JavaScript 3.x 和4.x,也不能从非Dojo框架的页面中使用ArcGIS API for JavaScript 3.x/4.x,因为加载API的唯一方法是用Dojo的require异步模块加载器。在其他框架做的Web页面时,当然要遵循这个框架的规则和语法(例如Vue/React都有自己的语法),而不是继续用Dojo的语法和规则。
esri-loader就是这么一个ECMAScript库(包/模块),允许开发者在其他框架做的页面中导入一个ArcGIS API标签,然后用esri-loader内部的Dojo加载器来加载ArcGIS API的各种模块。
自己bb
说白了,Dojo和当下热门的一些前端框架水火不相容,也和当下热门的NodeJS及当下热门的包管理工具npm水火不相容。你非得想用其他框架,还得同时想用ArcGIS API for JavaScript,那行,Esri再次妥协了,开发了esri-loader。
在WebGIS的SDK上,Esri有多次妥协。早年ArcIMS不是普通人看一天半个月就入门了的,于是出现了ArcGIS API for Silverlight,和ArcGIS API for Flex,很不幸Silverlight和Flex已经大势所去,于是Esri就推出了基于JavaScript的API——3.x的时代开启了。后来那几年,前端生态骤变,NodeJS/npm的出现,Vue/React/AngularJS这些前端框架的火起,随之而来的是颠覆性的前端写法,这就让刚刚接触AMD和Dojo不久的人又懵逼了,更别提最传统的HTML/CSS/JS认为引用一个简单的js文件几个简单的css文件就走天下的前端了。
希望,在ArcGIS API for JavaScript 5.x有新的突破吧,否则真得转行做开源WebGIS了 QAQ 无奈的是3DGIS也只能Esri的产品做的最好...唉
========201904补充=======
可恶,Esri居然推出了esri-leaflet和arcgis-js-api这俩npm包,它再次妥协了...