是什么

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包,它再次妥协了...

【esri-loader】帮助文档翻译 part1 是什么,怎么安装,为什么要用它的更多相关文章

  1. SVN操作手册(part1&part2)——SVN安装

    SVN操作手册 1.关于SVN 有一个简单但不十分精确比喻: SVN = 版本控制 + 备份服务器 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容. ...

  2. React文档翻译系列(一)安装

    原文地址:原文 本系列是针对React文档进行的翻译,因为自己在学习react的时候,最开始通过看博客或者论坛等中文资料,有些内容是零零散散的接收,并没有给自己带来很好的效果,所以后来决定把文档的原文 ...

  3. Webpack 之 Loader 的使用

    安装 loaders 如果loader在npm里,可以这样安装: $ npm install xxx-loader --save 或者 $ npm install xxx-loader --save- ...

  4. Linux(centos)如何安装Zend Optimizer Zend Guard Loader

    很多php开源系统都是基于Zend Optimizer的,所以我们需要先安装Zend Optimizer.但在php5.3之后Zend Optimizer被Zend Guard Loader 取代了, ...

  5. boot loader:grub入门[转]

    Boot Loader: Grub 在看完了前面的整个启动流程,以及核心模块的整理之后,你应该会发现到一件事情, 那就是『 boot loader 是加载核心的重要工具』啊!没有 boot loade ...

  6. 嵌入式系统 Boot Loader 技术内幕

    转载:http://www.ibm.com/developerworks/cn/linux/l-btloader/index.html   1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统 ...

  7. 第二十章、启动流程、模块管理与 Loader grub

    Boot Loader: Grub 『 boot loader 是加载核心的重要工具』!没有 boot loader 的话,那么 kernel 根本就没有办法被系统加载! boot loader 的两 ...

  8. 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader

    20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...

  9. 【转】嵌入式系统 Boot Loader 技术内幕,带你完全了解Boot Loader

    在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware)中的 boo ...

随机推荐

  1. uni-app——想说爱你不容易之踩坑系列

    1.uni-app不支持动态组件,目前在用i-if判断,或者用scroll-view切换,没有想到什么其他的办法 2.uni-app不支持具名插槽,会导致页面塌陷 3.uni-app在做动态组件渲染的 ...

  2. 实现AutoMapper(1.0版本)

    最近有个需求就是实体之间自动转换,网上肯定有很多现成的实现,不过还是自己写了一个,就当对java高级特性的一个熟悉的过程.这中间包含了泛型,反射,lamada表达式.对于想了解java高级特性的人来说 ...

  3. Java中堆(heap)和栈(stack)的区别

    简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存. 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分 ...

  4. Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy

    爬前叨叨 2019年开始了,今年计划写一整年的博客呢~,第一篇博客写一下 一个外包网站的爬虫,万一你从这个外包网站弄点外快呢,呵呵哒 数据分析 官方网址为 https://www.clouderwor ...

  5. python之循序渐进学习装饰器

    python装饰器的定义:在代码运行期间在不改变原函数定义的基础上,动态给该函数增加功能的方式称之为装饰器(Decorator) 装饰器的优点和用途: 1. 抽离出大量函数中与函数功能本身无关的的雷同 ...

  6. web scraper 抓取网页数据的几个常见问题

    如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据. 相关文章: 最简单的数据抓取教程,人人都用得上 web scraper 进阶教程,人人都用得上 如果你在使用 web s ...

  7. arcgis api 3.x for js 入门开发系列二十二地图模态层(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. Windows Cluster 添加新节点--验证报错

    今天给既有Windows Cluster 添加节点时,验证总是不通过.报错信息为 防火墙未正确配置为故障转移群集.现将处理步骤汇总如下. 1.错误具体信息 报错的位置 --[验证警告] 的步骤中发现错 ...

  9. navicate for mysql之-Can't connect to MySQL server on 'localhost'(10038)

    1. 卸载navicate for mysql 会留下很多坑,主要是卸载不干净,卸载之后重新安装会出现之前的库内容和库链接还存在的问题,这种情况的出现是卸载残余. 解决办法,清理注册表(网上很多教程但 ...

  10. July 07th. 2018, Week 27th. Saturday

    Soon is not as good as now. 别谈未来,现在就行动. From Seth Godin. I always told myself that I should finish w ...