dojo 加載自定義module的路徑問題

由於最近想學學ArcGIS API for JavaScript ,翻了下ESRI的官網guide,發現其是基於dojo框架的,看了兩頁實在看不懂,因而先來熟悉下dojo框架。人蠢不能怪社會%>_<%,可能只是別人入門時甚至沒當回事的問題,在我這硬是弄了很久才弄明白,就是dojo configuration中的package路徑問題。javascript


以上廢話


假設個人文件目錄結構以下:html

/
    index.html
    dojo-release-1.10.4
        /dojo
            /dojo.js
        /dojox
        /dijit
    mytest
        /myModule.js

當我須要在loader裏load自定義的myModule該怎麼作?java

經實測,這樣寫是能夠的:框架

<script type="text/javascript">
        var dojoConfig={
            baseUrl:"",
            tlmSiblingOfDojo: false,
            packages:[          
                {"name":"dojo","location":'dojo-release-1.10.4/dojo'},
                {"name":"mytest","location":"mytest",main:"myModule"},
            ]
        };
</script>

<script data-dojo-config="async: true" src="dojo-release-1.10.4/dojo/dojo.js"></script>

<script type="text/javascript">
require(
    ['mytest/myModule'],function(myModule){
        //do something with myModule
    })
    </script>

需說明:async

1.dojoConfig 必須set在加載dojo.js以前,不然在控制檯調試時會發現報錯。ide

2.baseUrl是什麼?
默認值是dojo.js所在文件夾的路徑,此例中即dojo-release-1.10.4/
全部的package路徑都是相對於baseUrl,例如:若是我這樣設置baseUrl:"/myfolder/",那麼當我加載模塊「mytest/myModule」,loader將會從下面路徑去加載:ui

/myfolder/mytest/myModule.js

3.tlmSiblingOfDojo是什麼?
默認值是true,此時loader將從dojo.js所在文件夾的同級文件夾中加載模塊調試

4.packages
一個array,包含多個module及每一個module對應的features。code

※ name:the name of the package. 即包含了自定義module js文件的文件夾名,如此例中的「my」。htm

※ location:the location of the package. 能夠是基於baseUrl的相對路徑也能夠是絕對路徑。 採起相對路徑時,當我require「mytest/myModule」, loader將從形以下面的路徑加載module: baseUrl+mytest的location+」/myModule.js ※ main:默認值是main.js。用於require package自己時告訴loader該去加載什麼文件。例如,當我require 「mytest」而不是「mytest/myModule」時,loader依然知道去load myModule.js。 另外一種狀況,當直接require一個沒有在packages裏define過的package時,如「anotherTest」時,loader將會嘗試去加載下面的文件: baseUrl+anotherTest.js

相關文章
相關標籤/搜索