Dojo Cache

分析 Dojo 源代碼時遇到 Cache, 以及pendingCacheInsert不是很理解,在Dojo官方網站找到這篇文章。 http://dojotoolkit.org/reference-guide/1.7/dojo/cache.html.

Dojo Cache 是通過getter 和 setter方法 獲取和存儲模塊和指定URL相關的字符串。 這種存取方法已經被dojo/text!插件替代。寫這篇文檔主要作用是爲了給 1.4 版本的用戶。

介紹 

許多時會你想要將原始的HTML 注入到DOM裏。 但大部分時間你只能在Javascript裏, 以字符串的形式輸寫HTML.

dojo.cache 允許你指定一個含有HTML文件的路徑。 之後dojo.cache將調用XMLHttpRequest(XHR) 以同步的方式加載這個文件。 因爲 XHR的方法,只能加載同域下的html頁面。

Dojo 編譯系統會在調用了dojo.cache的地方將HTML內聯爲字符串。 因此爲了更好的性通,最好做Dojo編譯. 編譯也允許模塊的跨域加載。

使用

dojo.cache 是Dojo的核心模塊。 在你的頁面中包含Dojo Cache, 需要先加載Dojo.cache模塊。 當你使用dojo 1.7時,你應該請求 djojo/text.js, 因爲定義在dojo/cache.js 相關的功能已經移動到text.js裏面。

// Dojo 1.7 (AMD)
require("dojo/text", function(){
    // write your code here
});

// Dojo < 1.7
dojo.require("dojo.cache");
dojo.cache 採用以下的參數 
dojo.cache(module, url, configValue);

舉例

// Dojo 1.7 (AMD)
require("dojo/text", function(){
  var text = dojo.cache("my.module", "template.html");
});

// Dojo 1.7
dojo.require("dojo.cache");
var text = dojo.cache("my.module", "template.html");
如果 "my/module/template.html" 包含  "<div>Hello World</div>", 則 text變量將被設置爲這個值。

以下是使用 sanitize: true選項的例子:
// Dojo 1.7 (AMD)
require("dojo/text", function(){
  var text = dojo.cache("my.module", "template.html", {sanitize: true});
});

// Dojo < 1.7
dojo.require("dojo.cache");
var text = dojo.cache("my.module", "template.html");

如果 my/module/template.html 包含  "<html><body><h1>Hello</h1></body></html>",  則 text變量將只會包含"<h1>Hello</h1>". 

在舉一個使用對象的例子,效果跟之前的一樣。 但是使用對像的toString()方法代表文件的路徑。
// Dojo 1.7 (AMD)
require("dojo/text", function(){
  var text = dojo.cache(new dojo._Url("my/module/template.html"), {sanitize: true});
});

dojo.require("dojo.cache");
var text = dojo.cache(new dojo._Url("my/module/template.html"), {sanitize: true});

獲得更詳細的信息,請查看
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章