4.12
主題:API Modernization
官方進行了幾次API更新,使得API能在現代瀏覽器中發揮更好的作用,
-
源代碼的93%使用 TypeScript 撰寫
-
esri/request 現在使用原生的 FetchAPI 實作;如果不支持 FetchAPI,則使用 fetch polyfill 代替
-
大多數異步方法現在支持一個 AbortSignal 類的可選引數:
signal,具體詳見:Asynchronous Method Cancellation -
使用一個
has屬性來標記是否使用原生的 Promise,當前,異步函式回傳一個 Dojo 的 Promise,如果使用這個標記,那么將回傳原生 Promise 物件,var dojoConfig = { has: { "esri-native-promise": true } }
4.13
主題:API Modernization
- 96%的源代碼使用 TypeScript 撰寫
- 官方打算在下一版本中默認使用原生的 Promise,而且在 4.15 版本中完全移除 Dojo Promise. 當前版本想默認使用官方的 Promise,參考 4.12 中的 has 屬性用法,
官方做了一些準備作業,以消除 Dojo 模塊化機制,當前版本中,模塊化是使用 dojo/_base/declare 實作的,官方正在遷移到 ES模塊(或者說TS模塊),
遷移的第一步,是停止使用多重繼承,并使用混合模式,見幫助檔案:實作Accessor
4.14
官方打算在 4.15 版本默認使用原生 Promise(好像鴿了上一版本的計劃),在 4.16 則完全移除 Dojo Promise 的依賴,
4.15
兩項改動,
esriConfig 可作為全域變數
現在,可以使用全域的 esriConfig 物件來設定 esri/config 屬性,
<script>
var esriConfig = {
portalUrl: "https://myHostName.esri.com/arcgis"
};
</script>
回傳原生 Promise
此版本默認使用原生的 Promise 物件,下一版本移除對 Dojo Promise 的支持,這意味著:
- 不再使用
otherwise()方法,用catch()代替 - 不再使用
cancel()方法,使用 AbortController.abort() 代替 - 不再使用
always()方法,使用下列then()鏈代替:
.catch(function(error){
/* do something with the error */
}).then(function() {
/* this function is always executed */
});
- 沒有
isFulfilled()/isResolved()/isReject()方法了
注意,原生 Promise 對 then/catch 使用的是異步,而 Dojo Promise 使用的是同步,
dojo 宣告
下一版本中,dojo的 declare 將完全移除,
這意味著,多繼承的支持,4.15是最后一版,當前版本會報一個警告資訊,
4.16
在 2020 年 Esri 開發者峰會上,官方宣布了要對 JS API 進行改造,以便與現代前端框架、開發工具集成,當前增強的功能有:
- 原生 Promise 是默認使用的,
has屬性中的esri-native-promise屬性已經不再支持(見4.12) - 本地化已改善,主要是使用
intl.setLocale()方法,有關這個主題的更多資訊,見:Localization - 現在已經使用原生的模塊化來代替
dojo/_base/declare - 多繼承不再支持
- 當前舊的類語法仍然支持,但是很快就被丟棄了,建議:
- 移除
amd-dependency注釋 - 對
tsconfig.json添加importHelpers: ture - 移除對 Dojo
declare的使用
- 移除
下面是一些語法對比,
之前的ts語法
/// <amd-dependency path="esri/core/tsSupport/declareExtendsHelper" name="__extends" />
/// <amd-dependency path="esri/core/tsSupport/decorateHelper" name="__decorate" />
import Accessor = require("esri/core/Accessor");
import { subclass, declared } from "esri/core/accessorSupport/decorators";
@subclass("esri.guide.Color")
class Color extends declared(Accessor) {
}
新的ts語法
import Accessor = require("esri/core/Accessor");
import { subclass } from "esri/core/accessorSupport/decorators";
@subclass("esri.guide.Color")
class Color extends Accessor {
}
4.17
在 4.16 中已經不推薦使用 IE11 和 舊 edge 瀏覽器了,4.17是支持他們的最后一版,
ES模塊 - 開發中
現在這個行程還在進行中,還不能投入生產,官方打算在 4.18 發布一個beta的生產版本,在2021年扯訓剪面,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/181601.html
標籤:GIS
上一篇:ERP開源系統開放了
