使用Dojo開發了頁面的全部互動代碼,寫完之後發現性能問題挺大。Dojo本身的代碼規模倒不大,最大的問題是dojo的module機制把代碼分散在大量的小碎javaScript檔案裡,一個頁面裝載的時候就壓幾十個請求到server上,頁面裝載時間非常慢。
本來準備換成jQuery的,昨天晚上試了一下,使用Dojo需要20多秒來裝載的頁面,換成jQuery以後1秒就成了。但是換架構這事還是一個比較大的架構考量,意味着對我的所有jsp頁面要做重構。
早晨和李蛟一同上班,談到了這個問題,他介紹了Dojo build系統給我,回來趕快試了一下,發現正好是我所需要的。列印了這篇文檔下來:
http://dojotoolkit.org/documentation/tutorials/1.7/build/
首先要說一下Dojo 1.7的新的module模型。假定如下一個簡單的HTML項目結構:
/
index.html
js/
lib/
dojo/
dijit/
dojox/
my/
util/
我們在HTML裡先把dojo.js裝載進來:
<script data-dojo-config="async: true" src="js/lib/dojo/dojo.js"></script>
下一步通過dojoConfig告訴幾個dojo module的位置:
var dojoConfig = {
baseUrl: "/js/",
tlmSiblingOfDojo: false,
packages: [
{ name: "dojo", location: "lib/dojo" },
{ name: "dijit", location: "lib/dijit" },
{ name: "dojox", location: "lib/dojox" },
{ name: "my", location: "my", main: "app" }
]
};