1. 程式人生 > >ArcGIS API for JavaScript 4.x 離線配置之IIS法

ArcGIS API for JavaScript 4.x 離線配置之IIS法

mil 主機名 def 創建網站 ali 修改 class web服務 block

【導讀】

關於如何在默認網站(Default Web Site,物理地址C:\inetpub\wwwroot\)啟動,已有很多博客詳盡地寫好了。

本篇在自建網站(本機)中配置jsAPI,jsAPI版本為4.10。

3.x的API也類似。

1. 準備工作-創建自定義網站

// 如何打開IIS、如何創建網站請移步IIS教程,比較簡單,博客也很多,不再贅述。

以下為自定義網站的信息列表:

  • 物理地址:D:\jsapi_lib\(預先在此文件夾下放置一個index.html文檔以測試能否本地訪問,熟練IIS的同誌不放也無所謂)
  • 端口:1569(這個自己隨便填,只要沒被占用即可,關於端口的知識也有很多博客,不再贅述)
  • 網站名稱:jsapi_lib(這個可以隨便,盡量不要用中文,也可以和物理地址不同)

1.1 物理存儲

如下:

技術分享圖片

其中,html文件僅有一個h1標簽:

<h1>Hello World</h1>

以測試網站有效性。

1.2 IIS的設置

如下:

技術分享圖片

因為是在本機本地環境測試,故IP地址選“全部未分配”即可。

// 如果買了雲主機,且為IP配置了域名,則主機名可以填上域名,IP地址可以填得到的IP地址;本機測試請忽略此條。

創建站點完成並啟動後是這樣的:

技術分享圖片

1.3 配置jsapi有關庫

將整個官網下載來的api壓縮包內的第一個文件夾解壓到D:\jsapi_lib\下:

技術分享圖片

(圖中箭頭表示拖拽解壓這一動作)

然後,尋找此解壓文件夾下的init.js和dojo.js,修改其中一段[HOSTNAME_AND_PATH_TO_JSAPI]字符串

技術分享圖片

[Note]

我們註意到,這裏的baseUrl寫的是

  • https://[HOSTNAME_AND_PATH_TO_JSAPI]dojo

這就代表,你要告訴整個api,它本身在當前web服務器的哪個URL下能訪問,也就是api中dojo文件夾(在dojo中,又叫dojo模塊)的網絡地址(URL)。

所以這裏的baseUrl即dojo這個文件夾(通俗說法)的URL,至於是什麽,請接著往下看。

其中二者的物理地址(也就是對於我這臺電腦的磁盤位置來說)

  • init.js: D:\jsapi_lib\arcgis_js_v410_api\arcgis_js_api\library\4.10\init.js
  • dojo.js: D:\jsapi_lib\arcgis_js_v410_api\arcgis_js_api\library\4.10\dojo\dojo.js

所以在超文本傳輸協議(http)下的網絡地址

  • init.js:http://localhost:1569/arcgis_js_v410_api/arcgis_js_api/library/4.10/init.js
  • dojo.js:http://localhost:1569/arcgis_js_v410_api/arcgis_js_api/library/4.10/dojo/dojo.js

不難得出,實際上,http://localhost:1569即等價於 D:\jsapi_lib

為什麽http://localhost:1569打開後就是index.html這個測試頁呢?

是因為IIS配置了默認文檔,打開此URL會安默認文檔列表的順序打開對應物理地址下的某一個文檔,這在第二節會說。

所以[HOSTNAME_AND_PATH_TO_JSAPI]即等價於

  • [HOSTNAME_AND_PATH_TO_JSAPI] ≡ localhost:1569/jsapi_lib/arcgis_js_v410_api/arcgis_js_api/library/4.10/

所以,dojo文件夾的網絡路徑即:

  • http://localhost:1569/arcgis_js_v410_api/arcgis_js_api/library/4.10/dojo/

然後重啟一下網站,在地址欄輸入init.js和dojo.js的網絡地址即可測試訪問api是否加載成功。

--測試init.js:

技術分享圖片

成功。

2. IIS網站默認文件

上節提到,在不指定某個文件的具體URL的情況下,打開http://localhost:1569能默認打開其對應物理地址下的index.html文件,那麽

->如果打開http://localhost:1569要訪問的是dojo.js文件,這個需求如何解決?

就好比,訪問https://js.arcgis.com/4.10/,實際訪問的是https://js.arcgis.com/4.10/dojo/dojo.js一樣:

技術分享圖片

其實只需要配置網站的默認文檔即可。

IIS的網站有一個功能叫 默認文檔,在功能視圖下可以找到:

技術分享圖片

然後,點進去配置默認文檔列表,越靠前的文件越被優先訪問,如果列表裏的文檔都沒有,就會出現403或者404界面~

這是我配置的:

技術分享圖片

顯然,這裏的dojo.js文件的路徑是相對路徑,相對於http://localhost:1569。

註意到index.html位於第五位,而dojo.js位於第一位,所以當然先訪問dojo.js

所以http://localhost:1569被訪問時,會自動尋找其物理地址下的arcgis_js_v410_api文件夾下的arcgis_js_api文件夾下的library文件夾下的4.10文件夾下的dojo文件夾下的dojo.js文件(真累啊)

如下圖:

技術分享圖片

=====本文測試環境為Windows 10,Chrome 69,api版本為4.10=====

ArcGIS API for JavaScript 4.x 離線配置之IIS法