ArcGIS API for JavaScript是基於dojo開發的一套API,在實際生產中,我們需要再根據自己的需求實現自定義的功能,最后抽象成接口給前端調用。
我們使用dojo的declare來實現。
declare有很多種寫法,如果你要定義一個自己的模塊時,可使用define。define() 函數提供了返回值並延遲加載依賴項的可能性,所以此命令適用於定義模塊。創建模塊時,將返回一個對象。
這也意味着 require() 函數的主要用途是導入模塊,而該 define() 函數用於定義您自己的自定義模塊及其所需的依賴項。
require的包是"dojo/_base/declare" 依賴項是declare
范本:
define([
"dojo/_base/declare",
"esri/layers/GraphicsLayer"
], function (
declare, GraphicsLayer
) {
return declare([GraphicsLayer], {
constructor: function(options) {
});
});
或
1 require([ 2 "dojo/_base/declare" 3 ], 4 function ( 5 declare, 6 7 ) { 8 return declare( 9 /*className: 是要要申明的類的類名,也就是創建的構造函數的名稱。*/ 10 "className", 11 /*superclass:所要繼承的父類,此參數可為 null,表示沒有父類,或者為一個父類,或為多個父類的數組,*/ 12 superclass, 13 /*你自己定義的一些放大什么的*/ 14 ( props ) 15 /*props:散列體,由名、值(key, value)對組成,這個散列體將被添加到定義的類的原型對象中,也即為定義的類被其所有實例共享的屬性及方法。
16 其中,key :constructor 為保留字,此函數用來初始化新對象。*/ 17 ); 18 } 19 );
其中 props的寫法如下:
1 ShowRemoteMap: function (map_,_RemoteUrl,_FeatureLayerURL) { 2 /*你自己定義的一些方法邏輯*/ 3 }, 4 5 HideRemoteMap:function(map_,_LFQPUrl,_FeatureLayerURL){ 6 /*你自己定義的一些方法邏輯*/ 7 }
dojo的declare解析
https://www.ibm.com/developerworks/cn/web/1203_xiejj_dojodeclare/
這次學習寫接口的過程中,認識到JavaScript中的this指向的重要性,附上學習地址
https://blog.csdn.net/qq_33988065/article/details/68957806
概括下來大概是:(1)方法調用中誰調用 ,this 就指向誰
(2)在構造函數或者構造函數原型對象中 this 指向構造函數的實例
目前還有很多需要摸索的地方,在以后的工作中,慢慢記錄。
