【回顧與本篇預覽】css
上篇簡單介紹了JsAPI中的數據與視圖,並告訴你們這兩部分有什麼用、如何有機鏈接在一塊兒。html
這一篇快速介紹一下前端代碼的骨架。固然,假定你已經熟悉HTML五、CSS3和JavaScript(最好了解一下ES6)前端
轉載請註明出處,博客園/CSDN/bilibili:秋意正寒數組
爲了方便演示,我將js代碼和css代碼全都寫在一個html文件裏,固然,更合適的作法是三者分離,不過要注意引用的順序哦。框架
使用上篇三維視圖的代碼↓dom
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"> <title>Intro to SceneView - Create a 3D map - 4.7</title> <style> html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } </style> <link rel="stylesheet" href="https://js.arcgis.com/4.7/esri/css/main.css"> <script src="https://js.arcgis.com/4.7/"></script> <script> require([ "esri/Map", "esri/views/SceneView", "dojo/domReady!" ], function(Map, SceneView) { var map = new Map({ basemap: "streets", ground: "world-elevation" }); var view = new SceneView({ container: "viewDiv", map: map, scale: 50000000, center: [-101.17, 21.78] }); }); </script> </head> <body> <div id="viewDiv"></div> </body> </html>
先把標籤都摺疊,過一下HTML的組成。異步
什麼?你說你不喜歡看代碼?那怎麼行,得培養梳理代碼的能力。我在這繼續用圖解法,剖析頁面結構:ide
其中,第二個script標籤是咱們本身的代碼。模塊化
link標籤用於引用官方預設css,沒有它頁面不能工做。
第一個script標籤用於引用JsAPI的核心文件。
注意到,body是整個頁面的組織,在這裏只有一個id爲viewDiv的div,用於承載視圖。
在link標籤上還有這麼一個style樣式標籤,是對頁面樣式的預設,其實很簡單,僅僅是對html的一些元素作無邊框處理而已。
把js代碼摺疊後,是這樣的:
收縮起的代碼上篇已經解釋過了,map是數據,view是視圖,view經過SceneView類的構造函數中的傳參中的map屬性進行連通,這裏就再也不復述。
結構圖是這樣的:
require()是JsAPI的基礎——Dojo框架規定的一個全局入口,與初學C語言時接觸的main()函數相似。
第一個參數,是一個字符串數組。它規定了接下來的代碼須要用哪些類(官方說法叫模塊),用字符串描述了所需類(模塊)所在的包路徑。與C#中using 命名空間;相似。
如"esri/views/SceneView"就表明引用esri這個包下的views這個包裏的SceneView這個類。不妨在瀏覽器調試窗口中看看資源:
由於第一個script標籤引用的地址是「https://js.arcgis.com/4.7/」,因此esri這個包就是基於此目錄下的相對路徑了。
同理,"esri/Map"也是這樣引用的一個類。
至於"dojo/domReady!"這個,則是dojo框架的一個特殊類(模塊),因此會在"domReady"後加一個歎號,這是dojo的一個插件,表明DOM加載完成後再執行後面的代碼。
回調函數的形參列表除了"dojo/domReady!"這個特殊的以外,均要與類引用列表中的類順序上一一對應,可是名字能夠自由,通常與官方的類名一致。
至於本例中回調函數的內容,上篇講過啦。
既能夠用Lambda表達式,也能夠在外部定義函數,傳函數名進require()中。
對了,上篇沒講如何將SceneView與HTML元素綁定的,其實只是SceneView構造函數中的一個屬性而已:
container屬性利用id選擇器(不用寫#)選擇div。
scale是比例尺,center是中央經緯度。
因爲AMD規範的要求,require()就是這麼一個異步操做。你要告訴後臺,你要用哪些功能(參數1,類引用列表),你要拿這些功能作什麼(參數2,回調函數)。
回調函數就表明,等相關的資源準備好後,再根據此回調函數作事情。回調函數中仍存在不少異步操做,這就是ES6中Promise的用法了,when()異步鏈使得異步操做寫起來更方便,若是對異步和回調有什麼不懂的,請到網上查資料學習,在此不展開了——可是,異步操做仍然是JsAPI中極爲重要的一個技術。
總結就是,require()這個惟一入口,帶了一個引用列表(字符串數組),帶了一個回調函數。
回調函數裏寫你須要作的事情,固然,回調的形參要與引用列表一一對應。
如下是骨架圖。
本篇到此結束,有了這個骨架,後面只是在script標籤里加本身的內容而已。
待工程茁壯到必定規模的時候,dojo的模塊化技術才能用得上,那並非本入門教程的內容了。
背景也交代完了,下篇進入約定好的幾個部分的API的講解。