說完了出身,即出身自dojo/_base/目錄下的config模塊,那就要好好講講這對象有什麼可以寫的屬性了。 1. has屬性 官方說是用於更好的特征檢測的,具體有什麼用現在還不得知。 例如: 和 其中,dojo-amd-factory-scan子屬性表示AMD工廠掃描; dojo-firebug ...
說完了出身,即出身自dojo/_base/目錄下的config模塊,那就要好好講講這對象有什麼可以寫的屬性了。
1. has屬性
官方說是用於更好的特征檢測的,具體有什麼用現在還不得知。
例如:
<script> dojoConfig = { has: { "dojo-amd-factory-scan": false } }; </script>
和
<script> dojoConfig = { has: { "dojo-firebug": true, "dojo-debug-messages": true } }; </script>
其中,dojo-amd-factory-scan子屬性表示AMD工廠掃描;
dojo-firebug子屬性為true表示在沒有調試面板的瀏覽器中增加一個調試區域,對應dojo/_base/config模塊的isDebug屬性;如果瀏覽器有調試面板,那這個相當於沒設置。
dojo-debug-message子屬性表示在調試面板時控制是否出現警告信息。
has屬性大概是為了調試或者某些SDK環境特性而生的吧。
2. ▲模塊載入器相關屬性:[baseUrl、packages、map、paths、async、parseOnLoad、deps、callback、waitSeconds、cacheBust]
模塊載入器在dojo 1.7支持AMD後進行了重寫,所以為了更方便載入非同步js模塊,模塊載入器就要進行手工配置了。
模塊載入器在後臺工作,我們只需要瞭解dojoConfig中所需要配置的10個屬性,本篇介紹幾個比較重要的,下篇介紹剩餘的。
2.1 baseUrl
基礎目錄。即指明所有的模塊及模塊的相對目錄所在的目錄,繞口是有點繞口。
打個比方,世界上有很多個兒子,但是你兒子不是我兒子,說兒子的時候必須說是誰家的。這個兒子,就是模塊,孫子也是模塊,那麼當我指明瞭是哪個家族(基礎目錄)的時候,這些兒子孫子就能精確的找到是誰了。
看圖:
代碼即為:
baseUrl: '../js/modules/'
2.2 packages
一個包名(包是文件夾)和包的位置(文件夾的位置)鍵值對的對象數組。
舉例如下:
因為在上方指明瞭baseUrl,所以packages的第一個對象(包和路徑鍵值對)中的路徑屬性location可以是空,當然,如果包還要繼續鑽下去,location就要指定一下了。
在packages中聲明的包,其內必須有main.js入口文件。聲明後,例如圖上的myModule包,就可以在全局入口require函數中調用了,無需再寫路徑。
這個包的效果就是把節點名稱是"greeting"的HTML元素的內容換為字元串'HHHHHH'。
ps:我感覺理解還不是很深刻,日後繼續更新此處。
2.3 paths
把packages屬性中的對象進行拆分,packages變為包名的字元串數組(原來的name子屬性),而paths屬性則把原來的location子屬性記錄下來。
見下:
上下兩個dojoConfig是一樣的效果。
2.4 async
這個屬性很簡單,若為true表示對包和模塊進行非同步載入,若為false則全部載入(一般true好,包和模塊用到再取,節約記憶體)
2.5 parseOnLoad
當HTML中有DOM元素用於構造Dijit的UI控制項、或者有模塊要進行交叉引用時,需要用這個屬性配合dojo/parser模塊進行解析整個頁面。
Dojo官方推薦把這個解析關掉,預設就是false的狀態:
parseOnLoad: false
而推薦用dojo/parser模塊的parse()方法進行解析整個頁面。
有關parser解析頁面的例子待模塊載入器的這10個屬性寫完的時候,會給一個例子進行解釋,此處留伏筆。