这篇文章将会介绍如何使用在使用Vite
初始化的vue3
项目中使用ArcGIS API for JavaScript 4.18
来进行GIS
项目开发。
ArcGIS API for JavaScript
的4.18
版本相比于4.17
版本的变化主要的更新内容如下:
ES Module
(Beta
版本)方式调用,同时也支持AMD
方式的调用,两种方式调用的功能都是一样的;2D
视图下的图层效果,操作对象可以是整个图层或者过滤条件后的要素,该特性可将类似css
过滤器的函数应用与图层,从而增强地图的展示效果Beta
版本),该微件可以在2D
和3D
视图中使用,可基于绘制的线或者视图中存在的线,对比地形和3D
建筑物的高度Order-independent transparency
技术,能够根据相机的位置,可以选择性地看到透明表面后的其他透明要素3D Web Editing
,早些的版本中提供过了对于3D
图层的编辑能力,这个版本增强了这个功能,包括:在scene layers
中支持对属性的编辑、绘制3D
要素时支持自捕捉功能等SceneView
中可以加载火星或月球相关的影像和地形,也可加载相关坐标系的要素图层CIMSymbols
对graphic
和feature
进行符号化IE11
和Edge Legacy
的支持4.18
版本信息的优化内容请移步官网介绍,点这里哦
Vite
是由尤雨溪开发的Web
开发工具,是一个基于浏览器原生的ES import
的开发服务器,它能够利用浏览器区解析imports
,在服务器端负责按需编译并返回,整个过程跳过了打包这个概念;并且在热更新时,能够按需编译,不会随着模块增多而变慢。在生产环境中,则可以使用rollup
对同一份代码打包。
Vite
具有快速的冷启动、即时的模块热更新以及真正的按需编译的特点。详细的Vite
介绍可以查看阿里巴巴淘系技术在知乎上的回答。
这里假设你已经在电脑上安装了node
并且node
版本>= 12.0.0
、配置了npm
可全局访问。
npm
是6.x
版本:$ npm init @vitejs/app --template vue
npm
是7.x
版本:$ npm init @vitejs/app -- --template vue
创建完成后,使用如下命令运行当前项目
$ cd
$ npm install
$ npm run dev
$ npm install @arcgis/core
{
"name": "arcgis_api_for_js_418_with_vite",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "npm run copy && vite build",
"serve": "vite preview",
"copy": "ncp ./node_modules/@arcgis/core/assets ./public/assets",
"postinstall": "npm run copy"
},
"dependencies": {
"vue": "^3.0.5",
"@arcgis/core": "^4.18.1"
},
"devDependencies": {
"ncp": "^2.0.0",
"@vitejs/plugin-vue": "^1.1.4",
"@vue/compiler-sfc": "^3.0.5",
"vite": "^2.0.0-beta.65"
}
}
主要修改内容有:
ncp
依赖,主要用于将@/arcgis/core
中的assets
文件夹拷贝至项目的public
文件夹copy
命令,调用ncp
将@/arcgis/core
中的assets
文件夹拷贝至项目的public
文件夹build
命令,在构建项目之前,执行copy
命令在main.js
文件中引用@arcgis/core
中的样式文件,文件内容如下:
import { createApp } from 'vue'
import App from './App.vue'
import '@arcgis/core/assets/esri/themes/dark/main.css'
createApp(App).mount('#app')
修改App.vue
文件加载地图,文件内容如下:
可以看到,引用WebMap
和MapView
时使用了ES6 Module
相关的语法,不再使用之前的load_modules
的方式。
在执行npm run dev
命令之前,需要调用npm run postinstall
命令拷贝assets
文件夹,否则在Web
页面上不能显示放大、缩小等微件,并且在浏览器中提示相关错误。
$ npm run postinstall
$ npm run dev
访问浏览器查看地图是否加载成功。
修改vite.config.js
配置打包的目标路径以及基本公共路径等配置信息
import vue from '@vitejs/plugin-vue'
/**
* https://vitejs.dev/config/
* @type {import('vite').UserConfig}
*/
export default {
plugins: [vue()],
base: './',
build: {
outDir: 'example'
}
}
执行npm run build
命令,并将生成的打包文件夹拷贝到tomcat
中的webapp
文件夹。在浏览器通过http(s)://<服务器IP>:
的方式访问部署的网页。