DOJO 基本對象定義

DOJO 導入  基於AMD  DOJO 配置 + 免費的CDN服務(不想用就下載DOJO使用本身的路徑) 例以下 java


<script>
    dojoConfig= {
        has: {
            "dojo-firebug": true
        },
        parseOnLoad: false,
        foo: "bar",
        async: true
    };
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js"></script>
DOJO 配置介紹

參考資料  http://dojotoolkit.org/documentation/tutorials/1.10/dojo_config/


dojoConfig 的配置文件必定要在dojo.js前面, 雖然暫時還不知道這個配置裏面有哪些東西,不過是基於requirejs的應該和 require.config({...}) 中有類似的部分 下面有待驗證 ajax

配置項: api

  • baseUrl: amd module js 根路徑  同requirejs baseUrl
  • packages: 一個數組 提供了 包名和路徑的映射
  • path: AMD module 名稱和路徑映射 參考requirejs config
  • async: 是否異步加載AMD module 可選值 true, false, legacyAsync(將 loader 永久地置爲 legacy cross-domain mode)
  • map : Allows you to map paths in module identifiers to different paths  例

map: {
            // Instead of having to type "dojo/domReady!", we just want "ready!" instead
            "*": {
                ready: "dojo/domReady"
            }
 }
那麼在引用dojo/domReady!的時候 就能夠直接使用 require(['ready!']) 替代   require(['dojo/domReady!'])
  • parseOnload: 當DOM 和全部的相關依賴都加在完畢的時候調用dojo/parser解析頁面  
  • deps: 一個數組資源  當dojo加載的時候  須要當即加載這些資源
  • callback: The callback to execute once deps have been retrieved
  • waitSeconds: 加載AMD module 超時設定  默認是0 永不超時
  • cacheBust:若是未true 能夠防止 module 緩存 會在URL 上面添加時間戳

 

1. dojo 對象定義  數組

/**
 * 測試使用 類建立
 */
declare("com.zsq.C1",null,{
	id:null,
	name:null,
	getName:function(){
		return this.name;
	},
	constructor:function(){
		// 特殊的方法  在類實例化的時候會執行該方法
	}
});

/**
 * 至關於JAVA的匿名內部類
 */
var c2 = declare(null,{
	id:null,
	name:null,
	getId:function(){
		return this.id;
	}
});

/**
 * 子類
 */
var c3 = declare(c2,{
	code:null,
	getCode:function(){
		return this.code;
	}
});

/**
 * 多繼承
 */
var c4 = declare([c3,c2],{
	type:null,
	getType:function(){
		return this.type;
	}
});

2. 封裝爲符合AMD規範的對象  // 其實也就是一個requirejs定義模塊包裹一下 文件路徑  my/Person.js  緩存

define(["dojo/_base/declare"], function(declare){
  return declare(null, {
    constructor: function(name, age, residence){
      this.name = name;
      this.age = age;
      this.residence = residence;
    }
  });
});

3. 對象的使用  一樣基於requirejs 經過文件路徑查找相應的JS 這個和配置有關 這個這裏不描述 dom

require(["my/Person"], function(Person){
  var folk = new Person("phiggins", 42, "Tennessee");
});

能夠說是隻是使用了Dojo的類定義封裝 異步

4. 靜態對象   參照JAVA 其實所謂的靜態就是一個全局的對象  如:java 的class 定義對象  JS 也同樣  只是使用一個全局的對象來實現static async

define(['dojo/_base/declare'], function(declare){
  var Demo = declare(null, {
    constructor: function(){
      console.debug("this is Demo object #" + Demo.counter++);
    }
  });

  Demo.counter = 0;

  return Demo;
});
相關文章
相關標籤/搜索