JavaScript简介
JavaScript是一种很常见的高级编程语言,它和Java计算机语言没有任何联系。
JavaScript主要用于开发Web端的用户界面,比如在Web和移动GIS应用程序中就会用到JavaScript;它主要目标是构建前端应用程序,这些应用程序利用空间数据和GIS原理,在许多情况下具有嵌入式交互式地图。
JavaScript最初的代码名是Mocha,作为LiveScript发布,然后不久后重命名为JavaScript。微软发布了他们自己的类似版本,称为Jscript,也基于ECMAScript标准,以避免商标冲突。
2009年,世界领先的浏览器采用HTML5(超文本标记语言版本5)作为定义万维网属性和行为的核心语言。
JavaScript直接与HTML5协同工作,在它成为全球广泛使用的web领先计算机语言方面发挥了重要作用。
JavaScript默认比Java或C语言更容易学,它能在网页和应用程序中添加自动化、动画和交互。JavaScript使用的是浏览器作为运行时环境(RTE),因此JavaScript的流行,得益于Web和移动应用程序的快速发展的浏览器作为支持。
在过去十年中,使用开源以及专有JavaScript应用程序编程接口(API)和库的公开web和移动应用程序激增。JavaScript API是通过编程提供软件功能的库模块集合。
由于JavaScript现在是web和移动应用程序开发的主要语言,本文主要强调使用JavaScript开发地理空间应用程序的基础概念和应用方式。
JavaScript基础概念
在了解JavaScript之前,必须了解以下几个概念。
客户端(client-side):
在客户端/服务器(C/S)计算机网络中发生操作,例如在客户端计算机上运行计算机程序;
层叠样式表(CSS):
带有包含标记语言的CSS扩展,用于向web文档(如HTML5网页)添加颜色、间距、字体等(样式);
代码库(Codebase):
人们编写的源代码,包括标记语言、脚本语言或程序设计,用于构造或构建给定的软件组件、应用程序或整个系统。
前端(front-end):
web或移动应用程序用户直接与之交互的用户界面,如网页或图形用户界面,也可以称为应用程序的客户端。前端web开发通常利用HTML5、CSS和JavaScript将信息集成到图形用户界面中,以便最终用户可以处理数据。
Git:
用于管理代码存储库内容的免费版本控制系统或软件工具。
即时编译(JIT):
计算机程序开始执行后对数据的动态处理。
库(library):
共享编程代码的集合,如文件、程序、例程、脚本或函数,可用于促进其他软件程序和应用程序的开发。
模型-视图-控制器(MVC):
用于创建用户界面的通用软件设计模式,该界面将内部应用程序数据与用户看到的信息分离<运行时:计算机编程运行的时间范围,从程序启动时开始,到程序关闭时结束。
标记语言(markup language):
一种人类可读的计算机语言,它使用以文本形式编写的标记来注释或定义文档文件中的项目,这意味着它可以包含标准单词而不是编程语法。
脚本语言(scripting language):
一种经过解释的计算机编程语言,在运行时被翻译成机器代码,执行时无需编译即可完成特定任务。
脚本(script):
一系列计算机编程命令,可以保存在计算机文件中,以便于任务的自动执行,也可以在终端程序或仿真器中逐个手动执行。
web应用程序框架:
一种软件框架,如ASP、.NET或Ruby on Rails,用于帮助开发人员构建web应用程序,如web API和web服务,并经常提供用于简化编程任务(如访问和配置数据)的库。
JavaScript在GIS开发中的应用
下图展示了一个典型的JavaScript for GIS应用程序开发项目的基本组件。
一般来说,应用程序由HTML5文档组成,其中添加了JavaScript和链接标记,这些标记加载基于GIS的JavaScriptAPI代码以创建web地图的实例。
HTML5文档还可能包含特定于GIS样式组件的CSS代码或脚本,可能还有小部件。HTML5文档中的JavaScript和CSS代码说明了所使用的每种语言的版本,并包含指向单独JavaScript和CSS文件的链接。这些单独的文件包含在应用程序中制作GIS组件(如地图)以及分别设置应用程序组件渲染或显示方式的所有说明。
在Web应用程序中,web GIS开发人员的工作是创建一个网页,该网页具有标题、字体、颜色、图片、动画,以及最终用户可以轻松与之交互的嵌入式地图。
在应用程序体系结构方面,开发人员必须将应用程序的概念分解为小组件,然后将这些组件转换为计算机能够理解的指令。在WebGIS应用程序中,HTML5提供网页的基本结构,CSS控制组件的格式,JavaScript指导网页中所有不同元素的行为。JavaScript功能的典型用途包括屏幕上的弹出框、交互式游戏、动画和安全功能。交互式地图通过在HTML5代码中编写特定于每个特定GIS软件API或库的JavaScriptFunction嵌入到网页中。相反,地图图像只需要和HTML<img>标记。
Web/移动GIS常用JavaScript API
GIS应用程序开发经常使用专有或者开源JavaScript库以及API。
许多开源JavaScript库是开源的,GIS开发人员可以用来简化程序编写的代码编译组成。JavaScript库都是专门为跨平台和设备设计和构建交互式用户界面而开发的。
以下是比较全面的Javascript库和API:
应用程序/库 | 开源/专有 | 链接 |
Angular | 开源 | angular.io |
Apache Cordova | 开源 | cordova.apache.org |
Carto.js, Carto VL(Carto/CartoDB) | 开源/专有 | carto.com |
Cesium | 开源 | cesium.com/cesiumjs |
D3 (Data DrivenDocuments) | 开源 | d3js.org |
Electron | 开源 | www.electronjs.org |
Esri API for JavaScript | 开源/专有 | developers.arcgis.com/javascript |
Express | 开源 | expressjs.com |
Google Maps API | 开源/专有 | developers.google.com/maps/documentation |
Ionic2 | 开源 | ionicframework.com |
jQuery API | 开源 | api.jquery.com |
Leaflet | 开源 | leafletjs.com |
MapBox | 开源/专有 | mapbox.com |
MapQuest.js | 开源 | business.mapquest.com/products/mapguest-js |
Node.js | 开源 | nodejs.org |
OpenLayers | 开源 | openlayers.org |
OpenWeather Map API | 开源/专有 | openweathermap.org |
ReactJS / Native(JavaScript Diaries) | 开源 | react.js |
Sencha | 开源 | www.sencha.com |
Turf.js | 开源 | turfjs.org |
Vue.js | 开源 | vuejs.org |